下列给定程序中,函数proc()的功能是:依次取出字符串中所有的字母字符,形成新的字符串,并取代原字符串。
例如,若输入的字符串是:ab232bd34bkw,则输出结果是:abbdbkw。
请修改程序中的错误,使它能得到正确结果。
注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include<stdlib.h>
#include<stdio.h>
#include<conio.h>
void proc(char * str)
int i, j;
for(i=0, j=0; str[i]!=’\0’; i++)
//************found*************
if((str[i]>=’A’ &&str[i]<=’z’)&&(str[i]>=’a’&&str[i]<=’z’))
str[j++]=str[i];
//************found*************
str[j]="\0";
void main()
char item[80];
system("CLS");
printf("\nEnter a string: ");
gets(item);
printf("\n\nThe string is:%s\n", item);
proc(item);
printf("\n\nThe string of changing is: %sin", item);
参考答案:
解析: 判断一个字符是字母字符,只要这个字符符合是大写字母或小写字母其中一种情况即可。因此if((s[i]>=’A’&&s[i]<=’Z’)&&(s[i]>=’a’&&s[i]<=’z’))应改为if((s[i]>=’A’&&s[i]<=’Z’)||(s[i]>=’a’&&s[i]<=’z’));在程序的最后要为新的字符串加上结束符,在C语言中,字符串的结束符为’\0’。因此“s[j]="\0";”应改为“s[j]=’\0’;”。