22.1.15分支与循环语句

目录

分支语句

循环语句

goto 语句



C语言是结构化的程序语言

  1. 顺序结构
  2. 选择结构 if switch
  3. 循环结构 while for do-while

C语句:

  1. 表达式语句
  2. 函数调用语句
  3. 控制语句
  4. 复合语句
  5. 空语句

控制语句

  1. 条件判断语句(分支语句) if switch
  2. 循环执行语句 do while while for
  3. 转向语句 break goto continue return

分支语句

if语句

语法结构:

if(表达式) 表达式结果为真执行语句

语句

if(表达式)

语句1;

else

语句2;

//多分支

if(表达式1)

语句1;

else if(表达式2)

语句2;

else

语句3;

例子

#include<stdio.h>
int main()
{
	int age = 0;
	scanf("%d", &age);
	if (age < 18)
	{
    	printf("青少年\n");
		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");
	}
	return 0;
}

注意:

默认只跟一条语句,如果多条语句要用大括号

0为假,非0为真

一对大括号{}就是一个代码块

悬空else

//haha hehe
#include <stdio.h>

int main()
{
	int a = 0;
	int b = 2;
	if (a == 1)
	{

		if (b == 2)

			printf("hehe\n");

		else

			printf("haha\n");

	}

	return 0;

}

else总是和离它最近的if匹配

if和else合起来叫一条语句

把常量放在等号的左边(更容易找到错误

#inculde<stdio.h>
int main()
{
	int num = 1;
if (5 == num)
	printf("hehe\n");

	return 0;

输出1-100的奇数

//%2==1

//if(n%2!=0)

int main()
{
    int i = 1;
    while(i <= 100)
    {
        printf("%d ",i);
        i=i+2;
    }
}

switch 语句

switch(整型表达式)

{

语句项 ;

}

搭配break使用才能实现真正的分支

语句块就是一些case语句

case 整型常量表达式:

语句;

case后打印内容重复一致时可以省略。

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;
        default:
        printf("输入错误\n");
        break;
    }
}

如果所有的case都不能匹配就用default:(没有顺序要求,放哪里都可以,一般放最后)

后也要加break

switch允许嵌套

嵌套的break只能跳出嵌套的switch语句

循环语句

while循环

语法结构

while(表达式)

循环结构;

//在屏幕上打印1-10
#include<stdio.h>
int main()
{
    int i =1;
    while(i<=10)
    {
        printf("%d ",i);
        i =i++;
}
return 0;
}

提前永久终止整个循环break

跳过本次循环continue后面的代码,直接返回到表达式部分判断要不要进行下一次循环

1.

getchar读取字符 返回类型是int

putchar打印字符

int main()
{char password[20] = {0};
print("请输入密码");
sacnf("%s",password);

//1
//getchar();//处理\n

//2
int tmp=0;
while ((tmp = getchar())!='/n')
{
    ;
}
printf("请确认密码(y/n)");
int ch = getchar();
if('y' == ch)
printf("确认成功\n");
else
printf("确认失败\n");

return 0;
}

代码意义:缓冲区清理

scanf 读取

getchar 缓冲区 键盘

2.读取字符只打印数字字符

#include<stdio.h>
int main()
{
    int ch = '\0';
    while ((ch = getchar())!=EOF)
    {
        if (ch < '0' || ch > '9')//非数字字符
        continue;
        putchar(ch);
        
    }
    return 0;
}

for循环

while中 初始化 判断 调整 三部分非常重要而且是分离的,其中一个部分只要发生变化,循环就会不一样。

//while
int main()
{
	int i = 1;//初始化
	while (i <= 10)//判断
	{
	printf("%d ", i);
		i++;//调整
	}
	return 0;
}

for(表达式1;表达式2;表达式3)

            初始化      判断       调整

//for
int main()
{
	int i = 0;
	for (i = 1; i <= 10; i++)
	{
		if (5 == i)
			continue;

		printf("%d ", i);
   	}

	return 0;
}

表达式2为时整个循环终止

break整个循环终止

continue跳过本次循环后的代码,后面继续循环

for语句的循环控制变量

建议

1.不可在for循环体内修改循环变量,防止for循环失去控制(在括号里修改)

2.建议for语句的循环控制变量的取值采用“前闭后开区间”的写法(一般情况)

[0,10)

一些for循环的变种

for循环中三部分都可省略但;不能省略

for循环的判断部分省略了,意味判断恒为真

可以使用一个多余变量控制循环

int main()
{int x,y;
for (x = 0, y = 0; x < 2 && y < 5; ++x,y++)
{
    printf("haha\n");
    
}
return 0;
}

do...while循环

do

循环语句;

while(表达式);

int main() 
{ int i=1; 
do 
{ if(i==5) 

continue;//打印结果1 2 3 4 死循环
 
printf("%d ",i); 

i++; }while(i<=10); 

return 0; }

循环至少执行一次,应用场景有限

break跳出整个循环,永久终止

continue跳过本次后面的代码

goto 语句

int main()
 { 
again: 
printf("haha\n"); 
goto again; 
return 0;
 }

传送,跳转 但是不能跨函数跳转

可以随意滥用,但是没必要

用途:

终止程序在某些深度嵌套的结构处理过程

(一次跳出两次或多次循环)

for(...) 
for(...) 
{ for(...)
 { if(disaster) 
goto error;
 }
 } 
... 
error: 
if(disaster) //处理错误情况

猜你喜欢

转载自blog.csdn.net/Ll_R_lL/article/details/122512567