| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
共有 1426 人关注过本帖
标题:求求大佬解答,数组输入10个正整数,统计重复数字的个数,并输出重复数字和 ...
只看楼主 加入收藏
哈哈哈哈镜
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2023-10-20
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:8 
求求大佬解答,数组输入10个正整数,统计重复数字的个数,并输出重复数字和重复次数
数组输入10个正整数,统计重复数字数字,并输出重复数字和重复次数,否则输出no
搜索更多相关主题的帖子: 数字 次数 正整数 输出 重复 
2023-11-08 15:21
沈和
Rank: 4
等 级:业余侠客
威 望:5
帖 子:45
专家分:214
注 册:2019-8-26
收藏
得分:20 
A: 假设输入数据如下
1, 60, 55, 60, 24, 88, 75, 60, 48, 55
输出结果为 60: 3, 55: 2

B: 假设输入数据如下
74, 92, 70, 71, 33, 28, 32, 22, 9, 11
输出结果为: NO

分析:
这个问题是对数据的分组,拿第一组数据为例,可以分组为
1: 1,  60: 3,  55: 2,  24: 1,  88: 1,  75: 1,  60: 1,  48: 1
然后根据分组结果,判断有没有重复数字。

程序代码:
#include <stdio.h>

// 数在 nums 中时,返回下标,否则返回 -1
int data_in_nums(int num, int *array, int tail)
{
    for (int i = 0; i < tail; i++)
    {
        if (num == array[i])
        {
            return i;
        }
    }
    return -1;
}

int main()
{
    int data[] = {1, 60, 55, 60, 24, 88, 75, 60, 48, 55};
    // int data[] = {74, 92, 70, 71, 33, 28, 32, 22, 9, 11};

    int nums[10] = {0};
    int tail = 0;
    int counts[10] = {0};

    for (int i = 0; i < 10; i++)
    {
        int j = data_in_nums(data[i], nums, tail);
        if (j != -1)
        {
            counts[j] += 1; // 已经存在的数,计数加一
        }
        else
        {
            int k = tail;
            nums[k] = data[i]; // 不存在的数,存入 nums
            counts[k] = 1;     // 计数置 1
            ++tail;
        }
    }

    if (tail == 10)
    {
        puts("NO");
        return 0;
    }
    for (int i = 0; i < tail; i++)
    {
        if (counts[i] > 1)
        {
            printf("%d: %d\n", nums[i], counts[i]);
        }
    }
}


2023-11-08 16:04
哈哈哈哈镜
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2023-10-20
收藏
得分:0 
回复 2楼 沈和
谢谢๑•́₃•̀๑大佬
2023-11-09 10:35
哈哈哈哈镜
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2023-10-20
收藏
得分:0 
回复 2楼 沈和
想请教大佬,怎么才能写出这样巧妙的程序(可能是我太菜了,所以我觉得很巧妙)。因为我之前想了很多天,尝试了很多方法,但是都是有问题的。为啥能这样想出程序?
2023-11-10 17:42
沈和
Rank: 4
等 级:业余侠客
威 望:5
帖 子:45
专家分:214
注 册:2019-8-26
收藏
得分:0 
后续你会学数据结构课,了解数据的不同组织形式,思路会打开的。
再之后使用 c++ 或者 java 这样的高级语言,它们提供很多现成的更强大的功能。

题外话,我比较好奇,你使用的是什么浏览器。论坛显示你使用的浏览器是“baidu 蜘蛛”。
2023-11-10 18:17
沈和
Rank: 4
等 级:业余侠客
威 望:5
帖 子:45
专家分:214
注 册:2019-8-26
收藏
得分:0 
就当前这个“输出重复数字和重复次数”这种题目。它属于一类对数列的操作问题。

基础的分析思路有排序,分组计数,数列变换,数据汇总。多多思考一下,思路就出来了。
2023-11-10 18:27
哈哈哈哈镜
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2023-10-20
收藏
得分:0 
回复 5楼 沈和
就是百度,在软件商店下的百度,有啥其奇特的
谢谢大佬指导

[此贴子已经被作者于2023-11-11 12:12编辑过]

2023-11-11 12:09
沈和
Rank: 4
等 级:业余侠客
威 望:5
帖 子:45
专家分:214
注 册:2019-8-26
收藏
得分:0 
回复 7楼 哈哈哈哈镜
我去下载试了下,也显示为 “baidu 蜘蛛”,好新奇。
2023-11-11 14:57
哈哈哈哈镜
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2023-10-20
收藏
得分:0 
回复 8楼 沈和
2023-11-13 13:52
快速回复:求求大佬解答,数组输入10个正整数,统计重复数字的个数,并输出重复数 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017431 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved