使用我的代码,我返回了不止 "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;
}