目录
一、分支语句
1.1 if语句
1.2 switch语句
二、循环语句
2.1 while语句
2.2 for语句
2.3 do while语句
一、分支语句
1.1 if语句
语法结构
if (表达式1)//如果表达式1为真,执行语句1;如果为假,不执行。
语句1;
if(表达式1)//如果表达式1为真,执行语句1;如果为假,执行语句2。
语句1;
else
语句2;
//多分支
if(表达式1)//如果表达式1为真,执行语句1;如果为假,判断表达式2。
语句1;
else if(表达式2)//如果表达式2为真,执行语句2;如果为假,执行语句3。
语句2;
else
语句3;
*注意:语句n为一条代码;若为多条应使用大括号使多条代码形成代码块。
if 判断的时候,常会搞错 = 与 ==;= 为赋值, == 为判断相等。
else会和最近的if进行匹配。不良的代码风格会造成悬空else,使得程序的可读性下降,甚至造成误解。
在编写代码时不能写连续的两个符号,应该改用交并符号连接。
1.2 switch语句
往往用于多个分支语句的情况。
语法结构
switch(整形表达式)
{
语句项;//是一些case语句
}
示例:
#include<stdio.h>
int main()
{
int day ;//必须定义为整形或字符型
scanf_s("%d", &day);
switch (day)
{
case 1://case后必须是整型常量表达式
printf("星期1\n");
break;//语句可以不写,继续向下执行
case 2:
printf("星期2\n");
break;
case 3:
printf("星期3\n");
break;
case 4:
printf("星期4\n");
break;
case 5:
printf("星期5\n");
break;
case 6:
printf("星期6\n");
break;
case 7:
printf("星期7\n");
break;
default://case 列举不完所有的情况,需要加入default,用于其他没有列举到的情况的分支。
printf("输入错误\n");
break;
}
return 0;
}
switch语句一般需要使用:
1)break:跳出分支语句
case 判断后,如果后面没有break 就会一直往下执行,直到出现或语句结束。
在switch镶嵌语句中,break只会跳出它所在的switch。
2)default:
case 列举不完所有的情况,需要加入default,用于其他没有列举到的情况的分支。
3)case 后面要加整型常量表达式,可以是字符(case语句后放整形结果的常量表达式)
4)case 可以合并。
5)switch 可以嵌套其他语句 ,但是break只会跳出他所在的switch语句。
二、循环语句
2.1 while语句
语法结构
while(表达式)
{
循环语句;
}
while的使用:
1)break:直接跳出循环。
2)continue:后续语句不再执行,跳过本次循环,再从while开始判断,执行。
*注意continue后的语句不再执行,如果只是想跳过,应把表达式变量放在continue前面,防止陷入死循环。
3)while内部有函数,会自动执行函数。
示例:
忽略数字字符,只打印其他字符。
#include<stdio.h>
int main()
{
char ch = '\0';
while ((ch = getchar()) != EOF)//EOF,为End Of File的缩写,通常在文本的最后存在此字符表示资料结束。
{
if (ch >'0' && ch < '9') //ch 的ASCII值小于0的值或者大于9的
continue;
putchar(ch);
}
return 0;
}
输入缓冲区:
有许多输入函数,例如scanf;getchar。它们通过我们使用键盘输入。但其实在我们使用键盘输入的时候,并不是直接操纵这是先输入到输入缓冲区,然后当程序运行到输入函数时,会自动的从输入缓冲区中取数。
清空输入缓冲区的方法:
1)如果输入缓冲区只有一个字符'\n',那么很简单,只需要在后面的getchar()前面加一个getchar()函数读取\n就可以。
2)但是,一般情况下 \n前面还有其他字符,我们要清空所有的输入缓冲区,需要写一个循环:
int ch = 0;
while ((ch = getchar() != '\n'))
{
; //只有一个分号的意思是 执行while 括号内的程序
}
2.2 for语句
语法结构
for (初始化; 判断; 调整)
{
语句; //判断成功需要执行
}
1)break作用:
判断成功时,直接跳出循环。
2)continue作用:
判断成功时,直接跳过下面执行部分,进入下一步。
while循环直接跳过本次循环,可能会跳过i++但是for会主动调整i的值。
3)不要再for内部对循环变量进行调整,否则就可能会出错。
4)for语句的循环控制变量,初始化最好使用闭区间,判断最好使用开区间。
2.3 do while
do
循环语句;
while(表达式);