c语言编程,对任意一组数字,如{3,1,4,7,2,1,1,2,2},输出其中出现次数最多的数字,并显示出现的次数。

作者&投稿:滑荷 (若有异议请与网页底部的电邮联系)
Java 怎么算一组array中每个数字出现的次数, 如果某个数字出现次数是最多的,就输出这个数,~

public static void main(String[] args) { int array[]={5, 10, 10, 5, 2, 5, 3, 5, 10, 5, 2, 5, 5, 10, 1, 5, 1}; Arrays.sort(array);// 给数组排序 int count=0; int tmp=array[0]; Map map=new HashMap(); for(int i=0; i key = map.keySet(); for (Iterator it = key.iterator(); it.hasNext();) { Integer s = (Integer) it.next(); System.out.println(s+"出现了"+map.get(s)); } } public static Map sortByValue(Map map) { List list=new LinkedList(map.entrySet()); Collections.sort(list, new Comparator() { // 将链表按照值得从小到大进行排序 public int compare(Object o1, Object o2) { return ((Comparable)((Map.Entry)(o2)).getValue()).compareTo(((Map.Entry)(o1)).getValue()); } }); Map result=new LinkedHashMap(); for(Iterator it=list.iterator(); it.hasNext();) { Map.Entry entry=(Map.Entry)it.next(); result.put(entry.getKey(), entry.getValue()); } return result; }


import java.util.HashMap;import java.util.Scanner;public class A { public static void main(String argvs[]) { String line; Scanner sc = new Scanner(System.in); while(sc.hasNextLine()) { line = sc.nextLine(); if (line.length()==0) break; String []s = line.split(","); int a[] = {0,0,0,0,0,0,0,0,0,0}; for (String i: s) { a[Integer.valueOf(i)] ++; } int p = 0, max = a[0]; for (int i=1;i<10;i++) { if (max<a[i]) { p = i; max = a[i]; } } System.out.printf("出现次数最多的字符是:%c, 次数是%d
", 0x30 + p, max); } sc.close(); }}

如果是任意大小的数字,那么有些麻烦,可以设定两个默认值代表最多的数字和最多的次数。接着去轮询,并计数,如果次数大于默认值,替换即可。遍历完成即可输出那两个值。

如果是0~9,或者字母的话,比较简单。可以定义定长的数组,数组下标代表具体值,数组的内容代表值出现的次数,遍历一遍原数组,得到次数。遍历定长数组,得到值。

第一种方法代码如下,第二种自己琢磨吧。

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char const *argv[])
{
    int num = 0;    //用来存最多值的数值,默认为0
    int coumt = 0;  //用来存最多值的个数,默认为0
    int temp = 0;   //中间变量
    int n = 0;      //数组的个数
    int *p = NULL;  //开辟空间的首地址,等价于&a[0]

    printf("Pls enter the number of arrays:");
    while(1)
    {
        scanf("%d", &n);
        if(n <= 0)
            printf("Error is scanf,pls try again
");
        else
            break; 
    }

    p = (int *)malloc(sizeof(int) * n);
    if(p == NULL)
    {
        printf("Error is malloc
");
        return -1;
    }

    for (int i = 0; i < n; ++i)
    {
        printf("Pls enter the num for buf[%d]=", i+1);
        scanf("%d", &p[i]);
    }

    for (int i = 0; i < n; ++i) //简单的遍历查找
    {
        temp = 0;
        for (int j = i; j < n; ++j)
        {
            if (p[i] == p[j])
            {
                temp++;//计数
            }
        }
        if(coumt < temp)//如果次数大于默认值,替换
        {
            coumt = temp;
            num = p[i];
        }
    }
    
    printf("The most common number is %d and the coumt is %d
", num, coumt);

    return 0;
}

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char const *argv[])
{
    int coumt = 0;  //用来存最多值的个数,默认为0
    int temp = 0;   //中间变量,用于计数
    int n = 0;      //数组的个数
    int *p = NULL;  //开辟空间的首地址,等价于&a[0]
    int *num = NULL; //开辟空间的首地址,等价于&a[0]
    int flag = 0;   //定义一个标志位,用于计数重复的次数的数值出现

    printf("Pls enter the number of arrays:");
    while(1)
    {
        scanf("%d", &n);
        if (n <= 0)
            printf("Error is scanf,pls try again
");
        else
            break; 
    }

    p = (int *)malloc(sizeof(int) * n);//存放你要的数组
    if (p == NULL)
    {
        printf("Error is malloc for p
");
        return -1;
    }

    num = (int *)malloc(sizeof(int) * n);//存放最多数值的数组,最坏情况,没有重复数字
    if (num == NULL)
    {
        printf("Error is malloc for num
");
        return -1;
    }

    for (int i = 0; i < n; ++i)
    {
        printf("Pls enter the num for buf[%d]=", i+1);
        scanf("%d", &p[i]);
    }

    for (int i = 0; i < n; ++i) //简单的遍历查找,找出最大的次数
    {
        temp = 0;
        for (int j = i; j < n; ++j)
        {
            if (p[i] == p[j])
            {
                temp++;//计数
            }
        }
        if (coumt < temp)//如果次数大于默认值,替换
            coumt = temp;
    }

    for (int i = 0; i < n; ++i) //简单的遍历查找,找出重复的次数
    {
        temp = 0;
        for (int j = i; j < n; ++j)
        {
            if (p[i] == p[j])
            {
                temp++;//计数
            }
        }
        if (coumt == temp)//如果次数等于最大值,存储
        {
            num[flag] = p[i];
            flag++;
        }
    }
    
    for (int i = 0; i < flag; ++i)
        printf("The most common number is %d and the coumt is %d
", num[i], coumt);   

    free(p);
    free(num);
    return 0;
}


先给{3,1,4,7,2,1,1,2,2}a1 排序 得到{1,1,1,2,2,2,3,4,7}a2,再设个统计变量数组 a3[count ][value];循环数组a2比较2个数字是否相等。得到{(1,3),(2,3),(3,1),(4,1),(7,1)}a3。在遍历a3比较value大小,你会得到(1,3)和(2,3)。取1,2在到a1里面查找看哪个先出现。


c语言求助 对于一个任意的三位自然数X,编程计算其各个数位上的数字...
include <stdio.h> main(){ int N,a,b,c,s;scanf("%d",&N);a=N\/100; \/\/百位 b=N\/10%10;\/\/十位 c=N%10;\/\/个位 s=a+b+c;printf("%d\\n",s);}

跪求!一C语言答案!急需!输入一个一维整型数组,并找出数组元素中最大值...
2.掌握字符数组与字符串的使用方法。理解字符数组与其它数组的区别、理解字符串及其特点。掌握常用的字符串处理库函数的用法并清楚对字符串的简单处理。3.掌握与数组相关的算法,包括排序算法和查找算法等。实验内容:1.编程实现:对任意一个一维数组,从中找出数组元素的最大值和最小值。要求:(1)...

用C++怎么做 对于一个任意的三位自然数x 编程计算器各个数位上的数字...
include"stdio.h"include"stdlib.h"int main(){ int x,a1,a2,a3,s;printf("输入你的三位自然数:");scanf("%d",&x);a1=x\/100;a2=x\/10-10*a1;a3=x%10;s=a1+a2+a3;printf("你要的三个数位的和为:%d",s);system("pause");return 0;} 成了的话把分给我。

...对于任意一个位序列a,a^a=0,C 语言程序可以?
XOR是位运算符,即*x=a 且*y=b,设定a = 1;b = 2;y=*x ^ *y; \/* 第一步 *\/ 执行后 *x = 1,*y=3 x=*x ^ *y; \/* 第二步 *\/ 执行后 *x = 2,*y=3 y=*x ^ *y; \/* 第三步 *\/执行后 *x = 2,*y=1 测试例子 int main(int argc,char *argv[]...

1.单选题: 对于任意一个类,析构函数的个数最多为( )
对于任意一个类,析构函数的个数最多为1。构造函数和析构函数都是类的成员函数,但它们都是特殊的成员函数,执行特殊的功能,不用调用便自动执行,而且这些函数的名字与类的名字有关。析构函数往往用来做“清理善后” 的工作,析构函数是在销毁对象时,自动调用,不能显示的调用。析构函数不能带参数。

1.试编写完整的汇编语言源程序,对任意给定的十个无符号数按由大到小...
;显示 MOV BX, 0B800H MOV ES, BX ADD DX, 4A30H ;化为ASCII码 MOV ES:[DI], DX ADD DI, 2 ;指向下一个显示位置 RET ;--- END START 本程序使用了简化的段定义结构,子程序设计方法。

c语言n的n次方的末三位怎么求
=k1*k2*1000000+k1*l2*1000+k2*l1*1000+l1*l2 =(k1*k2*1000+k1*l2+k2*l1)*1000+l1*l2 所以,n1*n2的后三位,与l1*l2后三位相同。综上,算法可以设计为,要求n的N次方的后三位,只要每次乘的时候,只取后三位结果即可。简介 C语言是一门面向过程的计算机编程语言,与C++、C#、Java等...

对于一个任意的三位自然数X,编程计算其各个数位上的数字之和S。_百度...
package lianxi;import java.util.Scanner;public class sumnumber { \/ param args \/ public static void main(String[] args) { \/\/ TODO Auto-generated method stub System.out.println("请输入一个三位数字");Scanner input = new Scanner(System.in);int number = input.nextInt();int ...

对任意正整数n,编写一个程序求S=1+1\/3+1\/5+……+1\/2n-1
main(){ int n,i;double s;scanf("%d",&n);s = 0.0;for(i=1;i<=n;i++)s += 1.0\/(2*i-1);printf("%lf",s);getch();}

对任意输入的x,用下式计算并输出y x>0 y=1 x<0 y=-1 x=0 y=0 C语言...
include <stdio.h> int main(){ int x=8,y;printf("请输入x:8\\n");scanf("%d",&x);if(x>0)y=1;else if(x<0)y=-1;else if(x=0)y=0;printf("y=%d\\n",y);return 0;}

中卫市13130199739: C语言编写程序,将任意3个数按照从小到大的顺序排序. -
柏相克灵: #include<stdio.h> int main() {int i,j,m;double temp;double a[3];for(m=0;m<3;m++) //输入三个数{scanf("%lf",&a[m]);}for(i=0;i<3;i++) //完成排序{for(j=i;j<3;j++){if(a[j]<a[i]){temp=a[i];a[i]=a[j];a[j]=temp;}}printf("%lf\t",a[i]);//打印结果}printf("\n");return 0; }

中卫市13130199739: C语言编程题,从键盘输入任意3个数,按从小到大的顺序输出 -
柏相克灵: #include "stdio.h" main() { int x,y,z,t; scanf("%d%d%d",&x,&y,&z); if (x>y) { t=x;x=y;y=t; } /*交换x,y的值*/ if(x>z) { t=z;z=x;x=t; }/*交换x,z的值*/ if(y>z) { t=y;y=z;z=t; }/*交换z,y的值*/ printf("small to big: %d %d %d\n",x,y,z); }

中卫市13130199739: 输入一个数(例如3)用C语言编写一个由*组成的菱形 -
柏相克灵: #include"stdio.h" int main() { int i,t=3,j,n; while(scanf("%d",&n)){ t=n-1; for(i=0;i {for(j=0;j t--; printf("*"); if(i){for(j=0;j printf("*"); } printf("\n"); } for(i=n-2;i>=0;i--) { for(j=0;j printf("*"); if(i){for(j=0;j printf("*"); } printf("\n"); } } return 0; }//祝你成功

中卫市13130199739: C语言程序题:输入任意一个3位数,将其各位数字反序输出. -
柏相克灵: 输入一个数,先/100,得到百位数,输出;再用整除了的数/10,得到十位数,输出,剩下的就是个位数了

中卫市13130199739: C语言编程 有一组数字 1 3 5 7 9 11 13 15 17 19 输入一个数字,将其按大小插入其中 -
柏相克灵: #include "stdio.h" int main(void){ int a[11]={1,3,5,7,9,11,13,15,17,19},i,n; printf("Input n(int)...\nn="); scanf("%d",&n); for(i=9;i>=0;i--){ if(n>=a[i]){ a[i+1]=n; break; } a[i+1]=a[i]; } if(i for(i=0;i printf("\n"); return 0; }

中卫市13130199739: c语言编程: 从键盘任意输入三个数,按照从小到大的顺序输出. -
柏相克灵: #include<stdio.h> void main() { int a,b,c; int d,e,f,sum; printf("请输入三个整数:\n"); scanf("%d,%d,%d",&a,&b,&c); //分号放错位置了 sum=a+b+c; d=(a>=b)? a:b; d=(d>=c)? d:c; e=(a<=b)? a:b; e=(e<=c)? e:c; f=sum-d-e; printf("%d %d %d\n",d,f,e); }

中卫市13130199739: c语言变成当中的一道题:输入任意一个3位数,将其各位数字凡需输出 -
柏相克灵: (x%10)是X被10除取余下多少,就是原来的个位数.(x/10%10)然后是X被10除,去余,就是原来是十位和百位.再除10取余就只身下原来的10位了.x/100取整就是..你知道的得到百位数.然后把个位(x%10)*100就是变成新的百位 十位(x/10%10)*10变成新十位 百位x/100*1变成新个位

中卫市13130199739: 怎样使3个数字构成一个三位数的C语言程序 -
柏相克灵: #include void main(){ int a,b,c;//a为百位,b为十位,c为个位 int L; scanf("%d%d%d", L=a*100+b*10+c; ...

中卫市13130199739: 任意输出3个数字 按从小到大排序输出 C语言 -
柏相克灵: 思路:三个数从小到大排序可以求出三个数中的最大数和最小数,三个数的和减去最大数和最小数,差就是中间数,三个数的最值可以使用三目运算符.参考代码:#include<math.h>#include<stdio.h> int main() { float a,b,c,max,min;printf("input...

中卫市13130199739: C语言编程:由键盘输入任意三个数,编程实现输出其中的最大数
柏相克灵: #include"stdio.h" main() { float a[3]; float max; printf("输入3个数:"); scanf("%f%f%f",&amp;a[0],&amp;a[1],&amp;a[3]); int max=a[0]; for(int i=0;i&lt;3;i++) { if(a[i]&gt;max) max=a[i]; } printf("max=%f\n",max); } 遇到这种题应该想到数组,因为当不是3个数的时候,一个个挨着判断是不可能的.

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