问题 问答题

填空题请补充函数fun(),该函数的功能是:把从主函数中输入的字符串str2倒置后接在字符串str1后面。例如:str1=“How do”,str2=“od uoy”,结果输出:“How do you do”。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的横线上填入所编写的若干表达式或语句。试题程序:#include #include #define N 40void fun(char *str1,char *str2){ int i=0,j=0,k=0,n; char ch; char *p1=str1; char *p2=str2; while(*(p1+i)) i++; while(*(p2+j)) j++; n=【1】; for(;k<=j/2;k++,j--) { ch=*(p2+k); *(p2+k)=*(p2+j); *(p2+j)=ch; } 【2】; for(;【3】;i++) *(p1+i)=*p2++; *(p1+i)=’’\0’’;}main(){ char str1[N],str2[N]; int m,n,k; clrscr(); printf("***Input the string str1 & str2 ***\n"); printf("\nstr1:"); gets(str1); printf("\nstr2:"); gets(str2); printf("*** The string str1 & str2 ***\n"); puts(str1); puts(str2); fun(str1,str2); printf("*** The new string ***\n"); puts(str1);}

答案

参考答案:【1】j-- 【2】*(p2+n)=’\0’ 【3】*p2

解析:填空1:while循环执行后,变量j中保存了字符串str2的长度,而后面的for循环是将字符串str2倒置,即将第一个字符与最后一个字符对调,第二个字符与倒数第二个字符对调,如此循环直到中间的字符。第一次执行循环时,*(p2+j)指向最后一个字符,所以j要减1,并将未减1之前的数赋给n。填空2:将字符串str2倒置后,在字符串的最后要加上结束标记符’\0’。填空3:当*p2所指的字符为’\0’时,说明已经将倒置后的字符串str2都接在字符串str1后面了,for循环应该结束。当*p2所指的为其他字符时,for循环要继续执行。

问答题 论述题
判断题