分支与循环语句_C语言入门

2023-10-28

2. 分支语句

什么是分支语句?

分支语句就是选择结构,人生无时无刻不在做选择,程序一样,程序也需要做选择。所以分支语句简单来说,就是给程序做选择,决定程序走哪条路的语句

2.1 if 语句

if 语句是C语言中常见的分支语句,它有三种形式,单分支,双分支,以及多分支。

2.1.1 单分支

单分支,简单来说,就是判断,是否走这条路

在这里插入图片描述

从学校出发,你可以选择直接回家,也可以选择先去商店买东西,再回家。这就是一个单分支,用代码演示为

#include <stdio.h>
int main() {
	char c = 'm'; //创建一个变量
	if (c == 'm') //如果 c == m时,代表我想买东西
		printf("买东西");//那么就走进这条路,先买东西,再回家
	printf("回家");
	return 0;
}

在这里插入图片描述

如果c 的值,不满足条件,那么就意味着 不想走这条路,不想买东西,直接回家!

在这里插入图片描述

2.1.2 双分支

那么问题来了,我们只能选择一条路吗? 当然不是,人生怎么可能只有一种选择,程序也一样,所以这里就要用到双分支了,也就是 if … else 语句,意思就是如果…否则。

这里我们换个例子,因为字符无法更好的理解

在这里插入图片描述
就拿考试这个例子,如果及格,那么就没事,如果不及格,那么回家就得挨打。代码演示效果如下。

#include <stdio.h>
int main() {
	int score = 65; //定义一个变量,用来表示分数
	if (score >= 60)
		printf("安然无恙\n");  // 如果分数大于 60 ,则安然无恙
	else
		printf("回家挨打");   // 否则就回家挨打
	return 0;
}

在这里插入图片描述
分数大于等于 60 分的代码运行结果
在这里插入图片描述
不满足条件(也就是分数小于60)的运行结果
在这里插入图片描述

2.1.3 多分支

那么我们的考试中只有及格和不及格吗?那我能不能再给考试成绩分个级别呢? 例如90分以上为优秀80-90为良好,60-80为一般,60以下为不及格。
答案是当然可以,这里就要运用到我们的多分支了

在这里插入图片描述
从这张图中,我们就可以清晰的看到,无论你的分数是多少,你都只能符合其中的一个条件,意思就是只能走一条路!虽然有四条路,但你只能走一条路。而分数则是 你走哪条路的条件,所以就要用到 else if(条件),就是当前面的条件不满足时,再给一个新的条件,如果满足则可以执行这个条件的代码。 用代码演示如下

#include <stdio.h>
int main() {
	int score = 95; //定义一个变量,用来表示分数
	if (score >= 90)
		printf("优秀\n");  // 如果分数大于等于90 ,优秀
	else if(score>=80)     // 如果分数大于等于80(且小于90) ,则良好
		printf("良好\n");   
	else if (score >= 60)  // 分数大于等于60,则一般
		printf("良好\n");
	else 
		printf("不及格\n");  //  以上三种都不满足的时候,那肯定就是不及格了
	return 0;
}

代码运行结果如下:
优秀
在这里插入图片描述
良好:
在这里插入图片描述
不及格:
在这里插入图片描述

这时候就有疑问了。例如 95分,它同时满足优秀,良好,一般,三个条件。
为什么只打印优秀呢? 这个前面已经说过了,它只能走一条路!虽然有四条路,但是只能走一条路。 最先符合条件的路,先走了,那就不会再走后面的路。 它的第一个判断是 判断分数是否大于90,如果这个条件满足了,那么下面的else if 就不会再继续判断,因为一个if 语句只能走一条路。

还有重要的一点,就是else 它只对应最近离它最近的if语句。

#include <stdio.h>
int main() {
	int a = 1;
	if (a == 2)
		if (a == 1)
			printf("1\n");
		else
			printf("2\n");
	return 0;
}

在上面的代码中,else 只与它最近的if对应,也就是说它只与 if(a== 1) 有关,与最外面的 if(a == 2) 没有任何关系,第一个if不满足,所以程序不会再执行里面嵌套的if了。 代码运行结果如下
在这里插入图片描述
是的,什么都不会输出

2.2 switch 选择结构

那么问题来了,如果分支太多,怎么办? 就比如我想写一个今天是星期几的程序。 用 if else 分支语句如下。


#include <stdio.h>
int main() {
	int day = 1;
	if (day == 1)
		printf("星期一\n");
	else if (day == 2)
		printf("星期二\n");
	else if (day == 3)
		printf("星期三\n");
	else if (day == 4)
		printf("星期四\n");
	else if (day == 5)
		printf("星期五\n");
	else if (day == 6)
		printf("星期六\n");
	else if (day == 7)
		printf("星期日\n");
	return 0;

}

有没有感觉 else if 太多,感觉太麻烦,又很繁琐呢?
这时,我们就可以尝试使用 switch 语句,它的功能和 if … else 是一样的,只是它看起来不会那么繁琐 ,代码如下。

#include <stdio.h>
int main() {
	int weekday = 1; //星期数
	switch (weekday)
	{
	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;
	default:
		break;
	}
	return 0;
}

switch() 的 括号里面是不能放浮点数的, 然后程序根据括号里面的值,找到对应的 case 值,并且碰到 break 结束。 如果没有在结尾加上break,那么程序就会执行下一个 case 直到遇到break 。 代码演示如下

在这里插入图片描述
如上代码所示, weekday 为3,找到对应的case 值后,为星期三,因为没有break,所以它会执行下一个case 语句,直到遇到break它才会停下来,这就是break 在 switch分支语句的作用。

2.2.2 default 子句

那么default 句子的作用是什么呢? 它就相当于 else,当上面所有的case 语句都不满足时,执行default语句里的内容。 代码执行如下

在这里插入图片描述
因为 weekday = 8, 而switch 没有找到 与之对应的 case 语句,那么就会执行default 里面的内容, 输出输入错误。


3. 循环语句

循环,字面意思,就是循环一直做某件事,比如我们要打印 1- 10 的数字,我们可以用10条printf()函数打印,也可以1个 printf()函数打印10个。但是有没有感觉这样很麻烦呢? 如果我要同时打印1-100,1-1000,那单单用printf()函数是非常麻烦的,因此C语言 有 循环语句,专门用来做重复的事情,可以有效的减少代码量和时间,所以今天要给大家介绍的是C语言的几种循环。

3.1for 循环

3.1.1 for循环的格式

for 循环可以说是最常见的循环,那么它的格式是怎样的呢? 可以先来看看一段for循环的代码

#include<stdio.h>
int main()
{
	int i = 1;
	for(i=1;i<=10;i++)
		printf("%d ",i);
	return 0;
}

从上面的代码,我们可以看到for 循环的格式是for(i = 1 ; i <= 10 ; i++){ }
那么一起来看看运行结果
在这里插入图片描述

我们可以看到打印结果是 1 - 10 的数字,而我们每次输出的值都是 i,这就说明我们的 i 是时刻都在变化的, 并且打印到10停止,就说明 i 的变化是有范围限制的。 i的变化是每次 +1, i的范围最大是10。所以for循环的格式就很好理解了

在这里插入图片描述


3.1.2 for循环的循环流程

for 循环的流程,可以大致分为 以下6个步骤。


1. 程序进入循环
2. 循环值的初始化
3.条件判断,判断循环是否满足条件
4.执行循环体,也就是要循环的内容
5.循环值的变化
6.跳到步骤3,继续进行条件判断,如果满足条件,再次执行4.5.6步骤,直接步骤3 条件判断,不满足条件即可跳出循环

在这里插入图片描述

3.1.3 for循环中的continue

continue 是一个用于循环的关键字,意思就是结束本次循环,直接开始下次循环。

#include<stdio.h>
int main()
{
	int i = 1;
	for (i = 1; i <= 10; i++) 
	{
		if (i == 5)
			continue;
		printf("%d ", i);
	}

	return 0;
}

我们给循环加了一个条件,如果 i == 5 ,则执行一次 continue,那让我们看看这个程序的结果
在这里插入图片描述
运行结果是 1 2 3 6 7 8 9 10 , 没有了5,因为当 i == 5时,直接continue了,continue 就是直接结束本次循环,也就是直接跳到以上的步骤4。
在这里插入图片描述


3.2 while 循环

3.2.1 while循环的格式

老规矩,我们先来看一段 while 循环的代码

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

运行结果
在这里插入图片描述
从运行结果上看,打印了 1-10

所以我们应该可以理解, while ( i <= 10 )是循环的判断条件,当i不满足这个条件时,循环就停止了。 所以
while循环有点类似于if 判断,但if 只循环一次,while 循环到条件不满足为止。所以while循环的循环格式很简单。

在这里插入图片描述
但是使用while循环时,我们必须注意一些事项。 那就是必须在循环体中要有可以使循环最后停止的语句,这是为了让代码执行到一定程度可以停下来,否则会进入死循环 。 就比如上面代码中的 i++ , 每次循环 i 就会 +1,等i>10的时候,不满足 i <=10 这个条件,while循环就会终止。


3.2.2 while循环流程

while循环的循环流程就没有那么繁琐了,可以分为以下4个步骤

1.定义并初始化一个变量,该变量用于控制循环
2.进行条件判断,满足条件进入循环体,不满足跳出循环
3. 假设满足条件,执行循环体里的语句
4. 循环体执行完毕后,继续跳回步骤2,如果依旧满足条件,那么重复步骤

在这里插入图片描述

再使用while循环时一定要注意,要变化值让循环条件慢慢的不满足条件,这样循环最后才会终止

3.2.3 while循环里的continue

continue 关键字的效果,上面提到过一次,就是直接结束本次循环,开始下一次循环,但是用在while 里面时,我们需要注意一些问题。先让我们来看看下面这段代码。

#include<stdio.h>
int main()
{
	int i = 1;
	while (i <= 10)
	{
		printf("%d ", i);
		if (i == 5)
			continue;
		i++;
	}
	return 0;
}

这段代码,我们在打印语句后面加了一个 if判断, 如果 i == 5时,就continue,先让我们来看看代码的运行效果。
在这里插入图片描述
是的,代码循环一直打印5,这是为什么呢? 让我们来解析一下。代码前面四次循环都没有问题,当 第五次循环时,i == 5 ,满足了if条件,随后 continue 直接结束了循环,因此 决定循环结束的 i++ 语句并没有执行。所以 程序进入死循环。
在这里插入图片描述
那我们如何解决这个问题呢? 很简单,把 i++提到 if 判断的前面

#include<stdio.h>
int main()
{
	int i = 1;
	while (i <= 10)
	{
		printf("%d ", i);
		i++;
		if (i == 5)
			continue;
	}
	return 0;
}

运行结果
在这里插入图片描述
1-10 全打印了,那是因为 printf();在 if判断语句的前面, continue 没有其他语句了,我们把 打印放在后面再看看,要注意一点,如果打印放在i++的后面,那么i的初始化值 就只能是 0 ,条件判断也不能是 <=10,而是<10了,因为是先 ++之后再打印。
运行结果
在这里插入图片描述


3.3 do while 循环

do while 循环本质就是while 循环,但是它与while 循环有一点不同的地方,那就do while 它至少会循环一次,while 循环是先判断,再执行,它是先执行,再判断

3.3.1 do while 循环的格式

老规矩,上一段 do while 循环的代码

#include<stdio.h>
int main()
{
	int i = 1;
	do{
		printf("%d ", i);
		i++;
	} while (i <= 10);

	return 0;
}

从代码中,我们可以看出, do while的循环体,再 do 后面的大括号,循环条件还是在while() 的小括号中。
在这里插入图片描述

3.3.2 do while 的循环流程

前面说过,do while 循环是先执行,后判断,因此do while循环分为以下四个步骤

1. 初始化变量
2. 执行循环体
3. 进行条件判断
4. 条件满足重新进入循环体,也就是执行步骤2,不满足结束循环

在这里插入图片描述
那么是怎么确定它是先执行一次再循环的呢? 我们可以直接把循环条件判断为假,再执行一次代码,看看效果。

#include<stdio.h>
int main()
{
	int i = 1;
	do{
		printf("%d ", i);
		i++;
	} while (0);

	return 0;
}

条件判断,0为假,非0为真,所以 while(0) 是直接判定为假
然后我们再来看看执行效果
在这里插入图片描述
还是打印了1,而这个1 又刚好是 i的初始值,所以证明do while的确是先执行,再判断的。 除了这点差异,do while 和while 其他并无太大区别


3.4 break关键字

3.4.1 break 跳出循环

我们在switch 选择语句中提到过 break 关键字,switch 里的break 关键字的作用是使case 不再往下执行。那么break关键字用在循环里有什么作用是直接跳出所在循环,我们先来看一段代码。

#include <stdio.h>
int main()
{
	int i = 0;
	for (i = 1; i <= 10; i++)
	{
		if (i == 5)
		{
			break;
		}
		printf("%d ",i);
	}

	return 0;
}

我们可以看到 当 i == 5时,就使用 break关键字,接下来我们来看看程序的运行结果。
在这里插入图片描述
输出结果是 1 2 3 4,而并不是1-10,当 i == 5 的时候,循环就不再继续了。因为 break 使循环直接结束了。如图所示
在这里插入图片描述

3.4.2 嵌套循环时的break

前面强调,break 只跳出当前循环 。 所以当循环嵌套时,break 只会结束它所在的一层循环,而不会结束外层的循环。下面有一段循环嵌套的代码。

#include <stdio.h>
int main()
{
	int i = 0;
	int j = 0;
	for (i = 1; i < 5; i++)
	{
		for (j = 1; j <= 10; j++)
		{
			if (j == 5)
			{
				break;
			}
			printf("%d ", j);
		}
	}

	return 0;
}

我们在一个循环里面嵌套了一个循环,并在里面的循环里面使用了break语句,那我们来测试一下 break 能否结束外层循环呢? 让我们看看运行结果。
在这里插入图片描述
从运行结果来看, j == 5 时,里面的循环直接跳出了,但外面的循环依旧再继续。 我们可以看看当 j ==5时 这个程序的执行过程。
在这里插入图片描述
所以 break 只能结束 break 所在的那层循环,无法影响外层循环。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

分支与循环语句_C语言入门 的相关文章

  • Qt 图表和数据可视化小部件

    我已经安装了 Qt 5 7 来尝试 Qt 图表和 Qt 数据可视化 但我在 Qt Designer 和 Qt Creator 中都找不到新的小部件 有什么建议我应该做什么才能让新的小部件出现在设计器中 我今天遇到了完全相同的问题 默认情况下
  • 具有相同参数类型但具有不同常量限定符的 std::vector 的转换

    问题很简单 静态转换 或其他一些转换 通常是安全的 std vector lt Foo gt to std vector lt const Foo gt 就二进制而言 我不明白为什么本机类型会有所不同 毕竟const是一种语言约束 不应影响
  • 结构体如何存储在内存中?

    我有一个struct iof header在我的代码中 我确定它的宽度是 24 字节 我执行 sizeof iof header 它返回 32 字节宽 问题1为什么是 32 字节宽而不是 24 字节宽 问题2包括其成员在内 结构体如何存储在
  • fopen_s 怎么会比 fopen 更安全呢?

    我正在处理遗留代码Windows平台 当我编译代码时VS2013 它给出以下警告 错误 C4996 fopen 该函数或变量可能不安全 考虑使用fopen s反而 要禁用弃用 请使用 CRT SECURE NO WARNINGS 详情请参见
  • 是否有可能劫持标准输出

    我正在尝试使用 C 重定向 Windows XP 上已运行进程的标准输出 我知道如果我自己生成进程 我可以做到这一点 但对于这个应用程序 我更喜欢一个 监听器 我可以附加到另一个进程 这在纯 Net 中可能吗 如果不可能 在 Win32 中
  • 为什么我会收到未找到分析器的警告?

    我创建了一个玩具项目来检查最新的 NET 7 预览版 5 和正则表达式代码生成 它效果很好 所以我对现有项目应用了相同的更改 不是为了生产 而是为了个人生产力 由于某种原因 我收到这些警告 CS8032 An instance of ana
  • 如何在特定时间以毫秒精度触发 C# 函数?

    我有两台计算机 它们的时间通过 NTP 同步 确保时间仅相差几毫秒 其中一台计算机将通过 TCP 向另一台计算机发送一条消息 以在两台计算机上的未来指定时间启动某个 c 函数 我的问题是 如何在特定时间以毫秒精度 或更好 触发 C 中的函数
  • .crt 部分?这个警告是什么意思?

    我最近收到此警告 VC 2010 warning LNK4210 CRT section exists there may be unhandled static initializers or terminators 我假设这是关键部分
  • 自动映射器多对多 stackoverflowException

    我遇到以下映射的堆栈溢出 Mapper CreateMap
  • 将公历日期转换为儒略日期,然后再转换回来(随着时间)

    我正在编写一个程序 必须将当前的公历日期和时间转换为儒略日期 然后再转换回公历门 最终我需要添加能够添加年 月 日 小时 分钟和秒的功能 但我需要先解决这部分问题 现在我已经从公历日期转换为儒略日期 所以从逻辑上讲 我觉得我应该能够以某种方
  • ASP.NET - 在 RenderContent 调用中将事件处理程序添加到 Repeater 内的 LinkBut​​ton

    我有一个加载自定义用户控件的 Sharepoint WebPart 用户控件包含一个 Repeater 而 Repeater 又包含多个 LinkBut ton 在 Web 部件的 RenderContent 调用中 我有一些用于添加事件处
  • 如何在C中同时运行两个子进程?

    所以我开始学习并发编程 但由于某种原因我什至无法掌握基础知识 我有一个名为 fork c 的文件 其中包含一个 main 方法 在此方法中 我将 main 分叉两次 分别进入子进程 1 和 2 在孩子 1 中 我打印了字符 A 50 次 在
  • 无法加载程序集问题

    我收到以下错误 无法加载程序集 错误详细信息 System BadImageFormatException 无法加载文件或程序集 文件 或其依赖项之一 该程序集是由比当前加载的运行时更新的运行时构建的 无法加载 该程序集是使用 Net Fr
  • 如何让XmlReader读取C#中的属性?

    我有一个 XML Stream 其中包含以下 XML 内容
  • 配置:错误:无法运行C编译的程序

    我正在尝试使用 Debian Wheezy 操作系统在我的 Raspberry Pi 上安装不同的软件 当我运行尝试配置软件时 我尝试安装我得到此输出 checking for C compiler default output file
  • 使用数据绑定,如何将包含表情符号的文本绑定到标签并使其正确显示?

    我正在编写一个应用程序来连接 WordPress BuddyPress API 该应用程序将允许用户通过 API 相互发送消息 当这些消息包含表情符号时 我很难正确显示它们 以下是 API 返回的消息文本的简短示例 Hi x1f642 ho
  • 如何检测应用程序正在运行的 .NET 版本?

    我尝试使用Environment Version ToString 确定目标计算机上正在使用什么 NET 框架 但安装了 4 0 版本时 它说我正在使用 NET 2 0 如何检测目标计算机上正在运行的 NET Framework 版本 En
  • C 变量声明的效率 [重复]

    这个问题在这里已经有答案了 例如 在 C 中声明一个变量需要多长时间int x or unsigned long long var 我想知道它是否会让我的代码在类似的事情中更快 for conditions int var 0 code 这
  • 如何在c#中创建多线程

    我需要监听机器中的所有串行端口 假设我的机器有 4 个串行端口 我必须创建 4 个线程并开始分别使用附加线程监听每个端口 我使用此代码来获取我的机器中的端口数量 private SerialPort comPort new SerialPo
  • 使用 CodeDOM 将程序集添加到 BuildManager 会导致间歇性错误

    我正在使用 CodeDOM 在运行时创建内存中程序集 如下所示 public Assembly Compile CodeCompileUnit targetUnit string path Path GetDirectoryName new

随机推荐

  • [MySQL]实训七

    实训目的 设置字段的默认值约束 设置字段的自动增长约束 设置字段的外键约束 有关上述三种约束的概念在上一篇文章中有提及 http t csdn cn 9rV9T 1 在数据库db school中重新定义表tb student 要求以表级完整
  • 4. TypeScript 类

    TypeScript 类 1 TS中定义类 class Pointer x number 实例上的属性必须先声明 y number constructor x number y number args number this x x thi
  • 关于研一Python基础课程第四周课后习题的几点理解(含一个问题的订正)

    1 第八题一个函数的订正 def output prime number for i in range number 1 if is prime i True print i end 这里原文的代码是for i in range numbe
  • VS 配置Qt 开发组件

    VS 配置Qt 步骤比较简单 入门级吧 按照如下几步即可快速配置 希望可以帮到你 一 安装VS Qt组件 1 方法一 扩展 gt 管理扩展 gt 联机 搜素Qt Visual Studio Tools 工具 自动下载完成 按照向导提示正常安
  • 深入解析JS工程逆中的反爬机制

    在当今互联网时代 爬虫技术被广泛应用于数据采集 搜索引擎优化等领域 然而 许多网站为了保护其数据和资源 采取了各种反爬机制 JS逆工程是其中一种常见的反爬手段 通过在网页中利用JavaScript代码动态生成内容 使得爬虫难以获取有效数据
  • ansible批量自动安装LNMP

    转载于 https www cnblogs com hai better p 9995258 html
  • 算法[动态规划]---买卖股票最佳时机

    1 题目 给你一个整数数组 prices 其中 prices i 表示某支股票第 i 天的价格 在每一天 你可以决定是否购买和 或出售股票 你在任何时候最多只能持一股股票 你也可以先购买 然后在同一天出售 返回你能获得的最大利润 2 分析特
  • 蓝桥杯2022 python C组

    蓝桥杯2022 python C组 跟之前的就四题不一样 第二题 特殊时间 就是i 从0 9 j从0 9 i是三个一样的 然后看看他们能不能成为 年 月日 时分 成为年只要大于0就好了 称为月日的话月要从1 12 日呢 特殊的日子就二月28
  • Java连接Oracle数据库(详细!快速上手)

    Java连接Oracle数据库及封装JDBC 如果你点开看到了这篇文章 说明你已经或多或少地通过学校学习亦或是自学了解了 oracle 数据库的基本用法 但是实际在开发程序的时候 我们是不可能手动地去操作sql语句的 而是由程序去调用 这个
  • adb shell 出现 insufficient permissions for device

    新安装了一台电脑 要用adb跟开发板通信 1 安装adb user hp 8200 Desktop factory adb shell The program adb can be found in the following packag
  • 使用过的小巧软件一览

    最近遇到一个脑洞的问题 之前使用Winrar 压缩软件 加密的代码包 由于时间久远 密码忘记了 尝试了记得的各种可能的密码 都是不行 但大概记得长度和部分字符 可就是不记得如何组合的了 后来网上搜索了一番 找到一个小软件 暴力破解了一番 好
  • Linux安全基线检查--centos7

    版权声明 本文为CSDN博主 淡定波007 的原创文章 遵循CC 4 0 BY SA版权协议 转载请附上原文出处链接及本声明 原文链接 https blog csdn net qq 28721869 article details 1146
  • 使用storcli/storcli64工具配置RAID

    storcli storcli工具上传到服务器任意目录 并使用命令chmod x storcli64修改文件权限为可执行 系统下查看Raid卡 root localhost lspci grep LSI 0000 81 00 0 RAID
  • C++函数的定义与使用

    函数的定义和使用 main就是一个函数 它是C 程序的主函数 一个C 程序可以由一个主函数和若干子函数组成 主函数是程序执行的开始点 由主函数调用子函数 子函数还可以再调用其它子函数 调用其它函数的函数称为主调函数 被其他函数调用的函数称为
  • flexible.js实现移动端自适应

    首先要引入flaxible js 代码如下 function win lib var doc win document var docEl doc documentElement var metaEl doc querySelector m
  • linux下查看进程的位置

    在linux下使用top命令可以查看进程 但是单从文件名无法定位到进程的位置 有如下两种方法 1 获取进程的pid 然后使用命令ls l proc pid 这个命令可以列出该进程的启动位置 2 usr sbin lsof grep 进程名称
  • redis集群搭建(6节点单实例)

    1 分布式缓存的搭建 地址与服务器规划 Master1 192 168 232 128 slaver1 192 168 232 131 Master2 192 168 232 129 slaver2 192 168 232 132 Mast
  • Python中类的访问限制

    学习要点 在Python中 类的访问限制可以通过使用单下划线 和双下划线 进行控制 但这并不是严格的访问控制 而是一种命名约定 单下划线 约定性私有 一个下划线前缀表示一个属性或方法应该被视为 内部 使用 这只是一种约定 并没有严格的强制规
  • 数据库试题

    1 单选题 下列关于关系型数据库说法错误的是 A 使用键值对存储数据 B 关系型数据库 是指采用了关系模型来组织数据的数据库 C 关系型数据库的最大特点就是事务的一致性 D 关系型数据库的不足 大量数据的操作 字段的不固定 对表的索引以及表
  • 分支与循环语句_C语言入门

    目录 2 分支语句 什么是分支语句 2 1 if 语句 2 1 1 单分支 2 1 2 双分支 2 1 3 多分支 2 2 switch 选择结构 2 2 2 default 子句 3 循环语句 3 1for 循环 3 1 1 for循环的