gpt4 book ai didi

c 编程查找重复次数最多的两位数

转载 作者:行者123 更新时间:2023-11-30 21:31:35 25 4
gpt4 key购买 nike

我有这样的代码,输入是随机的,例如:

33 32 65 55 44 pe *&44^ %123^ 

现在我需要找到重复次数最多的两位数字(并且该数字需要包含从 1 到 9 的数字,这意味着 10,30.. 不是有效数字),现在做什么两个数字之间的分隔是除另一个数字之外的每个输入,在本例中,我希望输出为 44,然后我将打印:

The winner couple is: 4 blue, 4 red.

现在我认为做这样的事情的最好方法是使用二维数组,当输入有效时,我将在适当的位置更新数组,然后我将找到数组中的最大位置。这是到目前为止我的代码:

#include <stdio.h>
#include <stdlib.h>
#define N 9

int is_digit(char c);
void update_array(int num[N][N]);
int find_max(int b[N][N]);

int main()
{
int i,j;
int num[N][N];
int maximum=0,a=0,b=0;
for(i=0;i<N;++i)
{
for(j=0;j<N;++j)
{
num[i][j]=0;
}
}
update_array(num);
maximum=find_max(num);
a=maximum/10;
b=maximum%10;
printf("The winner couple is: %d blue, 4%d red.",a,b);
return 0;
}

int is_digit(char c)
{
if(c<'0'&&c>'9')
return 1;
else
return 0;

}

void update_array(int num[N][N])
{
char c;
int digit = 0;
int digits = 0;
int redIndex = 0;
int blueIndex = 0;
while (scanf("%c", &c) != EOF)
{
if (is_digit(c))
{
digits++;
digit = c -'0';
if (digits == 1)
redIndex = digit;
else if (digits == 2)
blueIndex = digit;
}
else
{
if (digits == 2)
{
(num[redIndex][blueIndex]++);
}
digits = 0;
}
}

int find_max(int b[N][N])
{
int max = b[0][0];
int x,y;

for (x = 0; x < N; x++)
{
for (y = 0; y < N; y++)
{
if (max < b[x][y])
{
max = b[x][y];
}
}
}
}

return max;

}

代码给了我不正确的输出,我检查了所有的函数,它们都很好,除了 update_array 函数,我认为有一些不正确的地方,基本上这个函数检查有两位数的数字并更新数组中的合适位置,所以我可以使用 fin_max 函数并找到最大值..请帮助解释为什么它给我不正确的值,我知道我应该使用 debugg 但直到现在我才知道这一点,而且我现在没有时间学习并使用它,因为我需要在几个小时内提交它!

最佳答案

在您的代码中,您执行 if (isdigit(c)) ,但是isdigit 是一个不同的(标准库)函数!你必须#include <ctype.h>使用它。

关于c 编程查找重复次数最多的两位数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37775827/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com