本章要学习的内容:
1.关键字——if,else,while,do while,continue,break,case,default,goto;
2.C语言的条件运算符——&&,||,?,:,;
3.函数——getchar(),putchar();
4.如何使用if和if else语句,如何嵌套它们;
5.在更复杂的测试表达式中用逻辑运算符组合关机表达式;
7.switch语句;
8.注意在C语言中,0为假,非0为真
2. if,else语句的双分支
2.1.if,else语句的三分支
int main() {
int num = 0;//初始值
scanf("%d", &num);
//num在大于等于10到小于等于20之间
//输出结果×2
if (num >=10 && num <=20) {
printf("%d\n", 2 * num);
}
//num在大于等于20到小于等于30之间
//输出结果×3
else if (num >20 && num <=30) {
printf("%d\n", 3 * num);
}
//num在其他情况下
//输出本身
else {
printf("%d\n", num);
}
return 0;
}
注意,中间的else if 语句可以多次使用,没有限制
2.2 悬空else
int main(){
int x = 2;
int y = 4;
//表达式1
if (x == 1)//不成立
//如果表达式1没有执行,那么表达式2也不会执行
//表达式2
if (y == 2)
printf("hehe\n");
else
printf("haha\n");
//else语句总是和它距离最近的if语句匹配
//被大括号,括起来的除外
return 0;
}
3.switch语句 switch(整型表达式) { 语句项; }——case 整形常量表达式: 语句;
输入一个数,输出星期几
int main() {
int day = 0;
scanf("%d", &day);
//(day)是入口
//()里面的必须是整形
switch (day) {
//case()里面的也必须是整形
case(1):
printf("Sunday\n");
break;
//break是每一个case语句的出口
case(2):
printf("Tuesday\n");
break;
case(3):
printf("Wednesday\n");
break;
case(4):
printf("Thursday\n");
break;
case(5):
printf("Friday\n");
break;
case(6):
printf("Saturday\n");
break;
case(7):
printf("Monday\n");
break;
//最后的break最好加上,这是一个好习惯
default:
printf("选择错误,重新选择!\n");
break;
}
return 0;
}
还有一种输入特定的范围给出反馈情况
int main()
{
int day = 0;
switch(day)
{
case 1:
case 2:
case 3:
case 4:
case 5:
printf("weekday\n");
break;
//1到5之间是weekday
case 6:
case 7:
printf("weekend\n");
break;
//6到7之间是weekend
default:
printf("选择错误,重新选择!\n");
break;
}
return 0;
}
default语句的作用:
当 switch表达式的值并不匹配所有case标签的值时,这个default子句后面的语句就会执行。 所以,每个switch语句中只能出现一条default子句。 但是它可以出现在语句列表的任何位置,而且语句流会像贯穿一个case标签一样贯穿default子句
4:
while循环:while(表达式) {循环语句;}
如果表达式为真(严谨的说是非0),执行语句项,然后再次判断表达式,在语句项为假(0)之前,循环的判断和执行一直重复进行,每次循环都被成为迭代
打印1到10之间的数
int main() {
int a = 1;
while (a <= 10) {
printf("%d ", a);
//a = a + 1;
//a+=1;
//a++;
//以上三种语句都可以
}
return 0;
}
break在while循环中的作用
当自行定义表达式的时候,只要遇到break,就停止后期的所有的循环,直接终止循环。 所以:while中的 break是用于永久终止循环的
int main() {
int a = 1;
while (a <= 10) {
printf("%d ", a);
if (a == 5)
break;
//a = a + 1;
//a+=1;
//a++;
//以上三种语句都可以
}
return 0;
}
continue在while循环中的作用
continue是用于终止本次循环的,也就是本次循环中continue后边的代码不会再执行,而是直接 跳转到while语句的判断部分。进行下一次循环的入口判断
int main() {
int a = 1;
while (a <= 10) {
if (a == 5)
continue;
printf("%d ", a);
a = a + 1;
}
return 0;
}
5.
getchar在C语言中的作用
getchar的返回类型为:int
getchar的功能:
从键盘读取一个字符,并且返回这个字符对应的ASCII码值
注意事项:
空格,回车,tab都被认定为字符,且每次只能读取一个字符
getchar读取错误或者读取到文件结束标志的时候(end of file),会返回EOF(EOF定义为 -1)
int main() {
int ch = 0;//初始化
// 从getchar读取放到ch中,如果不等于EOF就打印
//相反如果读取等于EOF那么就结束
while ((ch = getchar()) != EOF) {
putcher(ch);
}
return 0;
}
实际意义:
int main() {
int ch = 0; {
char password[20] = { 0 };
printf("请输入门禁");
scanf("%s", password);
int tmp = 0;
//tmp在这里用来检测是否读取到转义字符(\n)
//如果读到了就结束,如果没有读到就继续
//清理缓冲区
while ((tmp = getchar()) != '\n') {
;//空语句
}
//1为真,0为假
printf("请确认密码,(1/0)");
int doorpassword = getchar();
if (doorpassword == '1') {
printf("\a确认成功");
}
else{
printf("\a确认失败");
}
}
return 0;
}
6:
for循环
for(表达式1;表达式2;表达式3)
循环语句;
具体:
表达式1:为初始化部分,用于初始化循环变量的
表达式2:为条件判断部分,用于判断 循环时候终止
表达式3:为调整部分,用于循环条件的调整
代码:
int main() {
int a = 0;//初始化
for (a = 1; a <= 10; a++) {
printf("%d ", a);
}
return 0;
}
第一步:从表达式1 开始,a=1
第二部:表达式2:a判断是否小于等于10,
第三步:如果a小于10就打印a,如果a等于10就结束
第四步:表达式3:调整,++就是加1
重复2到4
6.1:
break也可以用在for循环中
int main() {
int a = 0;//初始化
for (a = 1; a <= 10; a++) {
if (a == 5) {
break;
}
//a等于5直接结束
printf("%d ", a);
}
return 0;
}
6.2:
continue在for循环中的作用:跳过continue后面的代码
int main() {
int a = 0;
for (a = 1; a <= 10; a++) {
if (a == 5) {
continue;
}
//当a等于5的时候,跳过下面的代码,继续执行,直到结束
printf("%d ", a);//跳过再继续执行
}
return 0;
}
注意事项:
尽量不要在for循环内部进行调整,会产生bug
7.do while循环的语法格式,先执行后判断
do
//循环语句;
while(表达式);
至少执行一次,
int main() {
int a = 1;//初始
do {
printf("%d ", a);//先打印
a++; //调整部分
} while (a <= 10); //判断部分
return 0;
}
7.1continue在do while循环中的作用
int main() {
int a = 0;
do {
if (a == 5)
continue;
printf("%d ", a);
a++;
} while (a <= 10);
return 0;
}
当a等于5的时候,continue语句会跳过下面的语句,并开始下一轮,然而下一轮的开始a还是5,所以会一直死循环
7.2
break在do while循环中的作用
int main() {
int a = 0;
do {
if (a == 5)
break;
printf("%d ", a);
a++;
} while (a <= 10);
return 0;
}
当a等于5的时候结束这段代码,需要注意的是,a等于5的时候没有打印,所以只会显示0到4