问答题 给定程序MODI1.C中函数fun的功能是:删除P所指字符串中的所有空白字符(包括制表符、回车符及换行符)。
输入字符串时用"#"结束输入。
请改正程序中的错误,使它能输出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
#include<string.h>
#include<stdio.h>
#include<ctype.h>
fun(char*P)
{int i,t;char c[80];
/**********found**********/
For(i=0,t=0;p[i];i++)
if(!isspace(*(p+i)))c[t++]=p[i];
/**********found**********/
c[t]="/0";
strcpy(p,c);
}
main()
{char c,s[80];
int i=0;
printf("Input a string:");
c=getchar();
while(c!="#")
{s[i]=c;i++;c=getchar();)
s[i]="/0";
fun(s);
puts(s);
}
【正确答案】
【答案解析】(1)for(i=0,t=0;p[i];i++)
(2)c[t]="/0"; [解析] 本题中函数的功能是删除字符串s中的所有空白字符。首先在字符串s中,确定空白字符,然后对其执行删除操作。
(1)第一个标识下“For(i=0,t=0;p[i];i++)”语句是for循环语句,而For不是C语言的关键字,所示“For(i=0,t=0;p[i];i++)”应改为“for(i=0,t=0;p[i];i++)”。
(2)第二个标识下的“c[t]="/0";”语句是在新生成的串后面加尾符标志,在C语言中规定使用单引号把一个字符括起来作为字符常量,所以“c[t]="/0";”应改为“c[t]="/0";”。
[考点] 数组操作;循环结构。