我正在尝试用 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/