分支和循环语句(1)

这篇具有很好参考价值的文章主要介绍了分支和循环语句(1)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

  • 什么是语句
  • 分支语句(选择结构)
  • 循环语句
  • goto语句

1. 什么是语句

C语言中语句可分为以下五类:

  1. 表达式语句
int main()
{
	3 + 5;
	return 0;
}
  1. 函数调用语句
#include <stdio.h>

int main()
{
	printf("hehe");
	return 0;
}
  1. 控制语句
  2. 复合语句
  3. 空语句
int main()
{
	;
}

本章后面介绍的是控制语句

控制语句用于控制程序的执行流程,以实现程序的各种结构方式(C语言支持三种结构顺序结构选择结构循环结构),它们由特定的语句定义符组成,C语言有九种控制语句,可分成以下三类:

  1. 条件判断语句也叫分支语句:if语句、switch语句;
  2. 循环执行语句:do while语句、while语句、for语句;
  3. 转向语句:break语句、goto语句、continue语句、return语句。

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

2.1 if语句

那if语句的语法结构是怎么样的呢?
分支和循环语句(1)

#include <stdio.h>

int main()
{
	int age = 0;
	//输入
	scanf("%d", &age);
	
	if (age < 18)
		printf("未成年\n");

	return 0;
}

#include <stdio.h>

int main()
{
	int age = 0;
	//输入
	scanf("%d", &age);
	
	if (age < 18)
		printf("未成年\n");
	else
		printf("成年\n");

	return 0;
}
#include <stdio.h>

int main()
{
	int age = 0;
	//输入
	scanf("%d", &age);
	
	//<18  青少年
	//18~30  青年
	//31~50  中年
	//51~80  中老年
	//81~100  老年
	//101+  老寿星

	if (age < 18)
		printf("青少年\n");
	else if (age >= 18 && age <= 30)
		printf("青年\n");
	else if (age >= 31 && age <= 50)
		printf("中年\n");
	else if (age >= 51 && age <= 80)
		printf("中老年\n");
	else if (age >= 81 && age <= 100)
		printf("老年\n");
	else
		printf("老寿星\n");
	
	return 0;
}

注: 如果表达式的结果为,则语句执行。(在C语言中,0表示非0表示。)


如果条件成立,要执行多条语句,应使用代码块
分支和循环语句(1)
这里的一对 { } 就是一个代码块

2.1.1 悬空else

当你写了以下代码:

#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;
}

结果是什么呢?
结果不是haha,也不是hehe,而是什么也不打印。
这是因为else是和它离的最近的if匹配的


总结:

  • 适当的使用 {} 可以使代码的逻辑更加清楚。
  • 代码风格很重要
2.1.2 if书写形式的对比
//代码1
if (condition) {
    return x;
}
return y;
//代码2
if(condition)
{
    return x;
}
else
{
    return y;
}
//代码3
int num = 1;
if(num == 5)
{
    printf("hehe\n");
}
//代码4
int num = 1;
if(5 == num)
{
    printf("hehe\n");
}

代码2和代码4更好,逻辑更加清晰,不容易出错。

2.1.3 练习
  1. 判断一个数是否为奇数
#include <stdio.h>

int main()
{
	int n = 0;
	//输入
	scanf("%d", &n);
	
	if (n % 2 == 1)
	{
		printf("是奇数\n");
	}
	else
	{
		printf("不是奇数\n");
	}
	
	return 0;
}
  1. 输出1-100之间的奇数
#include <stdio.h>

int main()
{
	int i = 1;
	
	while (i <= 100)
	{
		//判断i是奇数的话,就打印i
		if (i % 2 == 1)
			printf("%d ", i);
		
		++i;
	}
	
	return 0;
}
#include <stdio.h>

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

2.2 switch语句

switch语句也是一种分支语句,常常用于多分支的情况。

比如:

输入1,输出星期一
输入2,输出星期二
输入3,输出星期三
输入4,输出星期四
输入5,输出星期五
输入6,输出星期六
输入7,输出星期日

那switch语句的语法结构是怎么样的呢?
分支和循环语句(1)

#include <stdio.h>

int main()
{
	int day = 0;
	scanf("%d", &day);
	
	switch (day)
	{
	case 1:
		printf("星期1\n");
	case 2:
		printf("星期2\n");
	case 3:
		printf("星期3\n");
	case 4:
		printf("星期4\n");
	case 5:
		printf("星期5\n");
	case 6:
		printf("星期6\n");
	case 7:
		printf("星期天\n");
	}

	return 0;
}
2.2.1 在switch语句中的 break

在switch语句中,我们没办法直接实现分支 (以上代码是有问题的),搭配break使用才能实现真正的分支。

#include <stdio.h>

int main()
{
	int day = 0;
	scanf("%d", &day);
	
	switch (day)
	{
	case 1:
		printf("星期1\n");
		break;
	case 2:
		printf("星期2\n");
		break;
	case 3:
		printf("星期3\n");
		break;
	case 4:
		printf("星期4\n");
		break;
	case 5:
		printf("星期5\n");
		break;
	case 6:
		printf("星期6\n");
		break;
	case 7:
		printf("星期天\n");
		break;
	}

	return 0;
}

有时候我们的需求变了:

  1. 输入1-5,输出的是“weekday”;
  2. 输入6-7,输出“weekend”
#include <stdio.h>

int main()
{
	int day = 0;
	scanf("%d", &day);
	
	switch (day)
	{
	case 1:
	case 2:
	case 3:
	case 4:
	case 5:
		printf("weekday\n");
		break;
	case 6:
	case 7:
		printf("weekend\n");
		break;
	}

	return 0;
}

总结: break语句的实际效果是把语句列表划分为不同的分支部分。


编程好习惯

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

2.2.2 default子句

如果表达的值与所有的case标签的值都不匹配怎么办?

其实也没什么,结果就是所有的语句都被跳过而已。

但是,如果你并不想忽略不匹配所有标签的表达式的值时该怎么办呢?

你可以在语句列表中增加一条default子句,当 switch 表达式的值不匹配所有的 case 标签的值时,这个 default 子句后面的语句就会执行。

所以,每个switch语句中只能出现一条default子句,但是它可以出现在语句列表的任何位置,而且语句流会像执行一个case标签一样执行default子句。

#include <stdio.h>

int main()
{
	int day = 0;
	scanf("%d", &day);
	
	switch (day)
	{
	case 1:
	case 2:
	case 3:
	case 4:
	case 5:
		printf("weekday\n");
		break;
	case 6:
	case 7:
		printf("weekend\n");
		break;
	default:
		printf("输入错误\n");
		break;
	}

	return 0;
}

编程好习惯

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

2.2.3 练习
#include <stdio.h>

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

3. 循环语句

3.1 while循环

while语句的语法结构是怎么样的呢?
分支和循环语句(1)
while语句执行的流程:
分支和循环语句(1)
比如我们要实现:

在屏幕上打印1-10的数字。

#include <stdio.h>

int main()
{
	int n = 1;

	while (n <= 10)
	{
		printf("%d ", n);
		n++;
	}
	
	return 0;
}
3.1.1 while语句中的break和continue

break介绍:

#include <stdio.h>

int main()
{
	int n = 1;
	
	while (n <= 10)
	{
		
		if (5 == n)
			break;
		
		printf("%d ", n);
		n++;
	}
	
	return 0;
}

//1 2 3 4

总结:
break在while循环中的作用:

其实在循环中只要遇到break,就停止后期的所有的循环,直接终止循环。
所以,while中的break是用于永久终止循环的。


continue介绍:

#include <stdio.h>

int main()
{
	int n = 1;
	
	while (n <= 10)
	{
		n++;
		
		if (5 == n)
			continue;//跳过本次循环continue后边的代码,直接去while循环的判断部分
		
		printf("%d ", n);
	}
	
	return 0;
}

//2 3 4 6 7 8 9 10 11

总结:
continue在while循环中的作用就是:

continue是用于终止本次循环的,也就是本次循环中continue后边的代码不会再执行,而是直接跳转到while语句的判断部分,进行下一次循环的入口判断。


再看几个代码:

先介绍一下getchar和putchar:

#include <stdio.h>

int main()
{
	int ch = getchar();//A
	printf("%c\n", ch);//A
	putchar(ch);//打印字符
	
	return 0;
}
//代码1
#include <stdio.h>

int main()
{
	int ch = 0;
	
	//EOF - end of file 文件结束标志
	//#define EOF   (-1)
	//在函数读取读取失败的时候返回了EOF
	//scanf 函数读取成功,返回的是读取到的数据的个数
	//读取失败返回EOF
	//getchar 读取成功返回字符的ASCII码值
	//读取失败返回EOF
	//ctrl+Z - 会让scanf 或者 getchar 返回EOF
	
	while ((ch = getchar()) != EOF)
	{
		putchar(ch);
	}

	return 0;
}

以上代码进行适当的修改是可以用来清理缓冲区的:
分支和循环语句(1)文章来源地址https://www.toymoban.com/news/detail-421381.html

#include <stdio.h>

int main()
{
	//123456
	char password[20] = { 0 };
	printf("请输入密码:>");
	scanf("%s", password);//123456 abc
	printf("请确认密码(Y/N):");
	int input = 0;
	//scanf("%c", &input);//Y
	//把\n处理掉
	//getchar();
	
	//清理掉缓冲区中剩余的数据
	while (getchar() != '\n')
	{
		;
	}

	input = getchar();
	if ('Y' == input)
		printf("确认成功\n");
	else
		printf("确认失败\n");

	return 0;
}

//代码2
#include <stdio.h>

int main()
{
	char ch = '\0';
	
	while ((ch = getchar()) != EOF)
	{
		
		if (ch < '0' || ch > '9')
			continue;
		
		putchar(ch);
	}
	
	return 0;
}

//这个代码的作用是:只打印数字字符,跳过其他的字符。

到了这里,关于分支和循环语句(1)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 万字C语言之分支语句和循环语句

    前言: 📕作者简介:热爱编程的小七,致力于C、Java、Python等多编程语言,热爱编程和长板的运动少年! 📘相关专栏Java基础语法,JavaEE初阶,数据库,数据结构和算法系列等,大家有兴趣的可以看一看。 😇😇😇有兴趣的话关注博主一起学习,一起进步吧! C语句可分为以

    2024年02月09日
    浏览(50)
  • C 循环与分支语句

    目录 前言 1.什么是语句? 2. 分支语句(选择结构) 2.1   if语句 if…else语句 2.1.1   if语句 2.1.2   if…else语句 2.1.3   嵌套使用 2.1.4   悬空的else  2.2   switch语句 2.2.1   switch语句 2.2.2   嵌套 2.2.3   default 3.循环语句 3.1   while语句 3.1.1   语法 3.1.2   breakcontinue 3.2   f

    2024年02月11日
    浏览(35)
  • 分支和循环语句(3)

    3.4.6 猜数字游戏 打印菜单 选择玩游戏或退出游戏 猜数字游戏主体 完整代码: C语言中提供了可以随意滥用的 goto语句和标记跳转的标号。 注: 从理论上, goto语句是没有必要的,实践中没有goto语句也可以很容易的写出代码。 附: 关于shutdown命令的扩展 但是某些场合下got

    2024年02月16日
    浏览(44)
  • 分支和循环语句(1)

    什么是语句 分支语句(选择结构) 循环语句 goto语句 C语言中语句可分为以下五类: 表达式语句 函数调用语句 控制语句 复合语句 空语句 本章后面介绍的是 控制语句 。 控制语句 用于控制程序的执行流程,以实现程序的各种结构方式(C语言支持 三种结构 : 顺序结构 、

    2023年04月22日
    浏览(35)
  • 分支和循环语句(2)

    3.2 for循环 3.2.1 for语句的语法 使用for循环在屏幕上打印1-10的数字。 for语句的执行流程如下: 现在我们对比一下for循环和while循环: 可以发现在while循环中依然存在循环的三个必须条件,但是由于风格的问题使得三个部分很可能偏离较远,这样查找修改就不够集中和方便。所

    2024年02月02日
    浏览(30)
  • C基础-分支和循环语句

    c语言:结构化的程序设计语言。 包括:顺序结构,选择结构,循环结构 选择结构: 分支语句-if和switch 循环结构:循环语句while ,for, do while c语言语句分为五类:1.表达式语句   2.函数调用语句   3.控制语句   4.复合语句  5.空语句 控制语句 用于控制程序的执行流程,以

    2024年02月07日
    浏览(38)
  • Verilog中的 条件语句\多路分支语句\循环语句

    一、背景 由于初学Verilog,故写篇笔记记录Verilog中的 if-else 、 case-endcase 、 for 、 while 、 repeat 、 forever 语法,以及例子。 二、if-else 定个标准,每个 if-else 的出现都要有 begin-end 语句。 2.1 标准结构 条件语句标准使用结构: 2.2 例子 二输入选择器: 三、case-endcase case 语句是一

    2024年02月11日
    浏览(48)
  • 『C语言入门』分支和循环语句

    在编程中,我们需要让程序 根据不同情况作出选择,并重复执行某些任务 。C语言的分支和循环结构为实现这些目标提供了强大的工具。本文将探索C语言中的分支(如 if 和 switch )以及循环(如 while 、 for 和 do...while )结构,帮助你理解如何更有效地控制程序的流程和逻辑。

    2024年02月11日
    浏览(57)
  • 【C语言】选择语句(分支语句)

    ㊙️小明博客主页:➡️ 敲键盘的小明 ㊙️ ✅关注小明了解更多知识☝️ 提示:本篇文章为C语言选择语句的个人总结,内容如若有误,请及时联系我更正。 转载请注明原创,谢谢。 提示:以下是本篇文章正文内容:   假设你在水果摊购买一斤的水果,摊主会根据你购

    2024年02月09日
    浏览(55)
  • 3.7 Linux shell脚本编程(分支语句、循环语句)

    目录 分支语句(对标C语言中的if) 多路分支语句(对标C语言中的swich case) 分支语句(对标C语言中的if) 语法结构:          if    表达式                  then  命令表          fi     如果表达式为真, 则执行命令表中的命令; 否则退出if语句, 即执行fi后面的语句。

    2024年02月02日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包