#include <stdio.h>
int main(void)
{
double value1,value2;
char op;
printf("Type in an expression:");
scanf("%lf%c%lf",&value1,&op,&value2);
if(op=='+'){
printf("=%.2f\n",value1+value2);
}else if(op=='-'){
printf("=%.2f\n",value1-value2);
}else if(op=='*'){
printf("=%.2f\n",value1*value2);
}else if(op=='/'){
if(value2!=0){
printf("=%.2f\n",value1/value2);
}else{
printf("Divisor can not be 0!\n");
}
}else{
printf("Unknown operator!\n");
}
return 0;
}
本章节是介绍C语言中的分支语句的,有以下几种语句。
if(); if-else;else if();
switch();
这里先介绍if语句
if-else语句
一般形式:
if(表达式)
语句1;
else
语句2;
流程图
执行流程:先求解表达式,如果表达式为“真”,就执行语句1;否则(即表达式的值为“假”),就执行语句2。语句1和语句2总要执行一个,但是不会都执行。
if()语句
一般形式:
if(表达式)
语句1;
流程图
执行流程:先求解表达式,如果表达式的值为“真”,就执行语句1;否则(即表达式的值为“假”),就什么也不做。
else-if()语句
一般形式:
if(表达式1)
语句1;
else if(表达式2)
语句2;
……
else if(表达式n-1)
语句n-1;
else
语句n;
执行流程:首先求解表达式1,如果表达式1的值为“真”,则执行语句1,并结束整个if语句的执行,否则,求解表达式2……最后的else处理给出条件都不满足的情况,即表达式1,表达式2,……表达式n-1的值都为“假”时,执行语句n。
if-else语句嵌套
一般形式:
if(表达式1)
if(表达式2)语句1;
else 语句2;
else
if(表达式3)语句3;
else 语句4;
else和if的匹配准则:else与最靠近它的,没有与别的else匹配过得if相匹配。
#include <stdio.h>
int main(void)
{
int value1,value2;
char op;
printf("Type in an expression:");
scanf("%d%c%d",&value1,&op,&value2);
switch(op){
case '+':
printf("=%d\n",value1+value2);
break;
case '-':
printf("=%d\n",value1-value2);
break;
case '*':
printf("=%d\n",value1*value2);
break;
case '/':
if(value2!=0){
printf("=%d\n",value1/value2);
}else{
printf("Divisor can not be 0!\n");
}
break;
case '%':
if(value2!=0){
printf("=%d\n",value1%value2);
}else{
printf("Divisor can not be 0!\n");
}
break;
default:
printf("Unknown operator\n");
break;
}
return 0;
}
switch()语句
一般形式
switch(表达式){
case 常量表达式1: 语句段1;break;
case 常量表达式2: 语句段2;break;
………………
case 常量表达式n: 语句段n;break;
default: break;
执行流程:首先求解表达式,如果表达式的值与某个常量表达式的值相等,则执行该常量表达式后的相应语句段,如果表达式的值与任何一个常量表达式的值都不相等,则执行default后的语句段,最后执行break语句,跳出switch语句。
注意:
1.在switch语句中,表达式和常量表达式的值一般是整形或字符型,所有的常量表达式的值都不能相等。每个语句段都可以包括一条或多条语句,也可以为空语句。
2.switch语句中,default可以省略,如果省略了default,当表达式的值与任何一个常量表达式的值都不相等时,就什么也不执行。
3.在switch语句中不使用break语句:
break语句在switch语句中是可选的,不使用break语句的switch语句是:
switch(表达式){
case 常量表达式1: 语句段1;
case 常量表达式2: 语句段2;
…………
case 常量表达式n: 语句段n;
default: 语句段n+1;
}
不使用break时,如果表达式的值与常量表达式2的值相等,不但执行语句段2,还执行其后的所有语句,即执行语句段2——语句段n-1。
#include <stdio.h>
int main(void)
{ char ch;
int first=1,k;
printf("Enter 8 characters:");
for(k=1;k<=8;k++){
ch=getchar();
if(first==1){
putchar(ch);
first=0;
}else{
putchar('-');
putchar(ch);
}
}
}
字符型数据的输入和输出
字符输入函数getchar()
一般调用形式 ch=getchar();
其功能:从键盘输入一个字符,并且赋值给变量ch;
字符输出函数putchar()
一般调用形式 putchar(输出参数);
其功能:输出参数是字符型变量或者字符型常量。