填空题 给定程序MODI1.C中函数fun的功能是:将s所指字符串的正序和反序进行连接,形成一个新串放在t所指的数组中。
例如,当s所指字符串为"ABCD"时,则t所指字符串中的内容应为:ABCDDCBA。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
文件MODI1.C内容如下:
#include<stdio.h>
#include<string.h>
/**********found**********/
void fun(char s,char t)

int i,d;
d=strlen(s);
for(i=0;i<d;i++)t[i]=s[i];
for(i=0;i<d;i++)t[d+i]=s[d-1-i];
/**********found**********/
t[2*d-1]='/0';

void main( )
char s[100],t[100];
printf("/nPlease enter string S: ");
scanf("%s",s);
fun(s,t);
printf("/nThe result is: %s/n",t);


  • 1、
【正确答案】 1、{{*HTML*}}第1处:将“void fun(char s,char t)”改为“void fun(chat *s,char *t)”。
第2处:将“t[2*d-1]='/0';”改为“t[2*d]='/0';”。    
【答案解析】[解析] 第1处错误是函数定义出错。考生可以在3个方面分析错误的位置:第一,函数类型,可以看到程序中函数fun没有返回值,所以函数类型定义成void没有错误;第二,函数名,从主函数中对函数的调用语句可以看到,函数名称为fun,所以函数名没有错误;第三,形参,从实参的类型和个数看,形参的个数正确,但是类型有误,两个实参均是字符数组,所以对应的形参应该是字符数组或字符型的指针,因此第1处错误最简单的修改方法就是在形参s和t的前面加“*”号,将其定义为字符型指针。第2处错误是数组下标出错,当字符串正序反序连接后,字符串的长度为2*d,而数组下标是从0开始的,所以'/0'应该赋值给t[2*d]而不是t[2*d-1]。