程序结构:
1、顺序结构:就是一直按照顺序执行下来;
2、分支结构:<1>if(表达式/常量/变量){语句块}
原理:1.先计算小括号中的表达式的值 如果是真就会执行后面大括号中的语句块 ,如果为假就不会执行后面的大括号的语句块;
<2> if(表达式1){} else{if(表达式2){}} 不管表达式为真还是为假都会执行一个语句;
第一个例子游戏是不是5;
int num=0;
printf("请输入一个数:\n",num) ;
scanf("%d",&num);
if(num == 5){
printf("恭喜你!\n");
}
else{
if(num>5){
printf("大于5了!\n");
}
else{
printf("小于5了!\n");
}
}
第二个例子 判断一个学生成绩的等级;
#include<stdio.h>
int main(){
int score=0;
printf(“请输入一个成绩!\n”);
scanf(“%d”,&score);
if(score<0 && score>100){
printf(“成绩不合法\n”);
}else if(score>=0 || score<=59){
printf(“E\n”);
}else if(score>=69){
printf(“D\n”);
}else if(score>=79){
printf(“C\n”);
}else if(score>=89){
printf(“B\n”);
} else{
printf(“A\n”);
}
return = 0 ;
}
if语句的注意事项 如果写成if();后面没有大括号 那么它是一个空语句 但没错;如果if之后的代码块,如果只有一句话则可以省略大括号 例如
int a=3 ;
if(a>2);
printf("a>2\n");它同样可以运行 省略了大括号;
永真式和永假式:if(1){}大括号里的内容永远执行 if(0){}大括号里的内容永远不执行
和电脑猜拳游戏的实现:
第一步定义变量、
int computer=-1,player=-1;
第二步,让电脑随机输入一个数存到computer变量里面
computer=arc4random_unicom (3) 这个函数必须引入头文件#include <stdily.h> 这个函数后面括号中的3表示 会随机出来 0 1 2 三个数;
第三步 ,提示用户输入一个数,
printf(“请出拳 0:石头 1:剪刀 2:布\n”)
第四步用户输入一个数让变量player接收用户输入的数
scanf("%d",&player)
第五步校验电脑和用户输入值
if(player<0 || player>2){
printf("你输入的数不合法\n")
return = 0;
}
if((player==2 && computer=0) || (player==1 && computer=2) || (player==0 && computer=1)){
printf(”恭喜你,你赢了\n“)
}else if((computer==2 && player=0) || (computer==1 && player=2) || (computer==0 && player=1)){
printf("很抱歉,你输了\n");
}else{
printf("平局\n");
}
switch语句 格式是 switch(){ case1:语句;case1:语句;case1:语句;default:语句;}
注意事项 1 switch语句的表达式类型: 可以放一个整型的变量;int num=10;switch (num)
可以放一个整型常量;switch(10)
可以放一个返回值是整型的表达式;switch (5+5),num = 5+5
可以放可以转换为int类型的表达式;switch ('a'+'a')(因为是’a‘其实就是97是一个整型);
2.case语句可以有多行语句,可以加括号{},也可以不加
3.break语句可以加也可以不加 ;
4.case语句的格式:case 10: 常量表达式 (中间的空格和冒号都不能省略)
5.case取值可以是常量 case 10:
6.case也可以是常量表达式 case 5 + 5:
7.case的穿透问题,同样适用于default;
8.当default语句放最后时 他后面的break是可以省略的 不是最后就必须加break;
9.case后面不能放实数
case的穿透问题:指某个case语句执行完成后,并没有结束,而直接向下执行其他的case语句 这种现象称为case穿透;
如何防止case穿透呢?我们需呀偶在每一个case语句结束之后,加上一句话break;它表示结束这个switch语句;
if语句与switch语句的转换例子:学生成绩
第一步 首先定义一个变量score
int score;(这里可以不初始化 因为后面要用户输入的)
第二步提示用户输入一个数
printf("请输入一个数\n")
第三步接收用户输入的值存入变量score中
scanf("%d,&score");(这里还要判断是不是0到100的数)
if(score>100 || score<0);
printf("你考这个成绩,你爸妈知道吗\n");
return = 0;
第四步用户输入的值除以十放入另一个变量中
int s=score/10 ;
switch (s){
case0:
case1:
case2:
case3:
case4:
case5:
printf("E\n")
break;
case6:
printf("D"\n);
break;
case7:
printf("C"\n)
break;
case8:
printf("B"\n)
break;
case9:
case10:
printf("A"\n);
break;
default:
break;
}
分支比较多且无法穷尽或进行大量列举是最好用if
如果分之数量不是很多,但是if代码量比较大的时候 可以选用switch
判断季节的程序:
int month;
printf("请输入一个月份:\n");
scanf("%d",&month);
switch (month){
case 12
case 1
case 2
printf("冬季,我喜欢\n");
break;
case 3
case 4
case 5
printf("春季,不错\n");
break;
case 6
case 7
case 8
printf("夏季,我讨厌\n");
break;
case 9
case 10
case 11
printf("秋季,还不错\n");
break;
default:
break;
}
实现计算器加减乘除程序:
第一步定义四个变量
int num1,num2,op,result=-1;
第二步提示用户输入第一个数
printf("请输入第一个数\n");
第三步接收用户输入的数到num1
scanf("%d",&num1);
提示用户输入运算符;
printf("请输入运算符0.+ 1.- 2* 3./\n");
scanf("%d",&op);
printf("请输入第二个数\n");
scanf("%d",&num2);
switch (op){
case 0
result = num1 + num2;
break;
case 1
result = num1 - num2;
break;
case 2
result = num1 * num2;
case 3
result = num1/(float) num2;// 加上float的目的是转换为小数也可以显示出来
break;
default :
break;
printf("%d 和 %d运算的结果 %.2f",num1,num2,result)
break;
}
|
|