改错题
下列给定程序中,函数fun的功能是:判断ch中的字符是否与str所指串中的某个字符相同,若相同,什么也不做;若不同,则将其插在串的最后。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
试题程序:
#include <stdio.h>
#include <string.h>
/********found********/
void fun(char str,char ch)
{while(*str &&*str!=ch)str++;
/********found********/
if(*str==ch)
{str[0]=ch;
/********found********/
str[1]='0';
}
}
main()
{char s[81],c;
printf('\nPlease enter a string:\,n');gets(s);
printf('\n Please enter the character to search:');
c=getchar();
fun(s,c);
printf('\nThe result is %s\n',s);
}
【正确答案】void fun(char *str, char ch) if (*str != ch) str[1] =0;
【答案解析】(1)第1个形参应该是字符串类型,所以应改为void fun(char*str, char ch)。 (2)应该是判断不相等,所以应改为if(*str!=ch)。 (3)赋值字符串结束符错误,所以应改为str[1]=0;。