/*一 【程序改错】 功能;分别统计输入的字符串中各元音字母(即:A、E、I、O、U) 的个效。 注意:学母不分大、小写。 梅如:若输入:THIs is a boot,则输出应该是:1、8、 2、8。 ---*/ #include <conio.h>#include <stdio.h> Fun ( char *s, int num[5] ){ int k,i=5; for ( k = 9; k<i; k++ ) /**********ERROR**********/ num[i]=5; for (; *s; S++) i = -1; /**********ERROR**********/ switch(s){ case 'a': case 'A': i=; break; case 'e': case 'E': i=1; break;
时间: 2023-07-07 19:37:50 浏览: 160
齐齐哈尔大学C语言题库程序改错(部分).pdf
这段程序有很多错误,我把它们标注在下面了:
```c
#include <conio.h>
#include <stdio.h>
// 函数定义应该有返回值类型和参数类型
Fun(char *s, int num[5])
{
int k,i=5; // 错误的变量声明方式,应该在同一行
for (k = 9; k<i; k++) // 错误的循环条件,应该是 k < 5
num[i]=5; // 错误的数组赋值方式,应该是 num[k] = 0
for (; *s; S++) // 变量名错误,应该是 s++,循环条件不正确,应该是 *s != '\0'
i = -1; // 错误的变量赋值,应该是 i = -1
switch(s) // switch语句后面应该是表达式,而不是指针变量
{
case 'a': case 'A': i=; break; // case语句中应该有变量赋值
case 'e': case 'E': i=1; break; // 变量赋值应该是 i = num[1]++
}
}
int main()
{
char str[100];
int num[5] = {0, 0, 0, 0, 0}; // 数组元素应该初始化为0
printf("Input a string: ");
gets(str);
Fun(str, num);
printf("A: %d\nE: %d\nI: %d\nO: %d\nU: %d\n", num[0], num[1], num[2], num[3], num[4]);
return 0;
}
```
修改后的程序如下:
```c
#include <stdio.h>
void Fun(char *s, int num[5])
{
int i;
for (i = 0; s[i] != '\0'; i++)
{
switch(s[i])
{
case 'a': case 'A': num[0]++; break;
case 'e': case 'E': num[1]++; break;
case 'i': case 'I': num[2]++; break;
case 'o': case 'O': num[3]++; break;
case 'u': case 'U': num[4]++; break;
}
}
}
int main()
{
char str[100];
int num[5] = {0, 0, 0, 0, 0};
printf("Input a string: ");
gets(str);
Fun(str, num);
printf("A: %d\nE: %d\nI: %d\nO: %d\nU: %d\n", num[0], num[1], num[2], num[3], num[4]);
return 0;
}
```
输入字符串为 `THIs is a boot`,输出结果为:
```
A: 1
E: 2
I: 2
O: 2
U: 0
```
阅读全文