|
发表于 2024-11-23 15:32:24
|
显示全部楼层
在你的代码中,的确存在数据存储的问题。你的初始代码只是循环读取输入,然后重复覆盖`str`变量,而没有将输入的数据存储到一个容器里,如数组或列表中。这就是为什么在调用函数`fun`时,它无法处理所有输入的数据。
要存储这些输入,你需要使用一个数组。这里是一个修正后的代码示例,它可以存储并统计1, 2, 3出现的次数:
- #include <stdio.h>
- int fun(int str[], int length, int c);
- int main()
- {
- int str[100]; // 假设最多输入100个数字
- int i, count, c1, c2, c3;
- i = 0;
- printf("请输入一串数字(输入0表示输入结束):\n");
-
- while(1)
- {
- scanf("%d", &count);
- if(count == 0) break;
- str[i] = count; // 将输入的数据存储到数组中
- 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;
- }
复制代码
在这个版本中,我们使用一个`str`数组来存储所有用户的输入。用户每输入一个数据,就存储在数组的相应位置上。当输入数字为0时,停止输入。然后数组被传递给函数`fun`进行统计1, 2, 3的出现次数。因此,你就可以对所有输入数据进行处理了。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |
|