如何快速地统计出整型数组中不同元素的个数。你可以发挥你的聪明才智,设计高效统计算法。
我的建议使用结构体实现,仅供参考:
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
c语言程序问题输入输出问题
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
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; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 2无用
悬赏问题
- ¥15 用verilog实现tanh函数和softplus函数
- ¥15 求京东批量付款能替代天诚
- ¥15 slaris 系统断电后,重新开机后一直自动重启
- ¥15 51寻迹小车定点寻迹
- ¥15 谁能帮我看看这拒稿理由啥意思啊阿啊
- ¥15 关于vue2中methods使用call修改this指向的问题
- ¥15 idea自动补全键位冲突
- ¥15 请教一下写代码,代码好难
- ¥15 iis10中如何阻止别人网站重定向到我的网站
- ¥15 滑块验证码移动速度不一致问题