以下程序运行后输入:3 abcde<回车> 则输出结果是【 】。 include<string.h>

大学专科 已帮助: 时间:2023-08-16 11:07:16

以下程序运行后输入: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); }
请帮忙给出正确答案和分析,谢谢!

难度:⭐⭐⭐

题库:大学专科,电子信息,计算机类

标签:正确答案,请帮忙,程序

参考解答

用户头像

416***304

2023-08-16 11:07:16

正确答案: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指向一个双精度型的动态存储单

下一篇 设有下列宏定义:define A 2 define B A+3 则执行赋值语句:t=B*2;t为in

相似问题