填空题 请补充函数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(;{{U}} 【1】 {{/U}};i++) { t=*(s+i); {{U}}【2】 {{/U}}; {{U}}【3】 {{/U}}; } } 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、
【正确答案】 1、[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。