【发布时间】:2019-12-08 03:00:18
【问题描述】:
问题:编写一个程序,读取范围内的所有整数 0 到 100,包括来自名为:a.txt 的输入文件,并计算如何 每个在文件中都出现了很多次。输入完所有内容后 处理后,显示所有出现次数的值 在输入文件中。
注意:程序会忽略任何小于 0 或大于 100 的数字。 注意:如果文件中没有数字,则不要显示零。提示:一个 大小为 101 的数组就足够了。文件中的一个数字起到作用 索引。
例如:假设文件内容:a.txt如下:
99 2 99
3
-12 80 12 33
3 99 100 1234 84
显示输出为:
2 has occurred: 1 times,
3 has occurred: 2 times,
12 has occurred: 1 times,
33 has occurred: 1 times,
80 has occurred: 1 times,
84 has occurred: 1 times,
99 has occurred: 3 times,
100 has occurred: 1 times
这是我现在拥有的代码:
#include <stdio.h>
#include <stdlib.h>
int main(){
FILE *inFile;
int count = 1, num[101];
inFile = fopen("a.txt", "r");
for(int i = 1; i <= 100; i++) {
fscanf(inFile, "%d", &num[i]);
}
for(int i = 1; i <= 100; i++){
if(num[i] == i) {
printf("%i has occurred: %d times\n", i, count);
count++;
}
}
fclose(inFile);
}
输出: 2 已发生:1 次
您好,我正在尝试为周日午夜到期的 C 编程课程做这项作业,但我在尝试打印数组中的所有数字及其出现时遇到了麻烦。在我的代码中,我首先声明 int count 以增加出现次数,如果在文本文件中多次找到该数字并创建一个大小为 101 的数组。然后,我使用 for 循环读取文本文件并存储所有将 1-100 的数字放入数组中。第二个 for 循环,后跟一个 if 语句,用于比较数组中的数字。即使这是一个测试程序,我们也应该能够对所有数据值执行此操作。希望这是一个足够好的解释,谢谢。
【问题讨论】:
-
您的逻辑似乎有误。数组 num[101] 应该存储每个元素的计数,其中数组由从 0 到 100 的每个数字索引
-
您需要使用第一个 for 循环中的
i来了解num数组中有多少条目。您还从 1 而不是 0 开始为num设置索引。