问题 填空题

下列给定程序中,函数fun()的功能是:依次取出字符串中所有的数字字符,形成新的字符串,并取代原字符串。 请改正函数fun()中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include <stdio.h> #include <conio.h> void fun(char *s) {int i,j; for(i=0,j=0; s[i]!= ’\0’; i++) if(s[i]>= ’0’&&s[i]<= ’9’) /*************found**************/s[j]=s[i]; /*************found**************/ s[j]="\0"; } main() {char item[80]; clrscr(); printf("\nEnter a string: ");gets(item); printf("\n\nThe string is:\%s\n", item); fun(item); printf("\n\nThe string of changing is : \%s\n",item); }

答案

参考答案:(1)错误;s[j]=s[i]; 正确:s[j++]=s[i];

解析:(2) 错误:s[j]="\0"; 正确:s[j]=’\0’; 有循环条件if(s[i]>=’0’&&s[i]<=’9’)以及题目要求“依次取出字符串中所有的数字字符”可知,s[j]=s[i];表述错误。s[j]="\0";中是一个常识性语法错误,学习者只要在平时训练的时候注意一下就可以了。

选择题
单项选择题