分支与循环语句(1)

目录

1.什么是语句

2.分支语句(选择结构)

2.1 if-else语句

2.2 switch-case语句

3.循环语句

3.1while循环


1.什么是语句

C语句可分为:表达式语句,函数调用语句,控制语句,符合语句,空语句

本文主要讲解控制语句

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

  1. 条件判断语句(分支语句):if-else,switch-case;
  2. 循环执行语句:do while,while,for;
  3. 转向语句:break,沟通,continue,return;

2.分支语句(选择结构)

2.1 if-else语句

第一种写法(单分支)

if(表达式)

{

        语句一

}

else

{

        语句二

}

第二种写法(多分支)

if(表达式)

{

        语句一

}

else if(表达式)

{

        语句二

}

...... ......

else

{

        语句n

}

注:0表示假,非0表示真,表达式结果为真,则语句执行

例:将三个整数从大到小输出。

悬空else 

#define _CRT_SECURE_NO_WARNINGS

#include<stdio.h>
int main()
{
	int a = 1;
	int b = 2;
	if (0 == a)//常量与变量判断相等时,常量放在左边,变量放在右边,避免出现变量被赋值的错误
	
		if (2 == b)
		
			printf("hehe\n");
		
	else
		printf("hehe\n");
	
	return 0;
}

     以上代码的输出如下

 解释:代码没有输出,因为0==a条件不成立,所以第一个if下的所有子语句都不执行。else总是和离他最近的if匹配,且if-else是一条语句,所以没有输出。这样写的代码一般会给人带来误解,所以不推荐。优化写法如下:

#define _CRT_SECURE_NO_WARNINGS

#include<stdio.h>
int main()
{
	int a = 1;
	int b = 2;
	if (0 == a)//常量与变量判断相等时,常量放在左边,变量放在右边,避免出现变量被赋值的错误
	{
		if (2 == b)
		{
			printf("hehe\n");
		}
		else
		{
			printf("hehe\n");
		}
			
	}
	
	return 0;
}

例题:输出1~100之间所有的奇数

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
	int i = 0;
	while (i <= 100)
	{
		if (i % 2 == 1)
		{
			printf("%d ", i);
			
		}
		i++;
	}
	return 0;
}

 输出: 

2.2 switch-case语句

写法

switch(表达式)

{

case(整形常量表达式):语句1;

case(整形常量表达式):语句2;

...... ......

case(整形常量表达式):语句n;

default : 语句

}

注:switch-case语句允许嵌套使用

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
    int n = 1;
    int m = 2;
    switch (n)//n=1
    {
    case 1:
        m++;//m=3
    case 2:
        n++;//n=2
    case 3:
        switch (n)//switch允许嵌套使用
        {
        case 1:
            n++;//n=2,不执行
        case 2:
            m++; n++;//m=4,n=3
            break;
        }
    case 4:
        m++;//m=5
        break;
    default:
        break;
    }
    printf("m = %d, n = %d\n", m, n);
    return 0;
}

例题:判断工作日与休息日

3.循环语句

3.1while循环

while(表达式)//表达式为真,循环执行

{

        循环语句

}

 

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
	int i = 1;
	while (i <= 10)
	{
		if (5 == i)
			continue;
//当判断i等于5时,continue跳过本次循环后边的代码,不会打印5,也不会执行i++
//导致每次循环i=5,恒小于10,所以该循环为死循环
		printf(("%d ", i);
		i++;
	}
	return 0;
}

输出:1 2 3 4 _死循环

break:直接跳出循环

continue:跳过本次循环后边的代码,进行下一次循环的入口判断

while循环的应用

使用while循环清空缓冲区 

 #define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
	char password[20] = { 0 };
	printf("请输入密码:>");
	scanf("%s", password);//123456 abcdef\n
	int tmp = 0;
	while ((tmp = getchar()) != '\n')//处理一串字符直到为\n
	{
		;//空语句
	}

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

	return 0;
}

getchar函数

读取字符,返回类型是int,读取错误或遇到EOF(end of file文件结束标志)时,返回EOF

只打印数字字符 

#include<stdio.h>
int main()
{
	int ch = '0';
	while ((ch = getchar()) != EOF)
	{
		if (ch < '0' || ch > '9')
			continue;

		putchar(ch);
	
	}
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值