C语言问题,详细解答一下,谢谢~~~

以下程序运行后输入:3,abcde<回车>,则输出结果是

#include
<string.h>
move(char *str,int n)
{ char temp; int i;
temp=str[n-1];
for(i=n-1; i>0;i--)
str[i]=str[i-1];
str[0]=temp;
}
main()
{ char s[50]; int n, i, z;
scanf("%d,%s",&n, s);
z=strlen(s);
for(i=1; i<=n; i++)
move(s,z);
printf("%s\n",s);
}

#include <stdio.h>

#include <string.h>

void move(char *str, int n)

    char  temp;   

    int  i;

    temp=str[n-1];

    for(i=n-1; i>0;i--) 

    str[i]=str[i-1];

    str[0]=temp;

int main()

    char   s[50];   

    int  n, i, z;

    scanf("%d %s", &n, s);

    z = strlen(s);

    //for(i=1; i<=n;  i++) 

    move(s,z);

    printf("%s\n",s);

    return 0;

}

楼主的意思 是移动字符串么?

注意scanf(“ ”); 引号中的书写形式,不能有“,”

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-08-22
输出结 果:cdeab
分析:只要你理解了move函数的作用你就能明白整个过程:
第一次循环调用move(char *str,int n)这一函数给它的参数是 s与 s的长度(就是你输入的abcde的长度5),第一步执行temp=str[5-1]=str[4],而str[4]的值为'e',所以temp的值为'e',接着执行for(i=n-1; i>0;i--) str[i]=str[i-1]; 这个循环是把从str[1]开始的所有数组的元素都后移一位,
即str[2]成了str[1],str[3]成了str[2]等等,循环执行完后执行str[0]=temp;,也就是把e赋值给了
str[0]。所以abcde被move函数处理一次后就成了 eabcd,如果再被处理一次后就被变成deabc等等
也就是说move函数每调用一次就把相应的字符串循环右移一位本回答被提问者和网友采纳
第2个回答  推荐于2017-10-27
输出结果是
cdeab
函数move(char *str,int n)的作用是把长度为n字符串的尾字符,前移到串首。
在main()函数中连续调用了n次,即把字符串末尾的n个字符前移到串首。本回答被网友采纳
相似回答