给定程序MODI1.C中函数 fun 的功能是:统计字符串中各元音字母(即:A、E、I、O、U)的个数。注意:字母不分大、小写。 例如:若输入:THIs is a boot,则输出应该是:1、0、2、2、0。 请改正程序中的错误,使它能得出正确的结果。 #include <stdio.h> #include <stdlib.h> void fun (char *s, int num[5]) { int k, i=5; for (k = 0; k<i; k++) /*************代码开始**********/ /**********found**********/ num[i]=0; for (; *s; s++) { i = -1; /**********found**********/ switch (s) /***********代码结束************/ { case 'a': case 'A': {i=0; break;} case 'e': case 'E': {i=1; break;} case 'i': case 'I': {i=2; break;} case 'o': case 'O': {i=3; break;} case 'u': case 'U': {i=4; break;} } if (i >= 0) num[i]++; } } void main() { char s1[81]; int num1[5], i; printf("\nPlease enter a string: "); gets(s1); fun (s1, num1); for (i=0; i < 5; i++) printf ("%d ",num1[i]); printf ("\n"); system("pause"); }
时间: 2023-07-18 15:41:14 浏览: 154
修改后的程序如下:
```c
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
void fun(char *s, int num[5]) {
int i;
for (i = 0; i < 5; i++) {
num[i] = 0;
}
for (; *s; s++) {
switch (toupper(*s)) { // 将字符转换为大写字母,方便比较
case 'A':
num[0]++;
break;
case 'E':
num[1]++;
break;
case 'I':
num[2]++;
break;
case 'O':
num[3]++;
break;
case 'U':
num[4]++;
break;
}
}
}
int main() {
char s1[81];
int num1[5], i;
printf("\nPlease enter a string: ");
gets(s1);
fun(s1, num1);
for (i = 0; i < 5; i++) {
printf("%d ", num1[i]);
}
printf("\n");
system("pause");
return 0;
}
```
修改说明:
1. 在原代码中,循环变量 `i` 的初始值为5,应该改为0,因为需要从0开始遍历 `num` 数组。
2. 在原代码中,第一个循环的终止条件应该是 `i<5`,而不是 `i` 小于某个变量 `k` 的值,因为 `k` 的值未定义。
3. 在原代码中,第二个循环的循环变量 `i` 的初始值为5,应该改为-1,因为此时 `i` 的值表示元音字母的下标,范围为0-4。
4. 在原代码中,第二个循环中的 `switch` 语句中,应该使用 `toupper(*s)` 将字符转换为大写字母,以便和元音字母比较。
5. 在第二个循环中,应该将元音字母的计数值加1,而不是将下标 `i` 的值加1。
修改后的程序能够正确地统计字符串中各元音字母的个数。
阅读全文
相关推荐


















