题目
读入两个整数 a、b 和一个字符运算符(+、-、*、/),输出运算结果;除法时若 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