C语言入门:分支与循环

 目录

1.0——分支语句 if else

//单分支

//双分支

//多分支

return的意义

2.0——分支语句——switch语句

default:语句

3.0——循环语句——while 循环

getchar()——读取一个字符

putchar()——输出一个字符​

 3.0——循环语句——for 循环

4.0——循环语句——do  while


前言

C语句可分为以下五类

1.表达式语句

2.函数调用语句

3.控制语句

4.复合语句

5.空语句

本文主要为控制语句

控制语句用于控制程序的执行流程,以实现程序的各种结构方式,它们由特定的语句定义符组成,C语言有九种控制语句。

可分为以下三类:

1.条件判断语句也叫分支语句:if语句、switch语句;

2.循环执行语句:do……while语句、while语句、for语句;

3.转向语句:break语句、goto语句、continue语句、return语句。


1.0——分支语句 if else

C语言:结构化的程序设计语言!   顺序结构   选择结构   循环结构

分支语句:if  switch语句  循环语句 while    do while    for   goto

语句:一个分号隔开的就是一条语句;

//单分支

if(表达式)       //表达式非0即为真,0即为假

   语句;

//双分支

if(表达式)  

   语句1;

else(表达式)                                        

   语句2;

//多分支

if(表达式)         

   语句1;

else if (表达式)

   语句2;

else 

   语句3;

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("中老年\n");
	//else if (age >= 80 && age < 100)
	//	printf("老年\n");
	//else
	//	printf("老寿星\n");

	if (age > 100)
		printf("老寿星\n");
	else if (age <= 18)
	{
		printf("青少年\n");
		printf("好好学习\n");
	}
	else if (age <= 30)
		printf("青年\n");
	else if (age <= 50)
		printf("中年\n");
	else if (age <= 100)
		printf("老年\n");

	return 0;
}

 

 

 else 与最近的  if  匹配; 题上所述 if ( if 后跟一条简单语句 else后跟一条简单语句 )第一个if和后面的(if   else)构成一个语句  配对的 if-else 语句可以看成一条简单语句。,即第一个if判断为假不执行,return 0;

以下情况均属于 if 结构嵌套。

  • if 语句体中可以含有 if 语句或 if-else 语句。
  • if-else 语句中的 if 体或者 else 体中含有 if 语句或 if-else 语句。


注意:
1)在嵌套结构中会有多个“if”与多个“else”关键词,每一个“else”都应有对应的“if”相配对。原则:“else”与其前面最近的还未配对的“if”相配对。

2)配对的 if-else 语句可以看成一条简单语句。

3)一条 if 语句也可以看成一条简单语句。

 

 两个语句一样

return的意义

1) 没有返回值的函数为空类型,用void表示。

 2) return 语句可以有多个,可以出现在函数体的任意位置,但是每次调用函数只能有一个 return 语句被执行,所以只有一个返回值(少数的编程语言支持多个返回值,例如Go语言)。

3) 函数一旦遇到 return 语句就立即返回,后面的所有语句都不会被执行到了。从这个角度看,return 语句还有强制结束函数执行的作用。

return 语句是提前结束函数的唯一办法。return 后面可以跟一份数据,表示将这份数据返回到函数外面;return 后面也可以不跟任何数据,表示什么也不返回,仅仅用来结束函数。主函数也是一个函数

return关键字不是专门用于结束循环的,return的功能是结束一个方法。 当一个方法执行到一个return语句时(return关键字后面可以跟变量、常量和表达式),这个方法将会被结束。

2.0——分支语句——switch语句

switch(整形表达式)     switch后必须是整形 或者字符,字符是整型的一种  存储的是Ascll码           

{                                           case后必须是整型常量表达式

    语句项;                          case(整型常量表达式)——决定入口    break——决定出口

}                                                        语句

int main()
{
	int input = 0;
	scanf("%d", &input);
	switch (input)
	{
	//input只是决定从哪里进去
    //break决定出口
	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;
}
int main()
{
	int day = 0;
	scanf("%d", &day);
	switch (day)
	{
	case 1:
	case 2:
	case 3:
	case 4:
	case 5:
		printf("工作日\n");
		break;
	case 6:
	case 7:
		printf("休息日\n");
		break;//最后一个break建议加
	default:
		printf("xxxx\n");
		break;
	}

	return 0;
}

default:语句

int main()
{
	int n = 1;
	int m = 2;
	switch (n)
	{
	case 1:
		m++;
	case 2:
		n++;
	case 3:
		switch (n)//switch允许嵌套使用
		{
		case 1:
			n++;
		case 2:
			m++; n++;
			break;
		}
	case 4:
		m++;
		break;
	default:
		break;
	}
	printf("m = %d, n = %d\n", m, n);

	return 0;
}

 结果:m=5,n=3           break只能跳出自身的switch

编程好习惯

在最后一个 case 语句的后面加上一条 break语句

(之所以这么写是可以避免出现在以前的最后一个 case 语句后面忘了添加 break语句)。

在每个 switch 语句中都放一条default子句是个好习惯,甚至可以在后边再加一个 break 。

3.0——循环语句——while 循环

while(表达式)

{                               表达式为真,循环执行

        循环语句;     表达式为假,循环结束

}

 在while循环中break用于永久终止循环

在while循环中continue跳过本次循环continue后面代码,直接去判断部分,看是否进行下一次循环

getchar()——读取一个字符

正确返回类型是int类型即Ascll值,错误返回EOF——end of file 文件结束标志  EOF本质是 -1

putchar()——输出一个字符

 

 

 getchar发现缓冲区有东西,即\n,就把它调用;所以需要清理缓冲区

再来一个getchar把\n拿走;

 

int main()
{
	char password[20] = { 0 };
	printf("请输入密码:>");
	scanf("%s", password);//假设密码为 123456

	//getchar();//拿走缓冲区剩余的\n——不知最合理的解决方法
	如输入123456 abcdef\n 再次直接确认失败
	scanf读取空格之前的字符
	//
	//处理方法1——清理缓存区
	int temp = 0;
	while ((temp = getchar()) != '\n')
	{
		;
	}


	printf("请确认密码(Y/N):>"); 
	int ch = getchar();
	if ('Y' == ch)
		printf("确认成功\n");
	else
		printf("确认失败\n");
	return 0;

}
#include <stdio.h>
int main()
{
    int ch = 0;
    while ((ch = getchar()) != EOF)
    {
        //读取字符,只打印数字字符
        //48~57 字符0~9的AscII码
        //逻辑或,如果字符ch小于48,或者字符ch大于57,则continue
        if (ch < '0' || ch > '9')
            continue;
        putchar(ch);
    }
    return 0;
}

 3.0——循环语句——for 循环

for(表达式1;表达式2;表达式3)         表达式1为初始化部分,用于初始化循环变量的

{                                                                    表达式2为条件判断部分,用于判断循环时候终止

          循环语句;                                        表达式3为调整部分,用于循环条件的调整

}

for循环中的break也是用于终止循环   continue跳过本次循 环

 

 判断部分省略,判断恒为真;

打印三个hehe  

判断语句中为赋值  赋值0,即为假,不进入循环

 

4.0——循环语句——do  while

 do

         循环语句;

while(表达式);

 break continue

特点:循环语句至少要执行一次;

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值