gpt4 book ai didi

C 程序将在 Linux 而不是 Windows 中编译和运行

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

我正在为一个编程类(class)做作业,但我遇到了一个程序问题。目标是获取一组用户定义的值,将它们存储在数组中,然后找到最接近的一对数字(差异最小的数字)。这些数字不必具有连续的索引。此外,50 的数组大小是在教授的作业中定义的。

我遇到的问题是该程序将在 Linux (Ubuntu 14.xx) 和 Windows 10 中编译,但是,当我在 Linux 中运行结果时,它运行良好,但在 Windows 中它什么也不输出。

这是我第一次遇到这个问题,据我所知我没有使用任何系统特定的命令。我们将不胜感激。

代码:

#include <stdio.h>

int main()
{
int i, j, a, b, temp, mindiff, count;
int numarray[50];

count = 0;

for (i = 0; i < 50; i++)
{
scanf("%d", &numarray[i]);
count++;
if (numarray[i] == -1)
{
numarray[i] = 0;
count--;
break;
}
}
mindiff = 100;
for (i = 0; i < count; i++)
{
for (j = 0; j < count; j++)
{
a = numarray[i];
b = numarray[j];
if (a != b)
if (a > b)
temp = a - b;
else
temp = b - a;

if (temp < mindiff)
mindiff = temp;
}
}

for (i = 0; i < count; i++)
{
for (j = 0; j < count; j++)
{
a = numarray[i];
b = numarray[j];
if (a != b)
{
if (a > b && (a - b) == mindiff)
{
printf("Closest pair: %d and %d, Difference: %d\n", a, b, mindiff);
return 0;
}
}
}
}

return 0;
}

最佳答案

至少有两个主要问题:

  • 你的代码有未定义的行为,因为你使用 temp 即使它没有被设置(你应该在 if (a != b) 之后开始一个 block ). 未定义的行为 意味着任何事情都可能发生,包括在 Linux 上明显的成功和在 Windows 上的失败。

  • 您将 mindiff 初始化为 100。如果所有数字彼此相距较远,mindiff 将不会更改,第二个循环将不会打印任何内容。

这是一个更简单的版本:

#include <stdio.h>

int main(void) {
int count, i, j, mina, minb, mindiff;
int numarray[50];

for (count = 0; count < 50; count++) {
if (scanf("%d", &numarray[count]) != 1 || numarray[count] == -1)
break;
}
mindiff = mina = minb = 0;
for (i = 0; i < count; i++) {
for (j = 0; j < count; j++) {
int a = numarray[i];
int b = numarray[j];
if (a > b) {
int diff = a - b;
if (mindiff == 0 || mindiff > diff) {
mindiff = diff;
mina = a;
minb = b;
}
}
}
}
if (mindiff == 0) {
if (count == 0) {
printf("No numbers input\n");
} else {
printf("The numbers are all identical\n");
}
} else {
printf("Closest pair: %d and %d, Difference: %d\n",
mina, minb, mindiff);
}
return 0;
}

关于C 程序将在 Linux 而不是 Windows 中编译和运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42354514/

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