十个整数-输入10个整数,求出其中互不相同的数的个数,哪一个数的出现次数最多,共出现了多少次,急

问题描述

输入10个整数,求出其中互不相同的数的个数,哪一个数的出现次数最多,共出现了多少次,急

输入10个整数,求出其中互不相同的数的个数,哪一个数的出现次数最多,共出现了多少次,急。

解决方案

 #include <stdio.h>
#define MAX 11
/*输入MAX-1个整型数字,找出不同数字的个数,并且给出出现次数最多的数字。*/
int *sel_sort(int n , int *a,int seq)/*选择排序 seq:0为由小到大,1为由大到小*/
{
    int i=0,j=0 ,min=0,tmp;
    for(i=0 ; i<n-1 ; i++)
    {
        min=i;
        for(j=i+1 ; j<n ; j++)
        {
            if(seq==0){
                if(a[j]<a[min])
                    min=j;
            }
            if(seq==1){
                if(a[j]>a[min])
                    min=j;
            }
        }
        tmp=a[i];
        a[i]=a[min];
        a[min]=tmp;
    }
    return a;
}

int main()
{
    int tmp,num,max,i=0,j=0,*p,**q;
    int a[MAX]={0},b[2][MAX]={0};
    printf("Please input:n");
    for(i=0;i<MAX-1;i++)
    {
        scanf("%d",&a[i]);
    }
    p=sel_sort(MAX-1,a,0);
    num=1;
    b[0][0]=a[0];
    b[1][0]=1;
    tmp=1;
    for(i=0;i<MAX-2;i++)
    {
        if(p[i+1]!=p[i]){
            b[0][num]=p[i+1];
            b[1][num-1]=tmp;
            tmp=1;
            num+=1;
        }
        else{
            tmp+=1;
        }
    }
    b[1][num-1]=tmp;

    /*二维数组排序*/
    for(i=0 ; i<num-1 ; i++)
    {
        max=i;
        for(j=i+1 ; j<num ; j++)
        {
            if(b[1][j]>b[1][max])
                max=j;
        }
        tmp=b[1][i];
        b[1][i]=b[1][max];
        b[1][max]=tmp;
        tmp=b[0][i];
        b[0][i]=b[0][max];
        b[0][max]=tmp;

    }
/*完成二维数组排序*/

    printf("nnum=%dn",num);
    printf("NUM[0]=%d cnt=%dn",b[0][0],b[1][0]);
    for(i=1;i<num;i++)
    {
        if(b[1][i-1]==b[1][i])
            printf("NUM[%d]=%d cnt=%dn",i,b[0][i],b[1][i]);
        else
            break;
    }
    system("pause");

    return 0;
}

解决方案二:

js: 给你提供一道题对你解决相似问题提供好的思路

输入乱序字母串 如 asdafasdfasfaf..... 输出最大出现次数的字母及出现的次数

前端来做的话可以这样 思路都一样可以翻译成别的语言 效率更高

// html input
var a = document.getElementById("num"),numStr,numArr,hashNum = {},max = 0,hashMax;
numStr = a.value;//"asdasdasdasdas"
numArr = numStr.split("");//["a", "s", "d", "a", "s", "d", "a", "s", "d", "a", "s", "d", "a", "s"]
for(var i=0;i < numArr.length;i++){
if(hashNum [ numArr[i] ] ){
hashNum [ numArr[i] ] +=1;
} else {
hashNum [ numArr[i] ] = 1;
}
}
//Object {a: 5, s: 5, d: 4}
for(var x in hashNum){
if(max<hashNum[x]) {
hashMax = {};//初始化
max = hashNum[x];
hashMax[x] = max;
} else if(max == hashNum[x]){
max = hashNum[x];
hashMax[x] = max;
}
}
var s = "";
for(var y in hashMax){
s+='最大出现'+y+':'+hashMax[y]+'';
}
alert(s)

解决方案三:

public static void main(String[] args) {
int[] arr = { 1, 2, 1, 4, 4, 5, 5, 3, 6 };
Map map = new HashMap();
for (int i : arr) {
String key = i + "";
Integer num = (map.get(key) == null) ? 0 : map.get(key);
num++;
map.put(key, num);
}
Set> set = map.entrySet();
Iterator> it = set.iterator();
int max = 0;
List maxNumber = new ArrayList();
while(it.hasNext()) {
Entry obj = it.next();
String number = obj.getKey();
Integer num = obj.getValue();
if(max < num) {
maxNumber.clear();
maxNumber.add(number);
max = num;
} else if(max == num) {
maxNumber.add(number);
}
}

    String str = "";
    for(String number : maxNumber) {
        str += number + ";";
    }
    str = str.substring(0, str.length()-1);
    System.out.println("数字" + str + "出现次数最多; 最多次数:"+ max + ";");
}
时间: 2024-08-30 19:29:48

十个整数-输入10个整数,求出其中互不相同的数的个数,哪一个数的出现次数最多,共出现了多少次,急的相关文章

c++-输入10个整数,按每行3个整数输出这些数,最后输出10个整数的平均值?写出调试过程

问题描述 输入10个整数,按每行3个整数输出这些数,最后输出10个整数的平均值?写出调试过程 整数,按每行3个整数输出这些数,最后输出10个整数的平均值?写出调试过过程.最好在下面这个图上改 解决方案 解决方案二: 你的n没有给值啊,不是要求10么.const int n = 10; 解决方案三: 输入10个整数

number-汇编语言输入10个整数,输出其中最小的奇数。

问题描述 汇编语言输入10个整数,输出其中最小的奇数. 编一程序,从键盘输入10个无符号整数(8位),找出其中最小的奇数并将结果显示出来.没有奇数则显示 NO ODD NUMBER哪位大侠可以教教我这个该怎么做,老师教的完全听不懂QAQ 解决方案 DATAS SEGMENTDATA DB 745865692541876119833;DATA DB 745866662541866169836 ; test odd numberlen equ $ - offset datano_str db 'NO

从键盘输入10个整数,然后按照和输入相反的顺序输出出来

问题描述 从键盘输入10个整数,然后按照和输入相反的顺序输出出来 从键盘输入10个整数,然后按照和输入相反的顺序输出出来 要求用VC++实现 解决方案 #include int main() { int n[10],i; for(i=0;i scanf("%d",n+i); for(i=9;i>=0;--i) printf("%d ",n[i]); return 0; } 解决方案二: #include<stdio.h> int main() {

c语言-C填空题:键盘上输入10个整数,程序按降序完成从大到小排序

问题描述 C填空题:键盘上输入10个整数,程序按降序完成从大到小排序 #include void sort(int *p,int *q) { int *max,*s; if(p>q)return; max=p; __ for(s=p+1;s<=q;s++)__ if()max=s; swap(); sort((),q); } void swap(int *x,int *y) { int temp; temp=*x; *x=*y; *y=temp; } void main() { int i,a

c++-输入10个整数,按每行3个数输出这些数,最后输出10个整数的平均值

问题描述 输入10个整数,按每行3个数输出这些数,最后输出10个整数的平均值 输入10个整数,按每行3个数输出这些数,最后输出10个整数的平均值.下面图是我的过程,求教,我该如何改呢#includeusing namespace std;void input(int a[], int n) { for (int i = 0; i < n; i++)cin >>a[i];}void output(int a[], int n) { for (int i = 0; i < n; i++

温故知新,基础复习(一个有序从大到小不重复的数列,任意给出一个sum值,求出数列中所有满足和为sum的数对)

温故知新,基础复习(一个有序从大到小不重复的数列,任意给出一个sum值,求出数列中所有满足和为sum的数对) #include<stdio.h> #include<stdlib.h> void PrintSumNumbers(int Arra[],int ASize,int Sum) { //O(1) if (ASize<2) { printf("The size of the Arra is invalid.\n"); return; } if(Sum&

如何从文本框中输入的出生日期自动求出当前年龄(岁数)?

问题描述 1,在text1中输入职工出生日期,格式为"yyyy-MM-dd"2.在text2中自动显示出年龄,即多大岁数. 解决方案 解决方案二:txt2.Text=(DateTime.Now.Year-DateTime.Parse(txt1.Text).Year).ToString();如果需要将月份四舍五入就是DateTime.Now.Subtract(DateTime.Parse(txt1.Text)).TotalYears.ToString(F0);解决方案三:哈哈,没注意看T

求算法:1G内存,大小1G的文本文件,1000个关键词,找出现次数最多的前个10词

问题描述 如题 解决方案 解决方案二: 估计很难实现,试试分块读取解决方案三: 只有1000个关键词的话,完全可以做到,通过文件流读取,将读取到的内容分析出关键词后,记录到Dictnary(字典类)当中去,因为才1000个关键词,那么字典也就只有1000个项,1G内存足够,每次重复的关键词出现,也只不过给字典项的value值+1,记录重复次数而已.解决方案四: 用分治的思想和方法解决方案五: 先考虑把文件分了解决方案六: 引用2楼的回复: 只有1000个关键词的话,完全可以做到,通过文件流读取,

using-输入10个整数,将其中最小的数与第一个数交换,把最大的数与最后一个数交换。用指针实现,但是程序崩溃了

问题描述 输入10个整数,将其中最小的数与第一个数交换,把最大的数与最后一个数交换.用指针实现,但是程序崩溃了 #include #include /* run this program using the console pauser or add your own getch, system("pause") or input loop */ int main() { int a[10],i, p, *q, *n; printf("请输入十个数n"); for