回顾:
sizeof 取内存字节数
= += &= |=
+ - * / %
++ --
&& || !
> < >= <= == !=
if(a == 1)
& | ~ ^ << >>
?:
C语言的流程控制成分
分支
if else
if(条件表达式)
{
条件表达式为真要执行的语句
if()
{}
esle
{}
}
else //不要(条件)
{
条件表达式为不为真要执行的语句
}
1. 不要 在if 条件表达式后 加分号
2. else 后面 不要加条件
3. if else 可以执行多条语句,要用大括号 括起来,如果没有括号只执行离if 或者else 最近的语句 ,建议 一条语句也加上{}
4. if 可以单独使用 else 一定跟某一个if结合,在同一范围找到最近的if 结合
5.if else 还可以嵌套if else
/*
输入一个数 判断这个数 是
0 负数 正数
[练习]
输入一个成绩 0 - 100
100 - 80 等级A
79 - 60 等级B
59 - 0 等级C
输出等级,最好考虑输入错误成绩的情况
*/
int score = 0; //1. 输入一个成绩 printf("输入一个成绩:"); scanf("%d",&score); if(score <0 || score>100) { printf("成绩不对 "); } else if(score >= 80) { printf("A "); } else if(score >= 60) { printf("B "); } else { printf("C "); }
float w = 0; float h = 0; //1. 输入身高体重 printf("输入身高:"); scanf("%f",&h); printf("输入体重:"); scanf("%f",&w); float healthRate = w /(h*h); if(healthRate <=25) { printf("身材不错! "); } else if(healthRate <=30) { printf("有点小胖 "); } else if(healthRate <=35) { printf("少吃点,减肥 "); } else if(healthRate <=40) { printf("中午别吃了 "); } else { printf("拨120 "); }
if 单路分支
if else 双路分支
if 多路分支
else if
else if
switch(条件) break; default:
{
case 常量1:
case 常量2:
case 常量3:
case 常量4:
}
1. switch后的条件可以是一个表达式,运算后是整数
2. case 后只能是一个整数,常量
3. case 里面有break语句,如果没有,会执行后面的case语句,直到遇到break
4. default 所有case 值都不匹配 执行default 里面的语句
defalut 不一定写最后
int num = 0; //输入数字 printf("输入调休的数字:"); scanf("%d",&num); switch(num) { case 1: printf("周一休息 "); break; case 2: printf("周二休息 "); break; case 3: printf("周三休息 "); //break; case 4: printf("周四休息 "); //break; case 5: printf("周五休息 "); //break; case 6: printf("周六休息 "); break; case 7: printf("周日休息 "); // break; default: printf("你输入的数字不对 "); break; }
[练习 运算器] 可以实现 + - * / %
输入 一个 表达式 20 / 4
程序输出表达式的 结果 5
int a = 0; char op = 0; int b = 0; printf("输入表达式:"); scanf("%d%c%d",&a,&op,&b); switch(op) { case '+': printf("%d %c %d = %d ",a,op,b,a+b); break; default: printf("运算符不对 "); break; }
循环语句
for(表达式1;表达式2;表达式3)
{
//循环体,需要重复执行的代码
}
表达式1 : 初始化控制变量,for中只执行一次
表达式2 : 判断循环条件是否为真 i<100 只有循环条件为真,才会执行循环的代码,否则循环结束
表达式3: 循环控制变量 增量语句
for(int i = 0;i<100;i++)
{}
for(char c='a';c<='z';c++) { printf("%c ",c); }
int passwd = 0; for(;passwd != 123456;) { printf("请输入密码:"); scanf("%d",&passwd); } printf("密码正确 ");
4. 死循环
循环控制条件永远为真
5. break; 跳出循环
只要在循环体里执行到break;就会跳出循环
int sum = 0; int i =1; for (;;) { sum = sum + i; if(sum>1000){ break; } i++; } printf("%d ",i);