请补充函数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= 【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循环要继续执行。