C语言统计数字出现次数结果重复打印如何修复
问题根因
你当前的打印逻辑是遍历全部输入元素,输入里出现多少次某个数字,就会触发多少次该数字的频次打印,所以才会出现重复输出的问题。
修复方法
将原代码中最后一段遍历输入数组的打印循环,替换为遍历计数数组的逻辑即可:
原需要替换的代码段:
for(i=0;i<n;i++){ printf("Number %d appears: %d times\n", arr[i], counters[arr[i]]); }
替换为:
// 遍历0~100的所有合法输入值,只要出现过就打印 for(i=0;i<=100;i++){ if(counters[i] > 0){ printf("数字%d出现%d次。\n", i, counters[i]); } }
完整修改后代码
#include <stdio.h> int main() { int i,arr[1000],counters[1001]={0},n; printf("输入数字:\n"); for(i=0;i<100;i++){ scanf("%d", &arr[i]); if(arr[i]==-1) break; if(arr[i]<0||arr[i]>100){ printf("数字必须在0到100之间\n"); i--; } } n=i; for(i=0;i<n;i++){ counters[arr[i]]++; } // 修改后的打印逻辑 for(i=0;i<=100;i++){ if(counters[i] > 0){ printf("数字%d出现%d次。\n", i, counters[i]); } } return 0; }
内容的提问来源于stack exchange,提问作者user17313110
相关产品推荐
相关产品推荐

