使用我的代码,我返回了不止 "smallest is" 行或 "largest is" 行……我的错误在哪里?
Using my code I am returned more than one "smallest is" line or "largest is" line…where are my errors?
使用:
Book - C How to Program,第 7 版,作者 Paul Deitel,Harvey Deitel
使用 mingw 作为编译器的代码块
语言 - C
备注:
到目前为止,数组和大多数操作数在本书中尚未介绍。
使用我的代码,我返回了不止一个 "smallest is" 行或 "largest is" 行。
我正在用这本书自学……我的错误在哪里?我也刚刚开始学习编码,并选择了 C 作为语言。
任务:
(算术,最大值和最小值)写一个程序,输入三个不同的
从键盘输入整数,然后打印这些数字的总和、平均值、乘积、最小值和最大值。仅使用您在本章中学习的 if 语句的单选形式。
屏幕对话应如下所示:
输入三个不同的整数:13 27 14
总和为 54
平均为 18
产品是 4914
最小的是 13
最大的是 27
这是我的代码:
#include <stdio.h>
int main(void)
{
int num1;
int num2;
int num3;
printf("Please input three integers.");
scanf("%d%d%d", &num1, &num2, &num3);
printf("Sum is %d\n", num1 + num2 + num3);
printf("Average is %d\n", (num1 + num2 + num3) / 3);
printf("Product is %d\n", num1 * num2 * num3);
if(num1 > num2 && num3) {
printf("Largest is %d\n", num1);
} //end if function
if(num2 > num1 && num3) {
printf("Largest is %d\n", num2);
} //end if function
if(num3 > num1 && num2) {
printf("Largest is %d\n", num3);
} //end if function
if(num1 < num2 && num3) {
printf("Smallest is %d\n", num1);
} //end if function
if(num2 < num1 && num3) {
printf("Smallest is %d\n", num2);
} //end if function
if(num3 < num1 && num2) {
printf("Smallest is %d\n", num3);
} //end if function
}
条件:
if(num1 > num2 && num3)
表示:
if (num1 > num2 && num3 != 0)
或者,等效地,但带有完整的括号集:
if ((num1 > num2) && (num3 != 0))
你需要写:
if (num1 > num2 && num1 > num3)
冲洗并重复。
有更好、更紧凑的方法来确定三个整数中的最大值,例如:
int largest = num1;
int smallest = num1;
if (num2 > largest)
largest = num2;
else if (num2 < smallest)
smallest = num2;
if (num3 > largest)
largest = num3;
else if (num3 < smallest)
smallest = num3;
您还可以使用三元运算符 ?:
来实现特技,但您可能还没有遇到过这些特技,并且这些特技不会产生可读代码。
你也可以使用函数来完成:
int num1, num2, num3;
printf("largest number is %d\n", largest(num1, largest(num2, num3)));
printf("smallest number is %d\n", smallest(num1, smallest(num2, num3)));
其中 largest(int, int)
和 smallest(int, int)
是:
int largest (int a, int b)
{
if (a > b)
return a;
else
return b;
}
和
int smallest (int a, int b)
{
if (a < b)
return a;
else
return b;
}
使用:
Book - C How to Program,第 7 版,作者 Paul Deitel,Harvey Deitel
使用 mingw 作为编译器的代码块
语言 - C
备注:
到目前为止,数组和大多数操作数在本书中尚未介绍。 使用我的代码,我返回了不止一个 "smallest is" 行或 "largest is" 行。 我正在用这本书自学……我的错误在哪里?我也刚刚开始学习编码,并选择了 C 作为语言。
任务:
(算术,最大值和最小值)写一个程序,输入三个不同的 从键盘输入整数,然后打印这些数字的总和、平均值、乘积、最小值和最大值。仅使用您在本章中学习的 if 语句的单选形式。
屏幕对话应如下所示:
输入三个不同的整数:13 27 14
总和为 54
平均为 18
产品是 4914
最小的是 13
最大的是 27
这是我的代码:
#include <stdio.h>
int main(void)
{
int num1;
int num2;
int num3;
printf("Please input three integers.");
scanf("%d%d%d", &num1, &num2, &num3);
printf("Sum is %d\n", num1 + num2 + num3);
printf("Average is %d\n", (num1 + num2 + num3) / 3);
printf("Product is %d\n", num1 * num2 * num3);
if(num1 > num2 && num3) {
printf("Largest is %d\n", num1);
} //end if function
if(num2 > num1 && num3) {
printf("Largest is %d\n", num2);
} //end if function
if(num3 > num1 && num2) {
printf("Largest is %d\n", num3);
} //end if function
if(num1 < num2 && num3) {
printf("Smallest is %d\n", num1);
} //end if function
if(num2 < num1 && num3) {
printf("Smallest is %d\n", num2);
} //end if function
if(num3 < num1 && num2) {
printf("Smallest is %d\n", num3);
} //end if function
}
条件:
if(num1 > num2 && num3)
表示:
if (num1 > num2 && num3 != 0)
或者,等效地,但带有完整的括号集:
if ((num1 > num2) && (num3 != 0))
你需要写:
if (num1 > num2 && num1 > num3)
冲洗并重复。
有更好、更紧凑的方法来确定三个整数中的最大值,例如:
int largest = num1;
int smallest = num1;
if (num2 > largest)
largest = num2;
else if (num2 < smallest)
smallest = num2;
if (num3 > largest)
largest = num3;
else if (num3 < smallest)
smallest = num3;
您还可以使用三元运算符 ?:
来实现特技,但您可能还没有遇到过这些特技,并且这些特技不会产生可读代码。
你也可以使用函数来完成:
int num1, num2, num3;
printf("largest number is %d\n", largest(num1, largest(num2, num3)));
printf("smallest number is %d\n", smallest(num1, smallest(num2, num3)));
其中 largest(int, int)
和 smallest(int, int)
是:
int largest (int a, int b)
{
if (a > b)
return a;
else
return b;
}
和
int smallest (int a, int b)
{
if (a < b)
return a;
else
return b;
}