输入10个数,找出出现次数最多的数 (如果多个并列,则按数字出现顺序分别输出)
2014-12-28 11:00
316 查看
输入10个数,找出出现次数最多的数
(如果多个并列,则按数字出现顺序分别输出)
比如:
输入:1 2 2 3 4 5 6 7 8 9
输出:2
算法:
(1)
利用双层循环, 每一个元素都与后面一个元素比较,
如果两者相同, 则该元素次数+1,
(2)
以上的算法中两个相同的元素的次数是一样的, 优化如下,
比较两个元素的时候, 如果两者相等,
则该元素次数+1,
后面的元素次数设置为0,
比较的时候再判断这个元素是否已经比较
#include <stdio.h>
int main(int argc,const char *argv[])
{
int a[10];
int count[10];
for (int i=0; i<10; i++) {
scanf("%d", &a[i]);
count[i]=1;
}
for (int i=0; i<10; i++) {
if (count[i]) {
for (int j=i+1; j<10; j++) {
if (a[j]==a[i]) {
count[i]++;
count[j]=0;
}
}
}
}
// for (int i=0; i<10; i++) {
// printf("%d ", count[i]);
// }
//找最大值
int max = count[0];
for (int i=0; i<10; i++) {
if (max<count[i]) {
max=count[i];
}
}
//查找cnt最大值对应的数
for (int i=0; i<10; i++) {
if (max==count[i]) {
printf("%d ", a[i]);
}
}
printf("\n");
return 0;
}
(如果多个并列,则按数字出现顺序分别输出)
比如:
输入:1 2 2 3 4 5 6 7 8 9
输出:2
算法:
(1)
利用双层循环, 每一个元素都与后面一个元素比较,
如果两者相同, 则该元素次数+1,
(2)
以上的算法中两个相同的元素的次数是一样的, 优化如下,
比较两个元素的时候, 如果两者相等,
则该元素次数+1,
后面的元素次数设置为0,
比较的时候再判断这个元素是否已经比较
#include <stdio.h>
int main(int argc,const char *argv[])
{
int a[10];
int count[10];
for (int i=0; i<10; i++) {
scanf("%d", &a[i]);
count[i]=1;
}
for (int i=0; i<10; i++) {
if (count[i]) {
for (int j=i+1; j<10; j++) {
if (a[j]==a[i]) {
count[i]++;
count[j]=0;
}
}
}
}
// for (int i=0; i<10; i++) {
// printf("%d ", count[i]);
// }
//找最大值
int max = count[0];
for (int i=0; i<10; i++) {
if (max<count[i]) {
max=count[i];
}
}
//查找cnt最大值对应的数
for (int i=0; i<10; i++) {
if (max==count[i]) {
printf("%d ", a[i]);
}
}
printf("\n");
return 0;
}
相关文章推荐
- 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在
- 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在
- 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在
- 编写一个程序,对用户输入的任意一组数字字符如{3,1,4,7,2,1,1,2,2},输出其中出现次数最多的字符,并显示其出现次数。如果有多个字符出现次数均为最大且相等,则输出最先出现的那个字符和它出现
- 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在
- 22.数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果
- 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。
- 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在
- 编写一个小程序,从标准输入读入一系列string对象,寻找连续重复出现的单词。程序应该找出满足一下条件的单词:该单词的后面紧接着再次出现自己本身。跟踪重复次数最多的单词及其重复次数,输出.
- 找出出现次数最多的数字(需要考虑顺序)
- 给定n个正整数,找出它们中出现次数最多的数。如果这样的数有多个,请输出其中最小的一个。
- 从输入的数中找出出现次数最多的数字
- 算法初步--输入学生成绩,输出次数最多的成绩,如果有多个并列,按照从小到大输出(C语言实现)
- 编写一个小程序,从标准输入读入一系列string对象,寻找连续重复出现的单词。程序应该找出满足一下条件的单词:该单词的后面紧接着再次出现自己本身。跟踪重复次数最多的单词及其重复次数,输出.
- 随机生成N个1至100的整数,N由用户给定,程序输出出现次数最多的整数及其出现次数。如果有多个并列最多,需要输出全部最多的整数。
- 输入手机号码输出手机号码中各个数字出现的次数 , 并判断其中出现次数最多的那个数字是几?
- 第13周-项目1-小玩文件-用键盘输入文件名,统计输出文件中每个字母、数字字符出现的次数
- 找出一段文字中出现次数最多的前10个单词以及次数
- 键盘输入一句话,输出这句话中最长的单词,如果最长的出现多次,返回第一个,这句话只包含数字字母和标点
- 随机产生50个整数,位于[10,50],统计每个数字出现的次数以及出现次数最多的数字与出现次数并打印.如果出现次数为0不打印,打印时要求升序