2015-02-07 60 views
1

我意识到当时我的逻辑陈述不正确,但我对数字与我的输入不匹配感到沮丧。数字通常以大整数出现(例如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; 

} 
+1

'(largest = num3);如果(num3>最大)'?另外,为什么所有这些陪伴你的任务陈述? – Mat 2015-02-07 22:18:09

+0

另外,'else(num2> second);'不会产生任何效果!你的意思是如果(....)? – Christophe 2015-02-07 22:21:26

+0

当scanf_s(“%d%d”''知道一个数字结束并且第二个数字开始时,怎么知道?你怎么知道你有多少个数字?你会如何改变它? – msw 2015-02-07 22:21:37

回答

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

首先读取所有数据,然后找出最大的和中间的数字。

为了更好的代码,我会推荐你​​将所有的数据放在一个数组中,然后对它进行排序。它可以让你用你想要的输入和输出数字来使用你的程序。

尽管如此,要解决的是未来:

- 你应该写:

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; 

而且,你不应该写指定括号之间的语句(),因为它可以为您带来混淆条件语句,并指定喜欢的语句在你的第一个“其他”。

然后,在'printf'调用中指定不带“&”的变量名是很重要的。

如果我帮你,请评价我。

相关问题