题目

从标准输入读入两个整数 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