题目

读入两个整数 ab 和一个字符运算符(+-*/),输出运算结果;除法时若 b 为 0 则提示错误。

思路

本题要做一个小计算器:读两个数和一个运算符,算出四则运算结果。

先读入 a、运算符字符 op、再读 b。若运算符是除法,必须先判断 b!=0,否则不能除。再用 switch(op) 或一组 if-else 分别处理 + - * /;遇到未知符号可以提示错误。

解题分析

运算符是单个字符,switch 很合适;default 处理未知符号。除法前检查 b==0,与第 1 题相同。

完整程序

#include <stdio.h>

int main(void)
{
    int a, b;
    char op;
    if (scanf("%d %d %c", &a, &b, &op) != 3) {
        return 1;
    }
    switch (op) {
    case '+':
        printf("%d\n", a + b);
        break;
    case '-':
        printf("%d\n", a - b);
        break;
    case '*':
        printf("%d\n", a * b);
        break;
    case '/':
        if (b != 0) {
            printf("%d\n", a / b);
        } else {
            printf("除数为 0\n");
        }
        break;
    default:
        printf("未知运算符\n");
        break;
    }
    return 0;
}

运行示例

输入:

10 3 *

输出:

30

其它写法

下面每种写法都是完整程序,输入输出格式与正文一致,便于对照。

if-else 代替 switch

程序:

#include <stdio.h>

int main(void)
{
    int a, b;
    char op;
    if (scanf("%d %d %c", &a, &b, &op) != 3) {
        return 1;
    }
    if (op == '+') {
        printf("%d\n", a + b);
    } else if (op == '-') {
        printf("%d\n", a - b);
    } else if (op == '*') {
        printf("%d\n", a * b);
    } else if (op == '/') {
        if (b != 0) {
            printf("%d\n", a / b);
        } else {
            printf("除数为 0\n");
        }
    } else {
        printf("未知运算符\n");
    }
    return 0;
}

运行示例

输入:

10 3 *

输出:

30