卷饼-79 2021-12-18 18:32 采纳率: 92.3%
浏览 33
已结题

C语言,统计正整数的个数,问题,输出无结果?

问题遇到的现象和发生背景

输入测试用例之后,无返回结果?

问题相关代码,请勿粘贴截图

错误代码

#include<stdio.h>
void mp(int n,int a[])
{
    int  i,j,k;
    
    for(i=0;i<n;i++)
    {
        for(j=i+1;j<n;j++)
        {
            if(a[i]>a[j])
            {
                k=a[i];
                a[i]=a[j];
                a[j]=k;
            }
        }
    }
}


int main()

{
    int n,i,j,b[30]={0};
    scanf("%d",&n);
    int a[n];
    for(i=0;i<n;i++)
    {
        scanf("%d",&a[i]);
    }
    mp(n,a);
    
    for(i=0;i<n;i++)
    {
        for(j=i+1;j<n;j++)
        {
            if(a[i]==a[j])
        {
            a[i]=0;
        }
        
        }
        
    }
    for(i=0;i<n;i++)
    
    {
        for(j=0;i<j;i++)
        {
            if(a[i]==a[j])
            b[i]++;
        }
        if(a[i]!=0&&b[i]!=0)
        printf("%d:%d\n",a[i],b[i]);
    }
    
    return 0;
}

题目如下
标题
统计正整数的个数

类别
流程控制

时间限制
1S

内存限制
1000Kb

问题描述
统计n个正整数中每个数出现的次数。

输入说明
第一行是一个整数n(5<n<30),表示要待统计整数的个数;
第二行是n个整数,每个整数均小于100000
12
输出说明
按照整数从小到大的顺序依次输出不同的整数及其出现次数,整数和出现次数之间用冒号(:)分隔。

输入样例
12
19 223 35 321 2 33 44 223 2 19 2 19

输出样例

2:3
19:3
33:1
35:1
44:1
223:2
321:1

  • 写回答

1条回答 默认 最新

  • 书山客 2021-12-18 18:46
    关注
    
    #include<stdio.h>
    void mp(int n, int a[])
    {
        int  i, j, k;
        for (i = 0; i < n; i++)
        {
            for (j = i + 1; j < n; j++)
            {
                if (a[i] > a[j])
                {
                    k = a[i];
                    a[i] = a[j];
                    a[j] = k;
                }
            }
        }
    }
    
    int main()
    {
        int n, i, j, b[30] = { 0 };
        scanf("%d", &n);
        int a[1024];
        for (i = 0; i < n; i++)
        {
            scanf("%d", &a[i]);
        }
        mp(n, a);
        for (i = 0; i < n; i++)
        {
            if (b[i] == 0)
            {
                b[i] = 1;
            }
            for (j = i + 1; j < n; j++)
            {
                if (a[i] == a[j])
                {
                    a[j] = 0;
                    b[i] += 1;
                }
            }
        }
        for (i = 0; i < n; i++)
        {
            /*for (j = 0; i < j; i++)
            {
                if (a[i] == a[j])
                    b[i]++;
            }*/
            if (a[i] != 0 && b[i] != 0)
                printf("%d:%d\n", a[i], b[i]);
        }
        return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 12月26日
  • 已采纳回答 12月18日
  • 创建了问题 12月18日