问题 填空题

以下程序运行后,若输入:3,abcde <回车>,则输出结果是 【11】
#include <stdio.h>
#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);

答案

参考答案:cdeab

解析: 程序中的move函数的作用是保存输入数组中的最后一个元素,然后从最后一个数组元素开始,依次向后移动一个位置,再把保存的最后一个元素置于首位,循环次数由n控制。输入3,abcde<回车>后主函数开始执行,其中n=3,s[50]={"abcde"},z=5。
第一次循环,i=1时,调用move(s,5)函数,temp=str[4]语句把数组中最后一个元素’e’保存在temp中,然后i从4开始循环,将str[3](字符’d’)赋给str[4],str[2](字符’c’)赋给str[3],……,循环结束时str所指字符串为"aabcd",再将保存在temp中的’e’置于首位,字符串变为" eabcd";i=2时,调用move函数,字符串为"deabc";i=3时,调用move函数,字符串为"cdeab"。最后输出结果为"cdeab"。

单项选择题
单项选择题