使用:
书 - C如何编程,第7版由Paul Deitel,Harvey Deitel
使用mingw作为编译器的代码块
语言 - C
注意:
到目前为止,尚未在本书中介绍数组和大多数操作数。 使用我的代码我返回的不止一个"最小的是" line或"最大的是"线。 我正在用这本书自学......我的错误在哪里?我也刚开始学习编码并选择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
}
答案 0 :(得分:2)
条件:
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;
您还可以使用三元?:
运算符来提取特技,但您可能还没有遇到这些特技,并且这些特技不会生成可读的代码。
答案 1 :(得分:2)
您也可以使用函数来执行此操作:
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;
}