1. 控制语句
用于控制程序的执行流程,以实现程序的各种结构方式,它们由特定的语句定义符组成,C语言有九种控制语句。
可分为以下三类:
- 条件判断语句也叫分支语句:if语句、switch语句;
- 循环执行语句:do while语句、while语句、for语句;
- 转向语句:break语句、goto语句、continue语句、return语句。
2. 分支语句(选择语句)
2.1 if语句
2.1.1 单分支语句
#include <stdio.h>
int main()
{
int age = 0;
scanf("%d", &age);
if (age >= 18)
printf("成年\n");
return 0;
}
2.1.2 双分支语句
#include <stdio.h>
int main()
{
int age = 0;
scanf("%d", &age);
if (age >= 18)
printf("成年\n");
else
printf("未成年\n");
return 0;
}
2.1.3 多分支语句
#include <stdio.h>
int main()
{
int age = 0;
scanf("%d", &age);
if (age >= 18)
printf("成年\n");
else if (age >= 18 && age < 30)
printf("青年\n");
else if (age >= 30 && age < 50)
printf("中年\n");
else if (age >= 50 && age < 80)
printf("中老年");
else if (age >= 80 && age < 100)
printf("老年\n");
else
printf("老寿星\n");
return 0;
}
注:if后面默认跟一条语句,如需输出多条语句,需要加{....}
2.1.4 悬空else
#include <stdio.h>
int main()
{
int a = 0;
int b = 2;
if (a == 1)
if (b == 2)
printf("heh\n");
else
printf("haha\n");
}
注:else的匹配:else是和它离的最近的if匹配的。所以此程序的输出不执行if...else..语句,无输出。
2.1.5 判断一个数是否是奇数
#include <stdio.h>
int main()
{
int n = 0;
scanf("%d", &n);
if (n % 2 == 1)
//if(n%2!=0)
{
printf("奇数\n");
}
return 0;
}
2.1.6 输出1~100之间的奇数
//方法一
#include <stdio.h>
int main()
{
int i= 1;
while (i <= 100)
{
printf("%d ", i);
i=i+2;
}
return 0;
}
//方法二
#include <stdio.h>
int main()
{
int i= 1;
while (i <= 100)
{
//对i进行判断,是奇数才打印
if(i%2==1)
printf("%d ", i);
i++;
}
return 0;
}
2.2 switch语句
switch语句也是一种分支语句,常常用于多分支的情况
#include <stdio.h>
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;
}
return 0;
}
有时候我们的需求变了:
输入
1-5
,输出的是
“weekday”;
输入
6-7
,输出
“weekend”
#include <stdio.h>
int main()
{
int day = 0;
scanf("%d", &day);
switch (day)
{
case 1:
case 2:
case 3:
case 4:
case 5:
printf("weekday\n");
break;
case 6:
case 7:
printf("weekend\n");
break;
default:
printf("输入错误\n");
break;
}
return 0;
}
注:default: 写在任何一个 case 标签可以出现的位置。
当 switch 表达式的值并不匹配所有 case 标签的值时,这个 default 子句后面的语句就会执行。
所以,每个switch语句中只能出现一条default子句。
但是它可以出现在语句列表的任何位置,而且语句流会像执行一个case标签一样执行default子句。
3.循环语句
3.1 while循环
//打印1~10
#include <stdio.h>
int main()
{
int i = 1;
while (i <= 10)
{
printf("%d ", i);
i++;
}
return 0;
}
3.1.1 while语句中的break和continue
#include <stdio.h>
int main()
{
int i = 1;
while (i <= 10)
{
if (i == 5)
break;
printf("%d ", i);
i++;
}
return 0;
}
//只打印了1 2 3 4
总结:
break
在
while
循环中的作用:
其实在循环中只要遇到
break
,就停止后期的所有的循环,直接终止循环。
所以:
while
中的
break
是用于
永久
终止循环的。
#include <stdio.h>
int main()
{
int i = 1;
while (i <= 10)
{
if (i == 5)
continue;
printf("%d ", i);
i++;
}
return 0;
}
//打印1 2 3 4后死循环
总结:
continue
在
while
循环中的作用就是:
continue
是用于终止本次循环的,也就是本次循环中
continue
后边的代码不会再执行,
而是直接跳转到
while
语句的判断部分。进行下一次循环的入口判断。
例子1:
#include <stdio.h>
int main()
{
//getchar获取一个字符,putchar打印一个字符
int ch = getchar();
putchar(ch);
return 0;
}
#include <stdio.h>
int main()
{
char password[20] = { 0 };
printf("请输入密码:>");
scanf("%s", password);//123456
printf("请确认密码(Y/N):>");
int ch = getchar();
if ('y' == ch)
printf("确认成功\n");
else
printf("确认失败\n");
return 0;
}
//代码报错愿意:scanf读取123456之后,将\n 默认放入缓冲区中,getchar进行读取
修改后:
#include <stdio.h>
int main()
{
char password[20] = { 0 };
printf("请输入密码:>");
scanf("%s", password);//123456
//方法1
//getchar()处理\n
//方法2
int tmp = 0;
while ((tmp = getchar()) != '\n')
{
;
}
printf("请确认密码(Y/N):>");
int ch = getchar();
if ('y' == ch)
printf("确认成功\n");
else
printf("确认失败\n");
return 0;
}
例子2:
//只打印数字字符,跳过其他字符的
#include <stdio.h>
int main()
{
int ch = '\0';
while ((ch = getchar() )!= EOF)
{
if (ch < '0' || ch>'9')
continue;
putchar(ch);
}
return 0;
}
3.2 for循环
3.2.1 语法
for ( 表达式 1 ; 表达式 2 ; 表达式 3 ) 循环语句 ; 表达式 1 表达式 1 为 初始化部分 ,用于初始化循环变量的。 表达式 2 表达式 2 为 条件判断部分 ,用于判断循环时候终止。 表达式 3 表达式 3 为 调整部分 ,用于循环条件的调整。//打印1~10
#include <stdio.h>
int main()
{
int i = 0;
for (i = 1; i <= 10; i++)
{
printf("%d ", i);
}
return 0;
}
3.2.2 break和continue在for循环中
#include <stdio.h>
int main()
{
int i = 0;
for (i = 1; i <= 10; i++)
{
if (i == 5)
break;
printf("%d ", i);
}
return 0;
}
//打印1 2 3 4
#include <stdio.h>
int main()
{
int i = 0;
for (i = 1; i <= 10; i++)
{
if (i == 5)
continue;
printf("%d ", i);
}
return 0;
}
//打印1 2 3 4 6 7 8 9 10