以下程序运行后输入:3 abcde<回车> 则输出结果是【 】。 include<string.h>
以下程序运行后输入: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];iht 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的实参到形参是按地址传递,故形参的改变会影响实参。根据题目可知在main函数中,n=3、s[0='a'、s[1='b'、s[2='c'、s[3='d'、s[4='e',数组元素s[5~s[49全部为'\0',故z=strlen(s)=5。第1次调用函数move时,形参str='abcd'、n=5,执行完函数move后str[4=str[3='d'、str[3=str[2='c'、str[2=str[1='b'、str[1=str[0='a'、str[0=str[4='e'。即s[0='e'、s[1='a's[2、s[2='b'、s[3='c'、s[4='d'。第2次调用函数move时,形参str='eabcd、n=5,执行完函数move后str[4=str[3='c'、str[3=str[2='b'、str[2=str[1='a'、str[1=str[0='e'、str[0=str[4='d'。即s[0='d'、s[1c'e'、s[2='a'、s[3='b'、s[4='c'。第3次调用函数move时,形参str='deabc'、n=5,执行完函数move后str[4=str[3='b'、str[3=str[2='a'、str[2=str[1='e'、str[1=str[0='d'、str[0=str[4='c'。即s[0='c'、s[1='d'、s[2='e'、s[3='a'、s[4='b'。所以printf函数的输出结果为:cdeab。
相似问题
已有定义:double*p; 请写出完整的语句 利用malloc函数使p指向一个双精度型的动态存储单
已有定义:double*p;,请写出完整的语句,利用malloc函数使p指向一个双精度型的动态存储单元【 】。请帮忙给出正确答案和分析,谢谢!
下列可用于C语言用户标识符的一组是A.void define WORDC.For -abc IF C
下列可用于C语言用户标识符的一组是A.void,define,WORDC.For,-abc,IF CaseD.2a,DO,sizeof请帮忙给出正确答案和分析,谢谢!
有如下图所示的双链表结构 请根据图示完成结构体的定义: struct aa { int data;
有如下图所示的双链表结构,请根据图示完成结构体的定义: struct aa { int data; 【 】 } node;请帮忙给出正确答案和分析,谢谢!
以下程序的运行结果是______。 include <stdio.h> main( ) { FILE
以下程序的运行结果是______。 include <stdio h> main( ) { FILE *fp;int a[10]={1,2,3,0,0},i; fp=fopen("d2 dat","wb"); fwtite(a,sizeof
下面程序有两个printf语句 如果第一个printf语句输出的是194 则第二个printf语句的
下面程序有两个printf语句,如果第一个printf语句输出的是194,则第二个printf语句的输出结果是【 】 main() { int a[10]={1,2,3,4,5,6,7,8,9,0},*p
