填空题 请补充函数fun(),该函数的功能是:把从主函数中输入的字符串str2倒置后接在字符串str1后面。 例如:str1=“How do”,str2=“?od uoy”,结果输出:“How do you do?”。 注意:部分源程序给出如下。 请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的横线上填入所编写的若干表达式或语句。 试题程序: #include<stdio.h> #include<conio.h> #define N 40 void 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={{U}} 【1】 {{/U}}; for(;k=j/2;k++,j--) { ch=*(p2+k); *(p2+k)=*(p2+j); *(p2+j)=ch; } {{U}}【2】 {{/U}}; for(;{{U}} 【3】 {{/U}};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、
【正确答案】 1、【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循环要继续执行。