程序填空题:再现计算器
上一题中提出如果计算器具有加法,减法,乘法、除法、取余五种运算,那怎么处理呢?小可爱们,你们去编程试了吗?
我们可以通过嵌套这种分支结构,实现对于复杂的逻辑分支的控制。
注意噢,我们的 C 语言中,只有if...else...是一个分支结构的单元。请不要把“if...else if...else”理解成一个分支结构的单元,这种容易造成误解的,这种写法其实是多个分支结构嵌套后的缩略。
接下来,让我们把这种分支结构的嵌套运用到具有加减乘除取余运算的计算器里吧。
#include <stdio.h>
int main() {
int first;
int second;
char op;
scanf("%d%c%d", &first, &op,&second);
if(op=='+')
{
printf("%d%c%d=%d\n", first,op,second,first + second);
}
else if(op=='-')
{
printf("%d%c%d=%d\n",first,op,second, first - second);
}
else if(op=='*')
{
printf("%d%c%d=%d\n", first,op,second,first * second);
}
else if(op=='/')
{
printf("%d%c%d=%d\n", first,op,second,first / second);
}
else
{
printf("%d%c%d=%d\n", first,op,second,first % second);
}
return 0;
}
这么多层的嵌套,看晕了怎么办啊。呜呜,有没有其他的处理方法呢?
我们可以使用多路选择结构switch语句。

让我们动手改一改吧。
### 输入格式:
在一行中输入第一个操作数、运算符和第二个操作数,两个操作数均为整数。
### 输出格式:
输出完整的运算公式。
### 输入样例1:
5-3
### 输出样例1:
5-3=2
### 输入样例2:
5%3
### 输出样例2:
5%3=2
c++
#include <stdio.h>
int main()
{
int first;
int second;
char op;
scanf("%d%c%d", &first, &op,&second);
switch(@@[op](5))
{
case '+':printf("%d%c%d=%d\n", first,op,second,first + second);break;
case @@['-'](3):printf("%d%c%d=%d\n", first,op,second,first - second);@@[break](2);
case '*':printf("%d%c%d=%d\n", first,op,second,first * second);break;
case '/':printf("%d%c%d=%d\n", first,op,second,first / second);break;
default:printf("%d%c%d=%d\n", first,op,second,first % second);
}
return 0;
}
答案:
第1空:op
第2空:'-'
第3空:break
我们可以通过嵌套这种分支结构,实现对于复杂的逻辑分支的控制。
注意噢,我们的 C 语言中,只有if...else...是一个分支结构的单元。请不要把“if...else if...else”理解成一个分支结构的单元,这种容易造成误解的,这种写法其实是多个分支结构嵌套后的缩略。
接下来,让我们把这种分支结构的嵌套运用到具有加减乘除取余运算的计算器里吧。
#include <stdio.h>
int main() {
int first;
int second;
char op;
scanf("%d%c%d", &first, &op,&second);
if(op=='+')
{
printf("%d%c%d=%d\n", first,op,second,first + second);
}
else if(op=='-')
{
printf("%d%c%d=%d\n",first,op,second, first - second);
}
else if(op=='*')
{
printf("%d%c%d=%d\n", first,op,second,first * second);
}
else if(op=='/')
{
printf("%d%c%d=%d\n", first,op,second,first / second);
}
else
{
printf("%d%c%d=%d\n", first,op,second,first % second);
}
return 0;
}
这么多层的嵌套,看晕了怎么办啊。呜呜,有没有其他的处理方法呢?
我们可以使用多路选择结构switch语句。

让我们动手改一改吧。
### 输入格式:
在一行中输入第一个操作数、运算符和第二个操作数,两个操作数均为整数。
### 输出格式:
输出完整的运算公式。
### 输入样例1:
5-3
### 输出样例1:
5-3=2
### 输入样例2:
5%3
### 输出样例2:
5%3=2
c++
#include <stdio.h>
int main()
{
int first;
int second;
char op;
scanf("%d%c%d", &first, &op,&second);
switch(@@[op](5))
{
case '+':printf("%d%c%d=%d\n", first,op,second,first + second);break;
case @@['-'](3):printf("%d%c%d=%d\n", first,op,second,first - second);@@[break](2);
case '*':printf("%d%c%d=%d\n", first,op,second,first * second);break;
case '/':printf("%d%c%d=%d\n", first,op,second,first / second);break;
default:printf("%d%c%d=%d\n", first,op,second,first % second);
}
return 0;
}
答案:
第1空:op
第2空:'-'
第3空:break