下列给定的程序中,函数fun()的功能是:判断字符ch是否与str所指字符串中的某个字符相同;若相同,则什么也不做,若相同,则将其插在申的最后。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include <conio.h>
#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;
clrscr();
printf("\nPlease enter a strzng : ");
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) 正确:void fun(char *str,char ch)
(B) 错误:if(*str==ch) 正确:if(*str==’\0’)
(C) 错误;str[A]=’0’; 正确:str[A]=’\0’;
解析: 该题的重点就是在while的循环嵌套语句中,由题干信息“若相同,则什么也不做”很容易就能看出if(*str==ch)后面的执行语句是错误的。另外,void指针具有一般性,它们可以指向任何类型的数据。但目前绝大多数C编译所提供的这类函数都返回char指针,再由题目中的定义得出void fun(char str,char ch)的错误信息;str[1]=’0’;是一个简单的语法错误。