一.if语句
1.单分支结构
格式1: if(<表达式>)语句1; //语句1,
说明:只一条语句。 如果表达式为真, 执行语句1; 否则什么都不做;
格式2: if(<表达式>)
{
语句块1;
}
2. 双分支结构 if… else语句
格式: if (<表达式>)
语句1;
else
语句2;
说明: 如果表达式为真, 执行语句1; 否则执行语句2
else子句是if语句的一部分,它不能作为语句单独使用, 必须与if配对使用。
3.多分支结构 if … else if 语句
格式:
if()
{
语句块1;
}
else if()
{
语句块2;
}
…
else 是不能跟条件的
{
语句块n;
}
格式说明
1.表达式一般为逻辑表达式或关系表达式, 也可以是任意的数值类型。
2.else子句不能脱离if子句而存在, 下面写法是错误的。
4.if语句的嵌套
else与if必须成对出现, 且else总是与最近的一个未配对的 if 配对
如果 if与else的数目不同, 为实现指定的操作, 可以加花括号来确定配对关系。
内层的选择结构必须完整地嵌套在外层的选择结构内, 两者不允许交叉。
书写选择结构时:
缩进 使程序层次分明
花括号{} 逻辑明确 代码易读、
例如 判断输入的字符是数字还是字母
#include <stdio.h>
void main()
{
char a=0;
printf("请输入一个字符
");
scanf("%c",&a);
if (a>='0' && a<='9')
{
printf("你输入的是数字%c",a);
}
else if(( a>='A'&&a<='Z')||(a>='a'&&a<='z'))
{
printf("你输入的是字母%c",a);
}
else
{
printf("你输入的是其他字符");
}
}
5.switch语句
也称开关语句。多选一,同多分支类似 但是可读性比多分支强 一般做菜单程序等使用
格式: switch(表达式)
{
case 常量表达式1: 语句组1;
break;
case 常量表达式2: 语句组2;
break;
……
case 常量表达式n: 语句组n;
break;
default 语句n+1;
}
说明:各个case包括(default)的出现次序可以任意。在每个case分支都带有break的情况下, case次序不影响执行结果。
case 和 default的 顺序 可以任意
不能用浮点型是因为 浮点数不可以用来精确比较
例如 写一个计算器的程序 方法一
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
/加
double get_sum( double num1, double num2)
{
return num1+num2;
}
//减
double get_sub( double num1, double num2)
{
return num1-num2;
}
//乘
double get_mul( double num1, double num2)
{
return num1*num2;
}
//除
double get_div( double num1, double num2)
{
if (num2==0)
{
printf("语法错误");
exit(0);
}
else
{
return num1/num2;
}
}
//幂
int get_aaa( int num1, int num2)
{
return pow(num1,num2);
}
//取余
int get_xxx( int num1, int num2)
{
return num1%num2;
}
void main()
{
float num1=0;
float num2=0;
char ch=0;
double m=0;
double n=0;
scanf("%f%c%f",&num1,&ch,&num2);
switch (ch)
{
case '+': m=get_sum(num1,num2);
break;
case '-': m=get_sub(num1,num2);
break;
case '*': m=get_mul(num1,num2);
break;
case '/': m=get_div(num1,num2);
break;
case '%': m=get_xxx(num1,num2);
break;
case '$': m=get_aaa(num1,num2);
break;
default : printf("输入运算符错误");
}
printf("num1%cnum2=%.2lf",ch ,m);
}
//写一个计算器程序 方法二
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
void main()
{
float num1=0;
float num2=0;
char ch=0;
double m=0;
double n=0;
int flag=0;
int x=0;
int y=0;
while(1)
{
printf("请输入要计算的运算符
");
scanf("%f%c%f",&num1,&ch,&num2);
switch (ch)
{
case '+': m=num1+num2;
break;
case '-': m=num1-num2;
break;
case '*': m=num1*num2;
break;
case '/': x==0?(flag=1):(m=num1/num2);
break;
case '%': flag=2;
break;
case '$': y==0?(flag=3):(m=pow(num1,num2));
break;
default : flag=4;
}
switch (flag)
{
case '1': printf("除数不能为0
");
break;
case '2': printf("取余不能是小数
");
break;
case '3': printf("底数不能为0
");
break;
case '4': printf("运算符错误
");
break;
default: printf("num1%cnum2=%.2lf
",ch ,m);
}
}
}