用C语言,编一程序,输入十个数字,统计出现次数最多的数是多少,并写出次数

如题所述

/*我个人觉得这道题的难度在于,当出现有两个或者两个以上数字的出现次数相同时,程序是否能同时把这两个出现次数相同的数字找出来。*/

//我使用的测试数据有3组,楼组可以输入下面或者其他的测试数据来测试程序。
//第一组测试数据:23,798,5,23,0,321,4689,37,56,3300. 23出现两次,为出现最多的数字
//第一组测试思量:有一个数字出现次数大于其余数字,检查在这种情况下程序是否正确。
//第二组测试数据是:23,798,5,10,0,321,4689,37,56,3300.所有数字都只出现一次,所以每个数字都符合题目要求,需要打印每个数字
//第二组测试思想:测试情况设置为每个数字只出现一次,并且1位、2位、3位、4位数字都有。
//第三组测试数据:23,798,5,10,798,321,4689,37,23,3300 23和798均出现两次
//第三组测试思量:测试情况设置为有两个数字出现次数一样,检查此时程序是否能同时把这两个数字输出
//我做的测试还是比较少的,但是能大致判断应该是正确的。
//输入的数字仅限整数。

#include<stdio.h>
#define MAX 10
void main()
{

int num[MAX];//num[i]数组用来存放第i个输入的数字
int num_count[MAX]={1,1,1,1,1,1,1,1,1,1};//num_count[i]用来存放第i个输入进来的数字的出现个数
int i,j;

printf("请输入%d个数字:\n",MAX);
for(i=0;i<MAX;i++)
{
scanf("%d",&num[i]);

for(j=0;j<i;j++)//第i个输入进来的数字和前面输入数字进行比较
{
if(num[j]==num[i])
{
num_count[j]++;
break;
}
}
}

int find_max_num=num[0];//find_max_num用来存放出现次数最多的数字的值
int find_max_count=num_count[0];//find_max_coun用来存放出现次数最多的数字的出现次数

for(i=1;i<MAX;i++)
{
if(num_count[i]>find_max_count)
{
find_max_count=num_count[i];
find_max_num=num[i];
}
}
printf("出现最多的数字是%d,一共出现了%d次\n",find_max_num,find_max_count);

for(i=0;i<MAX;i++)
{
if((num[i]!=find_max_num) && (num_count[i]==find_max_count))
printf("出现最多的数字是%d,一共出现了%d次\n",num[i],num_count[i]);
}
getchar();
getchar();
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-10-26
#include<stdio.h>
void main()
{
int i, j, index = 0;
int nums[10];
int numCount[10] = {0};
printf("Please input ten num:\n");
for (i = 0; i < 10; i++)
{
scanf("%d", &nums[i]);
for (j = 0; j < i; j++)
{
if (nums[i] == nums[j])
{
numCount[j]++;
}
}
}
for (i = 0; i < 9; i++)
{
if (numCount[i] < numCount[i+1])
{
index = i+1;
}
}
printf("Num: %d\n", nums[index]);
}本回答被网友采纳

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网