我意识到我的逻辑陈述在当时并不正确,但我对与我的输入不匹配的数字感到沮丧。数字通常以大整数形式出现(例如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;
}
答案 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'电话中。
如果我帮助过你,请给我打分。