if 的三种种结构:
顺序结构:默认的流程结构,按照书写顺序执行每一条语句。
选择结构:对给定的条件进行判断,在根据判断结果来决定执行那一段代码。
循环结构:在给定条件成立的情况下,反复执行某一段代码。
1.if的第一种结构:
if(条件)
{
语句1;
语句2;
}
例子 :
#include <stdio.h>
int main()
{
int count = 50;
if(count>=60)
{如果人数大于等于50那么在执行if大括号里面的语句。
printf("开班!!\n");
}
return 0;
}
2.if的第二中语句
if(条件1)
{
语句1;
语句2;
语句3;如果if条件成立那么就执行大括号里面的代码
语句4;
·······;
}
else
{
如果不成立就执行else大括号里面的代码
}
例子:
#include <stdio.h>
int main()
{
int count = 40;
if(count>=50)
{
printf("开班!!\n"); 如果人数成立,就执行if代码
}
else
{
printf("不开班!!\n"); 如果人数不成立,就执行else里面的代码
}
return 0;
}
3.if的低三种结构
if(条件1)
{
语句1;
语句2;
·······;
}
else if(条件2)
{如果条件1成立,那么条件2,3,4大括号里的代码都不运行,但是else if (条件1/2/3/4)这个里面如果有什么数是要计算的
就是说,只要有一个条件成立,其他的条件都不运行
如果4个条件都不运行,才执行else代码。
}
else if(条件3)
{
}
else if(条件4){
}
else
{
}
例子:
#include <stdio.h>
int main()
{
int a = 2;
if(a++>10)先用a得值与10做比较,在做加法运算a++ = 2+1 =3;
{3>10 不成立,所以不运行if A,但此时a的值=3
printf("A\n");
}
if(a++>5)先用a的值和5做比较3>5,在做加法运算,a++ = 3+ 1 = 4
{4>5不成立,所以不运行if B但此时a的值 =4
printf("B\n");
}
if(a++>3)先用a得值和3做比较 4>3 ,在做加法运算,a++ = 4 + 1 = 5
{4>3成立,所以运行,if c
printf("C\n");
}
else
{
printf("D\n");
}
printf("a的值是%d\n",a)
return 0;
}
结果为c a = 5
4.if的第四种结构(不建议使用)
if(条件)
语句1;
注: it a = 10
if(a>1)
printf("A\n");
printf("B\n"); 这个是int main()里面的函数肯定会有,但是和if的printf没有关系
结果为 A B 。
练习:
1/*提示用户输入一个整数score代表分数,根据分数输出等级,(A-E)用两种方式
A:90-100
B:80-89
C:70-79
D:60-69
E: 0-59
#include <stdio.h>
int main()
{
//1.提示用户输出一个分数。
printf("请输出一个分数:\n");
//2.接收用户输出的分数。
int score;
scanf("%d",&score);
/*3.划分等级。
//性能最好,score 80判断完以后肯定如果成立就肯定是b
其他的不用再运行,而判断也就需要一下就行,如果大出80得结果会往上一层if去寻找答案
*/
if(score>=90 && score<=100){
printf("A\n");
}
elseif(score>=80){
printf("B\n");
}
elseif(score>=70){
printf("C\n");
}
elseif(score>=60){
printf("D\n");
}
else {
printf("E\n");
}
/* 性能中等 score 80判断完以后还要再判断一下
score = 90 所以内存会再运行一下。
if(score>=90 && score<=100){
printf("A\n");
}
else if(score>=80 && score<=89){
printf("B\n");
}
else if(score>=70 && score<=79){
printf("C\n");
}
else if(score>=60 && score<=69){
printf("D\n");
}
else {
printf("E\n");
}
*/
/* 性能最差,内存分析的太多,每一步都要进行。
if(score>=90 && score<=100){
printf("A\n");
}
if(score>=80 && score<=89){
printf("B\n");
}
if(score>=70 && score<=79){
printf("C\n");
}
if(score>=60 && score<=69){
printf("D\n");
}
if(score>=0 && score<=59){
printf("E\n");
}
*/
return0;
}
2.输入一个整数mouth代表月份,根据月份输出对应的季节
春季:3. 4. 5
夏季:6. 7. 8
秋季:9.10.11
冬季:12.1. 2
#include <stdio.h>
int main()
{
//1.提示用户输入月份
printf("请输出月份:");
//2.接收用户输入的月份
int mouth;
scanf("%d",&mouth);
//3.输出对应的季节
//每一个if里面都要进行两次的运算,性能中等
if(mouth>=3 && mouth<=5){
printf("春季\n");
}
elseif(mouth>=6 && mouth<=8){
printf("夏季\n");
}
elseif(mouth>=9 && mouth<=11){
printf("秋季\n");
}
else {
printf("冬季\n");
}
/*这种方式,每一个if都要进行运算,所以性能最差
if(mouth>=3 && mouth<=5){
printf("春季\n");
}
if(mouth>=6 && mouth<=8){
printf("夏季\n");
}
if(mouth>=9 && mouth<=11){
printf("秋季\n");
}
if(mouth>=12 || mouth<=2){
printf("冬季\n");
}
*/
return0;
}
3.输入一个整数day代表星期几,根据day的值输出对应的星期几,比如day==1,就输出“星期一”
#include <stdio.h>
int main()
{
//1.提示用户输入一个星期数字
printf("请输入一个数字:");
//2.接收用户输入的数字
int day;
scanf("%d",&day);
//3.分类
if(day ==1){
printf("星期一\n");
}
elseif(day ==2){
printf("星期二\n");
}
elseif(day ==3){
printf("星期三\n");
}
elseif(day ==4){
printf("星期四\n");
}
elseif(day ==5){
printf("星期五\n");
}
elseif(day ==6){
printf("星期六\n");
}
else {
printf("星期日\n");
}
return0;
}
switch语句
格式:
switch(数值):
{
case 数值1:
语句1;
break;
}
{
case 数值2:
语句1;
break;
}
{
case 数值3:
语句1;
break;
}
default:
语句1;
break;
例子:
#include <stdio.h>
int main()
{
int a = 10;
switch(a)
{
case 10:
printf("A\n");
break;
case 5:
printf("B\n");
break;
case 0:
printf("C\n");
break;
printf("D\n");
}
return 0;
}
解释: a的值为10,对应case10 所以输出的结果为A
break一定要带上,如果不带的话,会把之后的case5也一起运行,输出结果会变为A,B
到B得break才会结束,所以break必须要带上。
default可以省略。不写。
如果想在case后定义一个新的变量,如果做加法
int sum = a + b
那么这句要展现作用域,加在大括号里面1
习题:
输入一个整数,score代表分数,根据分数输出等级(A-E)
A:90-100
B:80-89
C:70-79
D: 60-69
E: 0-59
#include <stdio.h>
int main()
{
printf("请输入一个分数(0~100):");
int score;
scanf("%d",&score);
switch (score / 10) {
case 10:
case 9:
printf("A\n");
break;
case 8:
printf("B\n");
break;
case 7:
printf("C\n");
break;
case 6:
printf("D\n");
break;
default:
printf("E\n");
break;
}
return 0;
}
if和switch的区别
1> if语句能完成的语句,switch不能完成
int a = 10;
if (a>5)
{
}
这句值能用if语句,switch是无法使用的
2>有写情况下,if和switch语句是可以互换的
比如
if语句: if(a == 10 || a == 9)
switch语句: case10:
case9:
3>switch能完成的功能,if都可以完成