从键盘输入n(n<=100)个正整数,求出最大数,最小数,以及他们的最大公约数。

从键盘输入n(n<=100)个正整数,求出最大数,最小数,以及他们的最大公约数。

程序运行结果示例1:

Inputn:10↙

Input 10 numbers:15 23 56 87 94 105 78 19 22 43↙

maxNum= 105,minNum= 15

15

程序运行结果示例2:

Inputn:5↙

Input 5 numbers:33 1 2 0 10↙

maxNum= 33,minNum= 0

输入数据个数提示:"Input n:"

输入提示信息:"Input %d numbers:"

输入格式:"%d"

输出格式:

最大数输出格式:"maxNum=%4d"

最小数输出格式:",minNum=%4d\n"

最大公约数输出格式:"%d"

以下是实现要求的 C 语言代码:

#include <stdio.h>

// 求两个数的最大公约数
int gcd(int a, int b) {
    if (b == 0) return a;
    return gcd(b, a % b);
}

int main() {
    int n, i, maxNum = 0, minNum = 0x7fffffff;  // 初始化为最小值
    int nums[100];

    printf("Input n:");
    scanf("%d", &n);

    printf("Input %d numbers:", n);
    for (i = 0; i < n; ++i) {
        scanf("%d", &nums[i]);

        if (nums[i] > maxNum) maxNum = nums[i];  // 更新最大值
        if (nums[i] < minNum) minNum = nums[i];  // 更新最小值
    }

    printf("maxNum=%4d", maxNum);
    printf(",minNum=%4d\n", minNum);

    int g = gcd(maxNum, minNum);
    printf("%d", g);

    return 0;
}

首先从键盘输入 n,然后创建一个 nums 数组来保存输入的数字。在输入数字的过程中,同时更新最大值和最小值。最后分别输出最大值和最小值,并计算它们的最大公约数并输出。

该回答通过自己思路及引用到GPTᴼᴾᴱᴺᴬᴵ搜索,得到内容具体如下:
以下是求解最大数、最小数和最大公约数的C语言代码:

#include <stdio.h>

// 求最大公约数
int gcd(int a, int b) {
    if (b == 0) {
        return a;
    }
    return gcd(b, a % b);
}

int main() {
    int n, num, maxNum = 0, minNum = 0x7fffffff;  // 初始化为整型最小值
    printf("Input n: ");
    scanf("%d", &n);
    printf("Input %d numbers: ", n);
    for (int i = 1; i <= n; i++) {
        scanf("%d", &num);
        if (num > maxNum) {
            maxNum = num;
        }
        if (num < minNum) {
            minNum = num;
        }
    }
    printf("maxNum=%4d,minNum=%4d\n", maxNum, minNum);
    printf("%d", gcd(maxNum, minNum));
    return 0;
}

在上述代码中,我们首先读取用户输入的整数n,表示输入的正整数个数。然后,我们使用for循环依次读取n个正整数,并在读取过程中更新最大数和最小数的值。在循环结束后,我们使用gcd函数计算最大数和最小数的最大公约数,并输出结果。

需要注意的是,我们在初始化最小数minNum时,使用了整型最小值0x7fffffff。这是因为在输入正整数时,最小值需要被更新为第一个输入的正整数,而0如果被更新为最小值,可能会导致计算最大公约数时出现错误。


如果以上回答对您有所帮助,点击一下采纳该答案~谢谢