<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">------<a target=_blank href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------
</span>
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">
</span>
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">1. 程序结构的分类</span>
顺序结构
选择结构(分支结构)
循环结构:while do···while for
2. if语句
if语句
If(条件表达式){
语句块1;
}
当条件表达式为真时,执行语句块1.
if···else语句
If(条件表达式){
语句块1;
}else{
语句块2
}
当条件表达式为真时,执行语句块1,否则执行语句块2.
if语句的高级用法
If(表达式1){
语句块1;
}else if(表达式2){
语句块2
}else if(表达式3){
语句块3
}
if语句使用注意点:
a. if(条件); //表示什么也不干
b. if语句之后代码块只有一句,可以省略大括号
c. 永真式和永假式
if(1){ } //大括号中永远执行
if(0){ } //大括号中永远不执行
d. if语句结合return语句 在一个函数中,return语句之后的语句都不会执行
e. if作用域问题,从大括号开始到大括号结束
f. if作用域紊乱
eg: if(a==3)
int num=10; //会报错,不允许这样使用
if(a==3){
int num=10; //可以使用
}
if语句判断猜拳游戏代码示例:
#include <stdio.h>
#include <stdlib.h>
int main(int argc, const char * argv[]) {
//定义变量保存计算机出拳结果
int computer=-1;
//定义变量保存用户出拳结果
int player=-1;
//用产生的随机数表示计算机随机出拳的结果
computer=arc4random_uniform(3);
printf("请出拳:0.剪刀 1.石头 2.布\n");
scanf("%d",&player);
//判断玩家是否出拳正确
if (player<0||player>2) {
printf("请按套路出拳!");
}//玩家出拳正确则判断玩家是否赢
else if ((player==0&&computer==3)||(player==1&&computer==0)||(player==3&&computer==1)){
printf("Congratulations!You win!");
}else{
printf("What a pity!You lose!");
}
return 0;
}
3. switch语句
switch语句形式:
switch(表达式){
case 常量表达式1:
语句1;
case 常量表达式2:
语句2;
……
default:语句n+1;
}
case语句穿透问题:case语句执行完成后,并没有结束,而是直接向下执行其他的case语句,防止case穿透需要在每个case语句结束后加上break。
if语句和switch语句可以互相转换
分支比较多且无法穷尽或者进行大量列举的时候尽量使用if。
如果分支不是很多,但是使用if代码量比较大,最好用switch。
使用switch代码示例:
/**
*根据学生分数输出学生成绩等级
*/
#include <stdio.h>
int main(int argc, const char * argv[]) {
//定义一个变量保存学生分数
int score=0;
printf("Please enter the score of studnt:\n");
scanf("%d",&score);
//判断用户输入分数是否合法
if (score<0||score>100) {
printf("You enter an illegal score.");
}
int n=score/10;
//根据n值判断学生等级
switch (n) {
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:
printf("A\n");
break;
case 6:
printf("B\n");
break;
case 7:
printf("C\n");
break;
case 8:
printf("D\n");
break;
case 9:
case 10:
printf("E\n");
break;
default:
break;
}
return 0;
}
4. 循环结构
构成循环的条件:
- 循环控制条件
- 循环体
- 能够让循环结束的语句
while循环
格式:
while(条件表达式){
循环体;
}
如果while条件表达式一开始就不成立,循环中的语句就永远不会执行。
while循环使用注意:
a. 死循环
while(1){
printf("死循环\n");
}
空语句也会死循环:int num=2;
while(num<3);
b. 当一个变量与一个常量进行关系比较时通常把常量写在前面 while(2==num)
c. while后的语句只有一句话时可以省略大括号。
d. while作用域,内部代码块定义的变量在代码块外部不可以访问
e. 作用域紊乱
eg: while(1<3)
int num=5;
do···while语句
格式:do{
循环体;
}while(循环条件)
do···while语句先执行一次循环再判断条件
for循环
格式:
for(表达式1; 表达式2;表达式3){
语句;
}
表达式1:设置初始条件,只执行一次
表达式2:循环条件表达式,判断循环是否继续
表达式3:循环的调整
for循环示例代码:
//打印9*9乘法表
#include <stdio.h>
int main(int argc, const char * argv[]) {
//外层循环,控制行
for (int i=1; i<=9; i++) {
//内层循环,控制列
for (int j=1; j<=i; j++) {
printf("%d*%d=%d\t",i,j,i*j);
}
printf("\n");
}
return 0;
5. break关键字
break和continue都可以用在循环中,用来跳出循环,break还可以用在switch语句中。
注意:break语句对if···else不起作用
在对多层循环中,break只是向外跳一层
6. continue关键字
continue结束本次循环,继续下次循环,用在for,while,do···while等循环体中
代码示例如下:
for (int i=0; i<10; i++) {
if (i==5) {
continue; //i=5的值不会被打印出来,后边的值还会继续打印
}
printf("%d",i);
}