「已注销」 2022-11-16 10:35 采纳率: 40%
浏览 34
已结题

c语言程序问题输入输出问题

如何快速地统计出整型数组中不同元素的个数。你可以发挥你的聪明才智,设计高效统计算法。
我的建议使用结构体实现,仅供参考:
struct tongji{
int data; // 存放数组元素
int k; // 记录不同元素位次(1-n) 初始化为0,表示无位次
int flag; //重复标记位,有重复标记1 ,无重复标记0,初始化为0;
};
int cot[N]={0}; //按输入顺序记录不同元素出现次数。
输入
输入有两行,第一行是一个正整数n,表示数组元素个数。第二是n个数组元素,数据之间空格区分
输出
不同每个元素重复次数,格式如输出样例所示
难度
中等
输入示例
10
1 2 3 4 5 2 6 8 6 2
输出示例
1:1
2:3
4:1
5:1
6:2
8:1

  • 写回答

2条回答 默认 最新

  • 浪客 2022-11-16 11:59
    关注
    
    #include <stdio.h>
    #include <stdlib.h>
    
    #define N 100
    
    struct tongji
    {
        int data; // 存放数组元素
        int k;    // 记录不同元素位次(1-n) 初始化为0,表示无位次
        int flag; //重复标记位,有重复标记1 ,无重复标记0,初始化为0;
    };
    // int cot[N] = {0}; //按输入顺序记录不同元素出现次数。
    
    int findnum(struct tongji *tj, int x, int n)
    {
        for (int i = 0; i < n; i++)
        {
            if (x == tj[i].data)
            {
                return i;
            }
        }
        return -1;
    }
    
    int main()
    {
        int n, t, i, x, cnt = 0;
    
        scanf("%d", &n);
        struct tongji *tj = (struct tongji *)calloc(n, sizeof(struct tongji));
    
        for (i = 0; i < n; i++)
        {
            scanf("%d", &x);
            t = findnum(tj, x, i);
            if (t == -1)
            {
                tj[cnt].data = x;
                tj[cnt].k++;
                tj[cnt].flag = 0;
                cnt++;
            }
            else
            {
                tj[t].k++;
                if (tj[t].k > 1)
                    tj[t].flag = 1;
            }
        }
        for (i = 0; i < cnt; i++)
        {
            printf("%d:%d\n", tj[i].data, tj[i].k);
        }
    
        return 0;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 11月16日
  • 已采纳回答 11月16日
  • 创建了问题 11月16日

悬赏问题

  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么