你的程序有几处存在问题,下面是一些需要修改的地方:
1. **头文件缺失**:你需要包含`#include <stdio.h>`以便使用`printf`和`scanf`函数。
2. **数组存储输入**:你输入的数字需要存储起来以便后续处理,但程序中未实现这一点。
3. **函数设计问题**:`fun`函数没有对输入过的数字串进行处理,因为`str`在函数调用时已经被重定义。
4. **循环逻辑**:在主循环中计数时,你只是读取但没有存储这些数据。
下面是修改后的代码:
#include <stdio.h>
int fun(int str[], int length, int c);
int main()
{
int str[100]; // 假设最多输入100个数字
int i, c1, c2, c3;
i = 0;
printf("请输入一串数字(输入0表示输入结束):\n");
while(1)
{
scanf("%d", &str[i]);
if(str[i] == 0) break;
i++;
}
c1 = fun(str, i, 1);
c2 = fun(str, i, 2);
c3 = fun(str, i, 3);
printf("1的次数为:%d\n2的次数为:%d\n3的次数为:%d\n", c1, c2, c3);
return 0;
}
int fun(int str[], int length, int c)
{
int count = 0;
for(int i = 0; i < length; i++)
{
if(str[i] == c)
count++;
}
return count;
}
在这个版本中:
- 使用了一个数组来存储用户输入的数字。
- `fun`函数接受一个数组和它的长度来计算目标数字出现的次数。
- 读取输入直到遇到0为止,并使用位置索引`i`来控制输入的数量。
希望这个修改可以帮助你理解问题并解决它。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |