计算 C 数组( vector )中数字的出现次数

标签 c loops for-loop vector

我正在尝试用 C 中的 vector (数组)实现以下问题的解决方案。 我想输入一个数字和它出现的次数。

这是一个示例:

Imput n:  5

Imput num 1: 8
Imput num 2: 9
Imput num 3: 8
Imput num 4: 5
Imput num 5: 5

程序现在将显示:

Number 8: 2 occurences
Number 9: 1 occurences
Number 5: 2 occurences

但我的显示:

Number 8: 2 occurences
Number 9: 1 occurences
Number 8: 2 occurences
Number 5: 2 occurences
Number 5: 2 occurences

我该怎么办??? TY

#include <stdio.h>
#include <stdlib.h>
#define SIZE 20

int main ()
{
    int vett1[SIZE], vett2[SIZE];
    int n, i, j;
    int flag;

    printf ("Imput n: ");
    scanf  ("%d", &n);

    for (i=0; i<n; i++)
    {
        printf ("Imput %d di %d: ", i+1, n);
        scanf  ("%d", &vett1[i]);
    }

    printf ("\n\nYour vector: : ");

    for (i=0; i<n; i++)
    {
        printf ("%d ", vett1[i]);
    }

    for (i=0; i<n; i++)
    {
        flag=0;

        for (j=0; j<n; j++)
        {
            if (vett1[j] == vett1[i])
            {
                flag++;
            }
        }

        vett2[i] = flag;
    }

    printf ("\n\n");

    for (i=0; i<n; i++)
    {
        printf ("Number %d: %d occurencese\n", vett1[i], vett2[i]);
    }

    return 0;
}

最佳答案

您需要一种方法来跟踪 (1) 数字和 (2) 出现的次数。像这样思考:如果你用铅笔和纸手工完成,而不是使用计算机,你会怎么做?

您可能需要一张纸,上面有一个小表格,左栏中有数字,右栏中有出现的次数。然后,您将浏览这些数字(在您的例子中为 8、9、8、5、5),对于每个数字,您将检查它是否在您的表中。如果表中已存在,则将计数加一。如果表中没有,则将其另起一行,计数为 1。

现在您需要做的就是将该表实现为某种数据结构,而不是纸上的表。

关于计算 C 数组( vector )中数字的出现次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10721458/

相关文章:

c - avr-gcc 永远不会返回主要优化

c - 在 C 中通过引用传递结构

java - do-while 循环问题

Python 求解模式并用数字和英文单词返回答案

java - 如何将两个数组列表按升序合并为一个

c - 在c中使用字符串指针

c - 不读取注册表的 UAC 状态

Python,编写两个for循环之和的最佳方法

c - C 中只有单行输出而不是多行输出(if/else 和组合)

c - 关于C语言动态内存分配的疑问?