从键盘输入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如果被更新为最小值,可能会导致计算最大公约数时出现错误。
如果以上回答对您有所帮助,点击一下采纳该答案~谢谢