为什么我的输出数字不会返回输入的输入?

时间:2015-02-07 22:13:58

标签: c

我意识到我的逻辑陈述在当时并不正确,但我对与我的输入不匹配的数字感到沮丧。数字通常以大整数形式出现(例如4128168,对于输入的整数,它们永远不会相同)。我对编程很新,并且找不到这个错误的答案。任何帮助表示赞赏!

int num1;
int num2;
int num3;
int largest;
int second;

printf("Enter three numbers and I'll identify the largest and second largest.\n");
scanf_s("%d%d", &num1, &num2);
(largest = num1);
(second = 0);

if (num2 > largest)
    (largest = num2);
else (num2 > second);
(second = num2);

scanf_s("%d", &num3);
(second = num2);
(largest = num3);

if (num3 > largest)
    (largest = num3);
else (second = num3);

printf("The largest number is %d\n", &largest);
printf("The second largest number is %d\n", &second);

return 0;

}

2 个答案:

答案 0 :(得分:2)

printf("The largest number is %d\n", &largest);
printf("The second largest number is %d\n", &second);

您正在打印地址,打印值:

printf("The largest number is %d\n", largest);
printf("The second largest number is %d\n", second);

答案 1 :(得分:1)

首先,我建议您首先阅读所有数据,然后找到最大和中间数字。

为了获得更好的代码,我还建议您将所有数据放入数组中,然后对其进行排序。它允许您使用具有所需数量的输入和输出数字的程序。

尽管如此,您想要的解决方案是下一个:

- 你应该写:

second = num1; //too, initializing

if (num2 > largest)
    largest = num2;
else
    largest = num1;

然后是第3个号码。

而不是:

if (num3 > largest) 
    (largest = num3);
else (second = num3);

你应该写:

if (num3 > largest){ //now, comparing the new number with the actual largest
    second = largest; //on this right order without overlapping 'largest'
    largest = num3;
} else if(num3 > second)
    second = num3;

此外,您不应在括号()之间编写assign语句,因为它可能会使您混淆条件语句并分配语句,就像在您的第一个“else”中一样。

然后,在没有“&”的情况下指定变量名称很重要在你的'printf'电话中。

如果我帮助过你,请给我打分。