首页 > 其他分享 >C语言-分支循环语句 (上)

C语言-分支循环语句 (上)

时间:2024-10-18 12:19:19浏览次数:3  
标签:语句 case else break switch printf C语言 分支

C语言是结构化的程序设计语言,这里的结构指的是顺序结构、选择结构、循环结构,C语⾔是能够实 现这三种结构的,其实我们如果仔细分析,我们日常所见的事情都可以拆分为这三种结构或者这三种 结构的组合。

实现分支结构可以使用 if 、 switch ,实现循环结构使用for 、 while 、 do while 。

在计算机编程中,分支结构(Branching Structure)是一种基本的控制结构,用于根据条件的不同采取不同的操作或执行不同的代码块。分支结构允许根据条件的真假来决定程序的执行路径,是实现选择和决策的关键部分。

循环结构是指在程序中需要反复执行某个功能而设置的一种程序结构。它由循环体中的条件,判断继续执行某个功能还是退出循环。根据判断条件,循环结构又可细分为以下两种形式:先判断后执行的循环结构和先执行后判断的循环结构。

本文重点介绍分支语句,将在C语言-分支循环语句 (下)介绍循环语句。

最近学到此部分内容,希望带给你一点帮助。

目录

一,分支结构

1,if语句

 1.1 if

1.2 else

1.3 分⽀中包含多条语句

1.4 嵌套if

1.5 悬空else问题 

2,switch语句

 5.1 switch语句中的break

5.2 switch语句中的default


一,分支结构

1,if语句

 1.1 if

if语句的语法形式如下

在C语言中,0为假,非0为真,那么如果表达式结果为0,则不执行已下语句,反之则执行已下语句。

下面一段代码显示if语句的使用

输入一个整数,判断是否为奇数
int main()
{
	int num = 0;
	//输入
	scanf("%d", &num);
	//判断
	if (num % 2 == 1) //== 判断相等
		printf("%d 是奇数\n", num);

	return 0;
}

1.2 else

如果不符合if语句中的表达式,想要表达与if语句中相对的情况,那么就需要else,实现if...else...结构了。

#include <stdio.h>
int main()
{
	int num = 0;
	//输入
	scanf("%d", &num);
	//判断
	if (num % 2 == 1) //== 判断相等
		printf("%d 是奇数\n", num);
	else
		printf("%d 是偶数\n", num);

	return 0;
}

1.3 分⽀中包含多条语句

if和·else中最多只能控制一条语句,要想同时控制2条语句,那就要使⽤ { } 括起来,同理else也可以使用 { },达到相同效果。

例如以下代码

#include <stdio.h>
int main()
{
	int age = 0;//年龄
	//输入
	scanf("%d", &age);
	if (age >= 18)
	{
		printf("成年\n");
		printf("可以谈恋爱\n");
	}
	else
	{
		printf("未成年\n");
		printf("不能早恋\n");
	}
	return 0;
}

1.4 嵌套if

 if else 语句中, else 可以与另⼀个 if 语句连用,构成多重判断。

请看如下代码 

#include<stdio.h>
int main()
{
	int age = 0;
	printf("请输入年龄:");
	scanf("%d", &age);
	if (age < 15)
		printf("志于学\n");
	else
	{
		if (age <= 30)
			printf("而立\n");
		else
		{
			if (age <= 40)
				printf("不惑\n");
			else
			{
				if (age <= 50)
					printf("知天命\n");
				else
				{
					if (age <= 60)
						printf("耳顺\n");
					else
					{
						if (age <= 70)
							printf("知天命\n");
						else
							printf("从心所欲,不逾矩\n");
					}

				}
			}
		}
	}
	return 0;
}

 但在种表达方式非常繁琐,我们可以使用另一种表达方式

#include<stdio.h>
int main()
{
	int age = 0;
	printf("请输入年龄:");
	scanf("%d", &age);
	if (age < 15)
		printf("志于学\n");
	else if (age <= 30)
			printf("而立\n");
		else if (age <= 40)
				printf("不惑\n");
			else if (age <= 50)
					printf("知天命\n");
				else if (age <= 60)
						printf("耳顺\n");
					else if (age <= 70)
							printf("知天命\n");
						else
							printf("从心所欲,不逾矩\n");

	return 0;
}

1.5 悬空else问题 

有这样⼀条规则,else 总是跟最接近的 if 匹配

 最后的运行结果是:什么也没有

这是为什么呢?

许多人看到不符合第一个if语句后,自然而然的想到执行else语句,但实际上 if...else 语句是嵌套在第⼀个成立,嵌套 if 和 else 是和第⼆个 if if 语句中的,如果第⼀个 if 语句就不 else 就没机会执行了,最终啥都不打印。

所以在我们看代码的时候,要注意if 和else的对应关系,不要仅仅注意if与else的对其情况,如果代码改成下⾯这样就更加容易理解了。

如果想要达到预期情况,这需要我们添加{ }将代码进行块化处理。


2,switch语句

除了 if 语句外,C语⾔还提供了 switch 语句来实现分⽀结构。 switch 语句是⼀种特殊形式的的 if...else 结构,⽤于判断条件有多个结果的情况。它把多重 se if 改成更易⽤、可读性更好的形式。

 根据不同的expression表达式,从而执行不同的case分支,如果都不符合,就执行default语句。

 相较于if...else...语句,在特定条件下,switch语句能大大简化程序,增强代码可读性.

例如已下判断星期几的代码:

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;
}
int main()
{
	int day = 0;
	scanf("%d", &day);
	switch (day)//int short long ,long lng, char
	{
	case 1:
	case 2:
	case 3:
	case 4:
	case 5:
		printf("工作日\n");
		break;
	case 6:
	case 7:
		printf("休息日\n");
		break;
	default:
		printf("输入有误\n");
		break;
	}
	return 0;

 5.1 switch语句中的break

break在switch中的作用是跳出此语句,结束程序运行,

如果不加break,一旦expression满足case标签中的条件,从满足条件的case标签开始,对后面的case标签都进行操作直到default。

如果加了break,则break的作用是在相应的位置跳出整个循环

如下列代码

 在case标签后没有加break,输入整数 123 ,余数应该是0,但运行结果仍然输出了 余数是 1 和余数是 2,这就是由于没有break来跳出switch语句,使程序继续进行。

如果在每个case标签后加上break,就可以按照预期进行,达到我们想要的结果。

如下:

 综上,switch 语句中break 语句是⾮常重要的,能实现真正的分⽀效果。但 break也不是每个 case标签都得有,这就得根据实际情况来看了。

5.2 switch语句中的default

在我们使用switch语句的过程中,我们常常遇到switch后的表达式不匹配任何一个case标签,这时我们可以使用default字句。

提醒:default可以出现在switch语句中的任何位置

例如上文提到的判断星期几的问题

这里我们输入了1至7以外的数字,结果什么都没有 ,如果此时不想忽略其他,就可以使用default字句,输入了1至7以外的数字,就会执行default后面的语句。

//在switch语句中任意位置加上
   default:
      printf(“选择错误\n”);
      break;

这里我们再次输入 9

得到我们想要的结果。

虽然default字句可以 添加在switch语句中的任意位置,但我们默认将其放在最后,阅读代码时更便捷,要养成一个良好的编程习惯。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

标签:语句,case,else,break,switch,printf,C语言,分支
From: https://blog.csdn.net/xiaoxin_________/article/details/143026441

相关文章

  • Python一些常见的技巧及语句!!
    题记:关于遇到的一些python代码或者不清楚用法的函数、类别等我会在这里记录下来,方便日后学习和交流。之后研究生三年我会持续更新学习,可能得记录几千个吧。1.copy.copy()和copy.deepcopy()深拷贝和浅拷贝的关系确实好用importcopya=[1,2,3]b=[4,5,6]c=copy.copy(a)......
  • MyBatis在SQL语句中取list的大小
    需求:使用MyBatis进行开发时,在一个SQL语句中需要拼接list的大小。大家都知道,当我们在MyBatis中写SQL时,如果需要遍历list,先对list进行非空判断的时候,可以加下面这行:<iftest="null!=listandlist.size!=0">SQL</if>但是如果想在SQL中取到list.size的值,则比较麻烦。一般会想......
  • 再多看一眼就会爆炸:if语句,switch语句,以及各类循环语句间这样对比更清晰易懂哦
    1.if语句与switch语句的对比练习:输⼊任意⼀个整数值,计算除3之后的余数如果用if语句完成,如下:1#include<stdio.h>2intmain()3{4intn=0;5scanf("%d",&n);6if(n%3==0)7printf("整除,余数为0\n");8elseif(n%3==1)9printf("......
  • switch语句逆向分析
    switch语句逆向分析有序小于3时代码:#include"stdafx.h"voidMySwitch(intx){switch(x){case1:printf("numis1\n");break;case2:printf("numis2\n");......
  • 常见逻辑语句逆向分析
    Ifelse语句逆向分析#define_CRT_SECURE_NO_WARNINGS#include<stdio.h>intmain(intargc,char*argv[]){intsum=0;for(inti=0;i<=argc;i++){sum+=i;}returnsum;汇编代码00401006movdwordptr[ebp-8],0;sum=0......
  • C语言小白记录自己的错题和总结
    ​计算n个a的思路都是用a+a10+a100……然后在累加记得用include<math.h>pow考察逗号表达式即使像x+y x+7之类的算出结果后x和y还是不变因为没有赋值所以x和y都是原来的值问号语句先计算第一个表达式若他的值为非0(即真)将表达式2的值作为条件表达式的值反之为0即假......
  • (八千字心得笔记)零基础C语言入门第一课——初识C语言
    这一课主要是让大家初步了解C语言,了解我们的开发环境,main函数,库函数,关键字,字符和字符串等内容的介绍,后面会一一讲解文章目录一.C语言是什么1.1C语言的历史二.开发环境编译型语言和解释型语言2.1编译和链接2.2编译器的选择2.2.1VS项目和源文件、头文件介绍2.2.2......
  • C语句和程序流
    1.C语言表达式和语句在C中,表达式代表值,而语句代表给计算机的指令。表达式表达式由运算符和操作数组成。最简单的表达式只是一个不带运算符的常量或者变量,例如12或者num。复杂一些的例子是20+30和a=12。语句语句是对计算机的命令。任何以分号结尾的表达式都是一个语句,它不一定......
  • C语言函数
    1.C语言函数的定义C源程序是由函数组成的。最简单的程序有一个主函数main(),但实用程序往往由多个函数组成,由主函数调用其他函数,其他函数也可以互相调用。函数是C源程序的基本模块,程序的许多功能是通过对函数模块的调用来实现的,学会编写和调用函数可以提高编程效率。函数的定......
  • C语言[数组作函数参数]
    输入10个整数作为一个数组,要求判断并且输出其中最大的值和它是数组中的第几位数。本次代码调用max函数数组元素为a[1]~a[9]代码如下:#include<stdio.h>intmain(){  intmax(intx,inty);  inti,m,n,a[10];  printf("enter10intergernumber:"); ......