程序必须从个人请求3个号码,然后返回这些号码的最大和第二个号码。这就是我所拥有的:
{
int num1, num2, num3;
int largest, secondLargest;
printf("Enter number 1: ");
scanf("%d",&num1);
printf("Enter number 2: ");
scanf("%d",&num2);
printf("Enter number 2: ");
scanf("%d",&num3);
{
if(num1>num2);
largest=num1;
if(num3>num1);
secondLargest=num1;
largest=num3;
printf("The largest number is: %d\n"),largest;
printf("The second largest number is: %d"),secondLargest;
}
return 0;
}
非常具体,输出必须遵循以下格式
输入数字1:27
输入数字2:36
输入数字3:12
最大的数字是:36
第二大数字是:27
当我运行该程序时,它会返回疯狂的大数字,这让我相信我错过了一些非常简单的东西,或者我对即使是这样的基本程序所需的内容也有所了解。
非常感谢任何帮助!
答案 0 :(得分:3)
要么您的代码格式错误,要么您不熟悉if
语句。无需在;
之后添加if(something)
。
if(num1>num2)
largest=num1;
if(num3>num1) {
secondLargest=num1;
largest=num3;
}
此外,在最后scanf()
和最后printf()
之后有两个奇怪的花括号。
答案 1 :(得分:2)
首先,他们是否也需要使用printf
?
printf("The largest number is: %d\n"),largest;
printf("The second largest number is: %d"),secondLargest;
这不是函数的正确语法。没有参数的格式说明符可能会注入垃圾。
printf("The largest number is: %d\n",largest);
printf("The second largest number is: %d",secondLargest);
这是正确的方法,但你也有其他问题,但这应该可以解决垃圾的输出问题。
答案 2 :(得分:2)
在C ++中,if语句如下所示:
if (condition) {
Do this..
} else {
Do that...
}
如果条件适用,如果只应执行一行,则花括号是可选的。 else子句也是可选的。
其次,您的printf
来电是错误的。 所有参数必须在parantheses内,否则它们不会被编译为参数。另外,在上次printf
来电时添加换行符。
答案 3 :(得分:0)
if
个表达式。您不得使用;
条件if
结束。printf()
不正确!这是您的代码的一部分:
if(num1>num2);
largest=num1;
if(num3>num1);
secondLargest=num1;
largest=num3;
这等于:
if(num1>num2)
{
}
largest=num1;
if(num3>num1)
{
}
secondLargest=num1;
largest=num3
因此,首先您必须从;
行的末尾删除if
个字符,然后在需要的地方添加{}
(您希望在{}中运行更多的一行命令{1}}表达式):
if
以上代码是否正常?不!
为什么?
假设:
if(num1>num2)
largest=num1;
if(num3>num1)
{
secondLargest=num1;
largest=num3;
}
,
num1=10
,
num2=15
在这种情况下会发生什么?没有,作为num3=5
和num1<num2
该计划会跳过num3<num1
个表达式,而您的if
和largest
变量不会被初始化。您在输出中看到的值是您在定义它们时分配给它们的随机值。
所以你必须添加所有情况。
最后,您必须使用secondLargest
,如下所示:
printf()
最终的计划如下:
printf("The largest number is: %d\n",largest);