题目
从标准输入读入两个整数 a、b,依次输出和、差、积、整数商;若 b 为 0,不要做除法。
输入格式:一行输入两个整数 a 和 b,以空格分隔。
输出格式:依次分行输出和、差、积与整除商;若除数为 0,商的部分输出提示说明。
数据范围与约定:-109 ≤ a, b ≤ 109。
思路与算法
1. 算术运算与表达式
和、差、积直接通过算术运算符 +、-、* 求解并输出。在 C 语言中,两个整型相除 / 结果为截断取整(丢弃余数)。
2. 关键防御:除以零检查
在执行除法 a / b 之前,必须显式判断除数 b != 0。如果除数为 0,计算机底层会触发浮点异常(SIGFPE)导致程序异常崩溃。
3. 输入返回值校验scanf 返回成功读入的数据项数,本题需匹配读取 2 个整数。严格检查 scanf(...) == 2 是防御性编程的好习惯。
完整程序
#include <stdio.h>
int main(void)
{
int a, b;
if (scanf("%d %d", &a, &b) != 2) {
return 1;
}
printf("和: %d\n", a + b);
printf("差: %d\n", a - b);
printf("积: %d\n", a * b);
// 关键防御:除数不能为 0,防止触发浮点异常导致程序崩溃
if (b != 0) {
printf("商: %d\n", a / b);
} else {
printf("商: 除数为 0,无法整除\n");
}
return 0;
}运行示例
输入:
7 2输出:
和: 9
差: 5
积: 14
商: 3