下面函数fun的功能是统计字符串s中各元音字母(即A、E、I、O、U)的个数(注意:字母不分大、小写)。判断下面程序的正误,如果有错误请改正过来。 void fun (char s[], int num[5]) { int k,i=5; for (k=0; k<i; k++) num[i]=0; for (k=0; s[k]; k++) { i=-1; switch (s[k]) { case 'a': case 'A': i=0; case 'e': case 'E': i=1; case 'i': case 'I': i=2; case 'o': case 'O': i=3; case 'u': case 'U': i=4; } if (i>=0) num[i]++; } }
时间: 2024-01-31 22:03:57 浏览: 67
在函数fun中,存在错误。在 switch 结构中,每个 case 分支没有使用 break 语句来跳出 switch 结构,而是继续执行下一个 case 分支,这会导致程序出现逻辑错误。因此,需要在每个 case 分支的末尾添加 break 语句,使程序能够正确执行。修改后的函数fun如下:
```c
void fun(char s[], int num[5])
{
int k, i;
for (i = 0; i < 5; i++) {
num[i] = 0;
}
for (k = 0; s[k]; k++) {
i = -1;
switch (s[k]) {
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]++;
}
}
}
```
判断程序正误的问题得到了解答,程序存在错误,需要修改。
阅读全文