目录
1.什么是语句
C语句可分为:表达式语句,函数调用语句,控制语句,符合语句,空语句
本文主要讲解控制语句
控制语句用于控制程序的执行流程,以实现程序的各种结构方式,它们有特定的语句定义符组成。C语言有九种控制语句,分为三类:
- 条件判断语句(分支语句):if-else,switch-case;
- 循环执行语句:do while,while,for;
- 转向语句:break,沟通,continue,return;
2.分支语句(选择结构)
2.1 if-else语句
第一种写法(单分支)
if(表达式)
{
语句一
}
else
{
语句二
}
第二种写法(多分支)
if(表达式)
{
语句一
}
else if(表达式)
{
语句二
}
...... ......
else
{
语句n
}
注:0表示假,非0表示真,表达式结果为真,则语句执行
例:将三个整数从大到小输出。
悬空else
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
int a = 1;
int b = 2;
if (0 == a)//常量与变量判断相等时,常量放在左边,变量放在右边,避免出现变量被赋值的错误
if (2 == b)
printf("hehe\n");
else
printf("hehe\n");
return 0;
}
以上代码的输出如下
解释:代码没有输出,因为0==a条件不成立,所以第一个if下的所有子语句都不执行。else总是和离他最近的if匹配,且if-else是一条语句,所以没有输出。这样写的代码一般会给人带来误解,所以不推荐。优化写法如下:
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
int a = 1;
int b = 2;
if (0 == a)//常量与变量判断相等时,常量放在左边,变量放在右边,避免出现变量被赋值的错误
{
if (2 == b)
{
printf("hehe\n");
}
else
{
printf("hehe\n");
}
}
return 0;
}
例题:输出1~100之间所有的奇数
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
int i = 0;
while (i <= 100)
{
if (i % 2 == 1)
{
printf("%d ", i);
}
i++;
}
return 0;
}
输出:
2.2 switch-case语句
写法
switch(表达式)
{
case(整形常量表达式):语句1;
case(整形常量表达式):语句2;
...... ......
case(整形常量表达式):语句n;
default : 语句
}
注:switch-case语句允许嵌套使用
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int n = 1;
int m = 2;
switch (n)//n=1
{
case 1:
m++;//m=3
case 2:
n++;//n=2
case 3:
switch (n)//switch允许嵌套使用
{
case 1:
n++;//n=2,不执行
case 2:
m++; n++;//m=4,n=3
break;
}
case 4:
m++;//m=5
break;
default:
break;
}
printf("m = %d, n = %d\n", m, n);
return 0;
}
例题:判断工作日与休息日
3.循环语句
3.1while循环
while(表达式)//表达式为真,循环执行
{
循环语句
}
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
int i = 1;
while (i <= 10)
{
if (5 == i)
continue;
//当判断i等于5时,continue跳过本次循环后边的代码,不会打印5,也不会执行i++
//导致每次循环i=5,恒小于10,所以该循环为死循环
printf(("%d ", i);
i++;
}
return 0;
}
输出:1 2 3 4 _死循环
break:直接跳出循环
continue:跳过本次循环后边的代码,进行下一次循环的入口判断
while循环的应用
使用while循环清空缓冲区
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
char password[20] = { 0 };
printf("请输入密码:>");
scanf("%s", password);//123456 abcdef\n
int tmp = 0;
while ((tmp = getchar()) != '\n')//处理一串字符直到为\n
{
;//空语句
}
printf("请确认密码(Y/N):>");
int ch = getchar();
if ('Y' == ch)
printf("确认成功\n");
else
printf("确认失败\n");
return 0;
}
getchar函数
读取字符,返回类型是int,读取错误或遇到EOF(end of file文件结束标志)时,返回EOF
只打印数字字符
#include<stdio.h>
int main()
{
int ch = '0';
while ((ch = getchar()) != EOF)
{
if (ch < '0' || ch > '9')
continue;
putchar(ch);
}
return 0;
}