请补充函数fun(char *s),该函数的功能是把字符串中的内容逆置。 例如:字符串中原有的字符串为abcde,则调用该函数后,串中的内容变为edcba。 注意;部分源程序给出如下。 请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的横线上填入所编写的若干表达式或语句。 试题程序: $include<string.h> #include<conio.h> #include<stdio.h> #define N 81 void fun(char*s) { int i=0,t,n=strlen(s); for(; 【1】 ;i++) {t=*(s+i);【2】 ;【3】 ; } } main() { char a[N]; clrscr(); printf("Enter a string:"); gets(a); printf("The original string is:"); puts(a); fun(a); printf("\n"); printf("The string after modified:"); puts(a); }
参考答案:[1] i<n/2或s+i<s+n-1-i或i<n-1-i [2]*(s+i)=*(s+n-1-i) [3]*(s+n-1-i)=t
解析: 填空1:将字符串的内容逆置,实际上就是将第一个字符和最后一个字符交换,再将第二个字符与倒数第二个字符交换,依此类推,直到中间的字符为止。所以,长度为n的字符串需要交换的次数为n/2。还可以这样理解,交换时始终保持顺数的字符在倒数的字符前面。填空2:顺数第i个字符为*(s+i),倒数第i个字符为*(s+n-1-i)。填空3:掌握利用第三个变量进行变量交换的方法。本题中,第三个变量为t。