(2)以下程序中函数fun()的功能是:依次取出字符串中所有的数字字符,形成新的字符串,并取代原字符串。例如:输入ewjfio23450ejgvb0erio3mg0wgjn 23,则输出2345003023。请改正程序中的错误,使程序能得到正确的结果。包含错误的源程序如下: #include <stdio.h> void fun (char *s) ; { int i,j; for (i=0,j=0;s[i]!='\0';i++) { if (s[i]>=0 && s[i]<=9) s[j]=s[i]; } s[j]=”\0”; } main() {char item[80]; 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); }
时间: 2023-07-15 22:15:58 浏览: 158
修改后的程序如下:
```c
#include <stdio.h>
void fun(char *s) {
int i, j;
char temp[80]; // 新字符串
for (i = 0, j = 0; s[i] != '\0'; i++) {
if (s[i] >= '0' && s[i] <= '9') { // 判断是否为数字字符
temp[j] = s[i]; // 将数字字符存入新字符串
j++;
}
}
temp[j] = '\0'; // 在新字符串末尾加上'\0'
for (i = 0; i <= j; i++) {
s[i] = temp[i]; // 将新字符串复制到原字符串
}
}
int main() {
char item[80];
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);
return 0;
}
```
程序的思路是:先定义一个新字符串temp,然后遍历原字符串,如果当前字符是数字字符,就将它存入新字符串中。最后将新字符串复制到原字符串中,从而实现替换。
在原程序中有两个错误:1. 函数fun的定义多了一个分号;2. 判断字符是否为数字字符时,应该使用字符常量'0'和'9',而不是数字常量0和9。
阅读全文