首页 > 解决方案 > 尝试交换四个数字但输出 87 2 次

问题描述

我正在尝试交换四个数字,但在输出中得到 87 2 次。

代码

#include <stdio.h>

int main()
{
    int n1, n2, n3, n4, n5;
    printf("Enter 4 Numbers: ");
    scanf("%d %d %d %d", &n1, &n2, &n3, &n4);

    if ((n1 >= 72 && n1 <= 820) && 
        (n2 >= 72 && n2 <= 820) && 
        (n3 >= 72 && n3 <= 820) && 
        (n4 >= 72 && n4 <= 820))
        n4 = n1;
    n1 = n2;
    n2 = n3;
    n3 = n4;

    printf("\nAfter Interchanging n1, n2, n3 and n4 are %d %d %d %d", n1, n2, n3, n4);

    return 0;
}

输出

Enter 4 Numbers: 87 98 90 76
After Interchanging n1, n2, n3 and n4 are 98 90 87 87

标签: c

解决方案


n4 = n1;删除 的原始值n4。您将需要使用另一个变量来临时保存该值。此外,您似乎忘记{}if声明后添加。

#include <stdio.h>

int main() {

    int n1, n2, n3, n4 ,n5;
    printf ("Enter 4 Numbers: ");
    scanf ("%d %d %d %d", &n1, &n2, &n3, &n4);

    if ((n1>=72 && n1<=820) && (n2>=72 && n2<=820)
    && (n3>=72 && n3<=820) && (n4>=72 && n4<=820)) {

        int t = n4;
        n4 = n1;
        n1 = n2;
        n2 = n3;
        n3 = t;

    }

    printf ("\nAfter Interchanging n1, n2, n3 and n4 are %d %d %d %d" \
        ,n1, n2, n3, n4);

    return 0;
}

为了98 90 87 76从输入中获得输出87 98 90 76,交换部分

        int t = n4;
        n4 = n1;
        n1 = n2;
        n2 = n3;
        n3 = t;

应该:

        int t = n3;
        n3 = n1;
        n1 = n2;
        n2 = t;

推荐阅读