【问题描述】
求一批整数中出现最多的数字。输入一个正整数 n (1 每个整数的每一位数字,求出现次数最多的各位数字。例如输入 3 个整数 1234、2345、3456, 其中出现次数最多的数字是 3 和 4,均出现了 3 次。试编写相应程序。 【输入形式】 【输出形式】 【样例输入】 3 1234 2345 3456 【样例输出】 3 4 【样例说明】 【评分标准】 #include/*前提假设:每次输入一个整数再输入回车思路: 将n个整数看作n个字符串,所以需要两层循环;外层循环保证遍历完n个数, 内层循环将输入的整数逐个字符读入,以'\n'为结束条件,并在内层循环进行统计 由于十进制数只有0~9,故长度为10的数组即可统计每一位的出现次数逻辑漏洞:输入形如“0012”,以“0”开头的数字0会被统计在内注:如果将数字以整数的 “ % ”、“ / ”控制循环会出现更为严重的逻辑问题*/int main(){ int i; int n; //n个数 char ch; //读入一个字符 int bite; //整数字符对应的一位整数数字 int cnt[10]; //统计数组 int m; //出现的最大次数 //初始化 for(i=0;i<10;i++) cnt[i] = 0; //输入 printf("input n : "); scanf("%d",&n); printf("input %d numbers:\n",n); for(i=0;i<=n;i++){ //保证对n个整数的处理 while((ch=getchar())!='\n'){ //当一个整数的每个字符没处理完 bite = ch - '0'; // 如,1 = ‘1’ - ‘0’ cnt[bite]++; //相应位置计数 } } //找到最大值 m=cnt[0]; for(i=1;i<10;i++){ if(m m=cnt[i]; } printf("the most frequent numbers:\n"); for(i=0;i<10;i++){ if(cnt[i]==m) //出现次数最多的输出 printf("%d\n",i); } printf("%d times\n",m); return 0;}
每个整数的每一位数字,求出现次数最多的各位数字。例如输入 3 个整数 1234、2345、3456,
其中出现次数最多的数字是 3 和 4,均出现了 3 次。试编写相应程序。
【输入形式】 【输出形式】 【样例输入】 3 1234 2345 3456 【样例输出】 3 4 【样例说明】 【评分标准】
【输入形式】 【输出形式】
【样例输入】
3
1234 2345 3456
【样例输出】
3 4
【样例说明】
【评分标准】
#include/*前提假设:每次输入一个整数再输入回车思路: 将n个整数看作n个字符串,所以需要两层循环;外层循环保证遍历完n个数, 内层循环将输入的整数逐个字符读入,以'\n'为结束条件,并在内层循环进行统计 由于十进制数只有0~9,故长度为10的数组即可统计每一位的出现次数逻辑漏洞:输入形如“0012”,以“0”开头的数字0会被统计在内注:如果将数字以整数的 “ % ”、“ / ”控制循环会出现更为严重的逻辑问题*/int main(){ int i; int n; //n个数 char ch; //读入一个字符 int bite; //整数字符对应的一位整数数字 int cnt[10]; //统计数组 int m; //出现的最大次数 //初始化 for(i=0;i<10;i++) cnt[i] = 0; //输入 printf("input n : "); scanf("%d",&n); printf("input %d numbers:\n",n); for(i=0;i<=n;i++){ //保证对n个整数的处理 while((ch=getchar())!='\n'){ //当一个整数的每个字符没处理完 bite = ch - '0'; // 如,1 = ‘1’ - ‘0’ cnt[bite]++; //相应位置计数 } } //找到最大值 m=cnt[0]; for(i=1;i<10;i++){ if(m m=cnt[i]; } printf("the most frequent numbers:\n"); for(i=0;i<10;i++){ if(cnt[i]==m) //出现次数最多的输出 printf("%d\n",i); } printf("%d times\n",m); return 0;}
京公网安备 11010502049817号