学习C语言的第二关 :分支,循环语句和跳转语句等...

11 篇文章 1 订阅

本章要学习的内容:

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

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值