分支语言和循环语句
分支语句
- if
- switch
循环语句
- while
- for
- do while
goto语句
什么是语句?
C语言由一个分号;隔开的就是一条语句
C语言如何表示真假
0表示假,非0表示真
if语句
//语法结构
if(表达式)
语句;
if(表达式)
语句1;
else
语句2;
// 多分支
if(表达式1)
语句1;
else if(表达式2)
语句2;
else
语句3;
如要执行多条语句
#include<stdio.h>
int main()
{
if(表达式)
{
语句列表1;
}
else
{
语句列表2;
}
return 0;
}
int main()
{
int age = 20;
if (age >= 18)
printf("成年\n");
else
{
printf("未成年\n");
printf("不能按恋爱\n");
}
/*if (age >= 18)
printf("成年\n");*/
return 0;
}
多分支语句
int main()
{
int age = 60;
if (age < 18)
printf("少年\n");
else if (age >= 18 && age < 26)
printf("青年\n");
else if (age >= 26 && age < 40)
printf("中年\n");
else if (age >= 40 && age < 60)
printf("壮年\n");
else if (age >= 60 && age <= 100)
printf("老年\n");
else
printf("老不死\n");
return 0;
}
判断是否为奇数
int main()
{
int num = 15;
if (num & 2 == 1)
printf("奇数\n");
return 0;
}
判断1-100之间的奇数
int main()
{
int i = 0;
for (i = 1; i <= 100; i++)
{
if (i %2 == 1)
printf("%d",i);
}
return 0;
}
switch语句
switch(整型表达式)
{
语句项;
}
在switch语句中的break,搭配break使用才能实现真正的分支
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;
}
return 0;
}
while 语句
while 语句执行流程:
打印1-10
int main()
{
int i = 1;
while (i <= 10)
{
printf("%d",i);
i++;
}
return 0;
}
在while 循环中,break用于永久的终止循环
int main()
{
int i = 1;
//在while 循环中,break用于永久的终止循环
while (i <= 10)
{
if (i == 5)
break;
printf("%d",i);
i++;
}
return 0;
}
在while 循环中,continue的作用是跳过本次循环continue后边的代码,直接去判断部分,看是否执行下一次循环
int main()
{
int i = 1;
//在while 循环中,continue的作用是跳过本次循环continue后边的代码,直接去判断部分,看是否执行下一次循环
while (i <=10)
{
if (i == 5)
continue;
printf("%d", i);
i++;
}
输入密码,确认密码
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
char password[20] = { 0 };
printf("请输入密码:>");
scanf("%s", password);
printf("请确认密码(Y/N):>");
//清理缓冲区
//getchar();//处理\n
//清理缓冲区的多个字符
int tmp = 0;
while((tmp = getchar()) != '\n')
{
;
}
int ch = getchar();
if (ch == 'Y')
{
printf("确认成功\n");
}
else {
printf("确认失败\n");
}
return 0;
}
getchar scanf 输入函数---->缓冲区----->键盘
只会打印数字
int main()
{
int ch = 0;
while ((ch = getchar()) != EOF)
{
if (ch < '0' || ch>'9')
continue;
putchar(ch);
}
return 0;
}
for循环
语法:
for(表达式1:表达式2:表达式3)
循环语句;
表达式1:初始化部分
表达式2:条件判断部分
表达式3:调整部分
int main()
{
int i = 0;
for (i = 1; i < 10; i++);
{
printf("%d", i);
}
return 0;
}
执行流程
break和continue在for循环中
int main()
{
int i = 0;
for (i = 1; i <= 10; i++)
{
/*if (i == 5)
break;*/
if (i == 5)
continue;//跳过5
printf("%d", i);
}
return 0;
}
for语句的循环控制变量
一些建议:
- 不可在for循环修改循环变量,防止 for循环失去控制
- 建议for语句的循环控制变量的取值采用“前闭后开区间”写法
int main()
{
int arr[10] = { 0 };
int i = 0;
for (i = 0; i <10; i++)
{
printf("%d", arr[i]);
}
return 0;
}
一些for循环的变种
变种1
for(;;)
{
printf("hehe\n");
}
变种2
int x,y;
for(X=0,y=0;x<2&&y<5;++x,y++)
{
printf("hehe/n");
}
return 0;
}
省略
int main()
{
int i = 0;
int j = 0;
for (; i < 3; i++)
{
for (; j < 3; j++)
{
printf("hehe/n");
}
}
}
return 0;
只打印三次hehe
do…while()循环
do语句的语法:
do
循环语句;
while(表达式);
do语句特点
循环至少执行一次,使用场景有限,所有不是经常使用
int main()
{
int i = 1;
do
{
printf("%d", i);
i++;
} while (i <= 10);
return 0;
}
执行流程