本节学习分支语句和循环语句的使用
分支语句:if 、switch
循环语句:while 、for 、do while
##分支语句
分支语句
if语句
//语法结构
if(表达式)
语句;
if(表达式)
语句1;
else
语句2;
//多分支
if(表达式1)
语句1;
else if(表达式2)
语句2;
else
语句3
//例子
int main()
{
int age=20;
if(age<18)
printf("未成年\n");
else if(age>=18&&age<=28)
printf("青年\n");
else
printf("成年\n");
return 0;
}
如果条件成立,要执行多条语句,应该使用代码块`
int main()
{
if(表达式)
{
语句列表1;
}
else
{
语句列表2;
}
return 0;
}
悬空else
else与其离得最近且未匹配的if进行匹配
#include<stdio.h>
int main()
{
int a = 0;
int b = 2;
if (a == 1)
if (b == 2)
printf("hehe\n");
else
// else
printf("haha\n");
return 0;
}
输出结果:什么都不输出
//注意:适当的使用{}可以使代码的逻辑更加清楚
if 书写形式对比
//代码1 条件成立返回x,不成立返回y
if(condition){
return x;
}
return y;
//代码2 可读性比代码1的好
if(condition)
{
return x
}
else
{
return y;
}
//代码3
int main()
{
int num=4;
if(num=5) //因为=为赋值 ==为判断相等
{
printf("hahao\n");
}
return 0;
}
输出结果:哈哈//为什么?
//改正
if(5==num) //可以写成这样的形式
练习题
判断1-100之间的数是否为奇数
//写法1
int main()
{
int i = 0;
while (i <= 100)
{
if (i % 2 == 1)
printf("%d\n", i);
i++;
}
return 0;
}
//写法2 避开了判断语句
int main()
{
int i = 0;
while (i <= 100)
{
printf("%d\n", i);
i+=2; //运用了算法思想
}
return 0;
}
switch语句
switch语句也是一种分支语句。常用于多分支
int main()
{
int day = 0;
scanf("%s", &day);
if (1 == day)
printf("星期一\n");
else if (2 == day)
printf("星期二\n");
else if (3 == day)
printf("星期三\n");
else if (4 == day)
printf("星期四\n");
//......一个星期有七天,这样写很繁琐
return 0;
}
//改正 使用switch语句写
switch(整型表达式)
{
语句项:
}
//语句项是什么?是一些case语句
case 整型常量表达式
语句;
int main()
{
int day=0;
scanf("%d",&day);
switch(day)
{
case 1:
printf("星期一\n");
break;
case 2:
printf("星期二\n");
break;
case 3:
printf("星期三\n");
break;
case 4:
printf("星期四\n");
break;
case 5:
printf("星期五\n");
break;
case 6:
printf("星期六\n");
break;
case 7:
printf("星期天\n");
break;
default:
printf("输入错误\n");
break;
}
}
循环语句
while循环
for
do while
//while 语法结构
while(表达式)
循环语句;
while语句执行流程:
expr(表达式)、stmt(执行语句)
break结束整个循环,continue结束本次循环
//例如:打印1-10之间的数
int main()
{
int i=1;
while(i<=10)
{
printf("%d\n",i);
i++;
}
return 0;
}
输出结果:1 2 3 4 5 6 7 8 9 10
//延伸
int main()
{
int i=1;
while(i<=10)
{
if(i==5)
//break; 输出结果1 2 3 4 5
//continue; 输出结果1 2 3 4 6
printf("%d\n",i);
i++;
}
return 0;
}
while循环语句
//例子
int main()
{
int ch = 0;
//ctrl+z就会输出
//EOF文件结束标志
while ((ch = getchar()) != EOF) //getchar获取字符,接收键盘输入一个字符(EOF),放入ch
{
putchar(ch);
}
return 0;
}
//getchar 和putchar用法 getchar输入字符,putchar输出字符
/*
int main()
{
int ch=getchar();
putchar(ch);
printf("%c\n",ch);
return 0;
}
*/
for循环
语法
for(表达式1:表达式2:表达式3)
循环语句;
表达式1为初始化部分,用于初始化循环变量、表达式2为条件判断部分,用于判断循环时候终止、表达式3为调整部分,用于循环条件的调整
//使用for循环在屏幕上打印1-10的数字
int main()
{
int i = 0;
for (i = 1; i <= 10; i++)
{
if(i==5)
//break;//输出结果 1 2 3 4
//continue;输出结果1 2 3 4 6 7 8 9 10
printf("%d ", i);
}
return 0;
}
for 循环的变种
//for循环的变种
int main()
{
//变种1
for (;;)
{
printf("haha\n");//for循环的初始化、调整、判断都可以省略
//但for循环的判断部分 如果被省略,那判断条件恒为真
}
//变种2
int x, y;
for (x = 0,y = 0; x < 2 && y < 5; ++x, ++y) //两个变量控制
{
printf("haha\n");
}
return 0;
}
练习题
//请问循环要循环多少次
int main()
{
int i=0;
int k=0;
for(i=0,k=0;k=0;i++,k++)
k++;
return 0;
}
//循环0次 k=0(赋值,不是判断)为假 不进循环
do while循环
//do语句的语法:
do
循环语句;
while(表达式);
int main()
{
int i=1;
do
{
if(i==5)
//break; //输出结果1 2 3 4
//continue; //输出结果 1 2 3 4然后死循环
printf("%d",i);
i++;
}
while(i<=10);
return 0;
}