使用我的代码我返回的不止一个"最小的是" line或"最大的是" line ...我的错误在哪里?

时间:2015-01-10 20:56:20

标签: c integer comparison

使用:

书 - 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

}

2 个答案:

答案 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;
}