团体程序设计天梯赛-练习集 L1-003 个位数统计 C语言

请编写程序统计每种不同的个位数字出现的次数。例如:给定 N=100311,则有 2 个 0,3 个 1,和 1 个 3。

输入格式:
每个输入包含 1 个测试用例,即一个不超过 1000 位的正整数 N。

输出格式:
对 N 中每一种不同的个位数字,以 D:M 的格式在一行中输出该位数字 D 及其在 N 中出现的次数 M。要求按 D 的升序输出。
在这里插入图片描述

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

int main()
{
    
    
    int n[10]={
    
    0};  //´æ1~9¸öÊý×Ö¸öÊý
    int m[10]={
    
    0,1,2,3,4,5,6,7,8,9};
    int t=0;
    char a;
    while((a=getchar())!='\n')
    {
    
    
        if(a>='0'&&a<='9')
        {
    
    
            n[a-48]++;
        }
    }
   /* for(int i=0;i<=7;i++)//如果是根据个数来排序,
   //						可以加上着些注释的语句
    {
        for(int j=0;j<=8-i;j++)	//就当练练冒泡排序
        {
            if(n[j]<n[j+1])	//按个数降序
            {
                t=n[j];
                n[j]=n[j+1];	//个数多的到前面
                n[j+1]=t;

                t=m[j];
                m[j]=m[j+1];	//对应的数字也移动
                m[j+1]=t;
            }
        }
    }*/
    for(int p=0;p<=9;p++)
    {
    
    
        if(n[p]>0)	//如果数组里是有东西的
        {
    
    
            printf("%d:%d\n",m[p],n[p]);	//输出
        }
    }
    return 0;
}

题目挺简单的,就是冒泡排序快忘了,稍微复习一下(虽然此题不用排序,就当我闲得慌吧).

猜你喜欢

转载自blog.csdn.net/qq_49868778/article/details/110429431