gpt4 book ai didi

c - SPOJ ADDREV 错误答案

转载 作者:太空宇宙 更新时间:2023-11-04 03:08:29 25 4
gpt4 key购买 nike

我正在尝试解决 Sphere Online Judge 中的 Adding Reversed Numbers 问题 (ADDREV),但我提交的答案一直是错误的。

我已经为我的变量尝试了 int、unsigned int、long 和 unsigned long,它们在我的计算机上都工作得同样好,有一些测试数据(也在下面),但它们都没有通过 SPOJ。

我希望有人能够深入了解为什么我的程序会在他们的系统上失败。我也在他们的论坛留言了,但是好像访问量不大。

这是我的代码:

#include <stdio.h>

#define FIRST 1
#define SECOND 2

int main()
{
int c, k, x, y, state, place, total, reverse = 0;

do
{
c = getchar();

if (c < 48 || c > 57)
{
continue;
}
else
{
k = k * 10;

k = k + (c - 48);
}

} while (c != '\n');

state = FIRST;

place = 1;

do
{
c = getchar();

if (c == ' ')
{
state = SECOND;

place = 1;

continue;
}
else if (c == '\n')
{
total = x + y;

place = 1;

while ((total / place) >= 10)
{
place = place * 10;
}

while (place > 0)
{
reverse = reverse + ((total % 10) * place);

total = total / 10;

place = place / 10;
}

printf("%d\n", reverse);

state = FIRST;

place = 1;

reverse = 0;

x = 0;

y = 0;

k--;

continue;
}

if (state == FIRST && (c >= 48 && c <= 57))
{
x = x + ( (c - 48) * place );

place = place * 10;

}
else if (state == SECOND && (c >= 48 && c <= 57))
{
y = y + ((c - 48) * place );

place = place * 10;
}

} while (k > 0);

return 0;
}

还有...这是我正在使用的测试数据:

12 
24 1
4358 754
305 794
2762 2563
435 4320
0 0
123 456
20 20
10000 10000
999999 999999
321 583
9999999 999999

这是我的程序在我的电脑上给出的结果:

34
1998
1
4236
867
0
579
4
2
8999991
805
89999901

任何帮助将不胜感激:)

最佳答案

此时:

int c, k, x, y, state, place, total, reverse = 0;

你创建了一个变量 k 但没有给它赋值。不久之后:

k = k * 10;

你使用这个变量。那时,您的程序会表现出未定义的行为 - 任何事情都可能发生。

关于c - SPOJ ADDREV 错误答案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1348865/

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