玻璃的寿命有多长:朋友帮俺改下程序!(C语言的)

来源:百度文库 编辑:杭州交通信息网 时间:2024/04/29 01:45:35
【问题描述】
输入若干个整数,统计出现次数最多的那个整数。如果出现最多的整数有两个以上,打印最早输入的那个整数。
【输入形式】
从标准输入读取输入。第一行只有一个数字N(1≤N≤10000),代表整数的个数。以后的N行每行有一个整数。
【输出形式】
向标准输出打印出现次数最多的那个数字。
【输入样例】
6
11
0
-1
20
0
300
【输出样例】
0

【样例说明】
输入6个整数,其中出现次数最多的是0,共出现两次。
【评分标准】
本题不准使用数学库函数。

#include<stdio.h>
struct num
{
int n[10000];
int count;

};

struct num nn[10000];

main()
{
int i,j;
int total;
int max=0;

scanf("%d\n",&total);

for(i=0;i<total;i++)
scanf("%d\n",nn[i].n);

for(i=0;i<total;i++)
{
for(j=i+1;j<total;j++)
{
if(nn[j].n==nn[i].n)
nn[i].count++;
}
}

for(i=0;i<total;i++)
{
max=i;
for(j=i+1;j<total;j++)
if(nn[max].count<nn[j].count)
max=j;
}

printf("%d",nn[max].n);

}

30---50分
这个问题一定要用结构体来实现

二维数组还不就行了。

void main()
{
  int nums[10000][2];  // 二维数组,[0]保存数,[1] 保存个数
  int temp; //临时数

  int total; //总个数
  
  int i,j; //循环
  
  scanf("%d",&total);

  for(i = 0;i < total;i++)
  {
      scanf("%d",&temp);
      for(j = 0;j < i;j++)
      {
         if(nums[j][0] == temp)//如果已经输入,个数加1
         {
              nums[j][1] ++;
              continue;
         }
      }
      num[i][0] = temp;//没有输入,夹道数组,个数为1
      num[i][1] = 1;
  }  

  temp = 0;
  for(i = 0;i < total;i++)
  {
     if(nums[temp][1] < nums[i][1])循环找到最大数
     {
        temp = i;
     }
  }
  
  printf("%d",nums[temp][0]);

}