问答题
给定程序MODI1.C中函数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);
}
【正确答案】
【答案解析】(1)void fun(char *str, char ch)
(2)if(*str !=ch)
(3)str[1]="/0";
答案考生文件夹 [解析] 函数功能首先是查找子串再判断。
(1)第一个标识下,“void fun(char str, char ch)”根据主函数中的fun函数的调用“fun(s, c)”,知道s为数组名,所以传的应该是数组地址,所以应改为“void fun(char *str, char ch)”。
(2)while循环中对ch与str进行匹配检查,第二个标识下,是当不同时执行连接操作,那么判断*str与ch是否不同的表达式应该是“if(*str!=ch)”。
(3)第三个标识下,连接后的新串要添加结尾符,所以正确的表达是将“str[1]="0"; ”改为“str[1]="/0"; ”。
[考点] 字符数组和字符串、if语句及其构成的选择。