从键盘输入两个正整数,求他们的最大公约数并输出,要求:本题不限制求公约数的算法,但如果键盘输入数据为0或者负数,要给出错误提示,
时间: 2024-12-23 17:14:53 浏览: 0
求两个正整数的最大公约数。-c语言程序设计课件
首先,我们需要编写一个程序来接收用户的输入,然后检查这两个数字是否为正整数。如果输入的是0或负数,我们会显示错误信息。接下来,我们可以使用欧几里得算法(辗转相除法)来计算两个数的最大公约数(GCD)。下面是C语言代码实现:
```c
#include <stdio.h>
// 欧几里得算法求最大公约数
int gcd(int a, int b) {
if (b == 0)
return a;
else
return gcd(b, a % b);
}
int main() {
int num1, num2;
// 输入两个整数
printf("请输入两个正整数:\n");
while(scanf("%d %d", &num1, &num2) != 2) { // 如果读取不成功(如输入非数字或负数)
if (feof(stdin)) { // 判断是否为文件结束符,通常意味着用户中断了输入
perror("Error reading input");
break; // 中断循环
} else {
printf("错误!请输入两个正整数。\n");
continue; // 继续请求输入
}
}
// 检查输入是否为正整数
if (num1 <= 0 || num2 <= 0) {
printf("错误!输入的数字必须是正整数。\n");
return 1;
}
// 计算并输出最大公约数
int result = gcd(num1, num2);
printf("这两个数的最大公约数是:%d\n", result);
return 0;
}
```
阅读全文