【C】Process Control

news2024/11/24 16:03:13

在这里插入图片描述

系列连载

  • 【python / C / C++】

参考

  • 《C语言程序设计(第四版)谭浩强》
  • 【C语言】C语言视频教程
  • 《郝斌 C 语言自学教程》

文章目录

  • 1 什么是流程控制
  • 2 流程控制的分类
    • 2.1 顺序执行
    • 2.2 选择执行
    • 2.3 循环执行
      • 2.3.1 for
      • 2.3.2 while
      • 2.3.3 do...while
      • 2.3.4 switch
      • 2.3.5 break
      • 2.3.6 continue


1 什么是流程控制

程序代码的执行顺序

2 流程控制的分类

2.1 顺序执行

2.2 选择执行

1)定义

某些代码可能执行,也可能不执行,有选择的执行某些代码

2)分类

if

1、if 最简单的用法

格式:

if(表达式)
	语句

功能:如果表达式为真,执行语句;表达式为假,语句不执行

2、if 的范围问题

在这里插入图片描述
在这里插入图片描述

3、if…else… 的用法
4、if…else if…else…的用法
在这里插入图片描述

5、C 语言对真假的处理

非零是真 – 1
零就是假 – 0

6、if 举例–求分数的等级

#include<stdio.h>

int main(void)
{
	float score;

	printf("请输入你的考试成绩:\n");

	scanf("%f", &score);

	if (score > 100)
		printf("这是做梦!\n");
	else if (score >= 90 && score <= 100)
		printf("优秀!\n");
	else if (score >= 80 && score <90)
		printf("良好!\n");
	else if (score >= 60 && score <80)
		printf("及格!\n");
	else if (score >= 0 && score < 60)
		printf("不及格,继续努力!\n");
	else
		printf("输入的分数小于0!\n");

	return 0;

}

在这里插入图片描述

从左到右运行,90 <= score 的结果为 1 或者 0,一定小于 100,最终无法判断 score 是否在 90 到 100 范围内


7、if 的常见问题解析
在这里插入图片描述
在这里插入图片描述
else 开头报错

在这里插入图片描述

#include<stdio.h>

int main(void)
{
	if (3 > 2)
		printf("AAAA!\n");
	else if (3>1)
		printf("BBBB!\n");
	else
		printf("CCCC!\n");

	return 0;

}

output

AAAA!

在这里插入图片描述
没有 else
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.3 循环执行

定义:

  • 某些代码会被重复执行

分类

2.3.1 for

在这里插入图片描述

求 1~10 之间所有奇数的和

#include<stdio.h>

int main(void)
{
	int sum = 0;

	for (int i = 1; i <= 10; i += 2)
	{
		printf("i = %d\n", i);
		sum += i;
	}

	printf("sum = %d\n", sum);

	return 0;

}

output

i = 1
i = 3
i = 5
i = 7
i = 9
sum = 25

eg 求 1~100 所有数倒数的和

#include<stdio.h>

int main(void)
{
	float sum = 0;

	for (int i = 1; i <= 100; ++i)
	{
		sum += 1.0/i;
	}

	printf("sum = %f\n", sum);

	return 0;

}

在这里插入图片描述

看一个比较神奇的例子

#include<stdio.h>

int main(void)
{
	float a = 0.1, b = 0.2;
	float c = a + b;

	if (c == 0.3)
		printf("a = %f, b = %f, c = %f\n", a, b, c);
	else
		printf("c = %f \n", c);
	return 0;

}

调试的时候发现

在这里插入图片描述
参考 c语言如何把一个浮点变量精确到2位小数_浮点数比较的精度问题

2.3.2 while

1)执行顺序
在这里插入图片描述

2)与 for 的相互比较
在这里插入图片描述

3) 举例

从键盘输入一个数字,如果该数字是回文数,则返回 True,否则返回 False

#include<stdio.h>

int main(void)
{
	int num;
	int sum = 0;

	printf("请输入一个整数:\n");
	scanf("%d", &num);

	int value = num;

	while (num){
		sum = sum * 10 + num % 10;
		num /= 10;
	}
	
	if (sum == value){
		printf("True!\n");
	}
	else{
		printf("False!\n");
	}
	return 0;
}

斐波拉系数列

#include<stdio.h>

int main(void)
{
	// 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368.
	int num;
	int f1 = 1;
	int f2 = 1; 
	int f3;

	printf("请输入你想查看的项:\n");
	scanf("%d", &num);

	if (num == 1 || num == 2){
		f3 = 1;
	}
	else{

		while (num >= 3){
			f3 = f1 + f2;
			f1 = f2;
			f2 = f3;
			num -= 1;
		}

	}
	printf("结果为:%d\n",f3);
	return 0;
}

4)什么时候用 while,什么时候用 for

没法说,用多了自然而然就知道了

2.3.3 do…while

在这里插入图片描述
主要用于人机交互

举例,一元二次方程

#include<stdio.h>
#include<math.h>

int main(void)
{
	double delta;
	double x1, x2;
	double a, b, c;
	char ch;

	do{
		printf("请输入一元二次方程的三个系数:\n");
		printf("a=");
		scanf("%lf", &a);
		printf("b=");
		scanf("%lf", &b);
		printf("c=");
		scanf("%lf", &c);

		delta = b*b - 4 * a*c;

		if (delta > 0){
			x1 = (-b + sqrt(delta)) / (2 * a);
			x2 = (-b - sqrt(delta)) / (2 * a);
			printf("方程有两个不同的解,x1=%lf, x2=%lf\n", x1, x2);
		}
		else if (delta == 0){
			x1 = x2 = -b / (2 * a);
			printf("方程有唯一解,x1=x2=%lf\n", x1);
		}
		else{
			printf("方程无解\n");
		}

		printf("继续输入一元二次方程系数吗?(Y/N)\n");
		scanf(" %c", &ch); // 这里 " %c" 空格非常重要
	} while ('Y' == ch || 'y' == ch);
}

输出
在这里插入图片描述

2.3.4 switch

在这里插入图片描述
在这里插入图片描述
case 相当于入口

在这里插入图片描述
举例坐电梯

#include<stdio.h>
#include<math.h>

int main(void)
{
	int floor;
	printf("请输入你想要到达的层数:\n");
	scanf("%d", &floor);

	switch (floor){
	
	case 1:
		printf("您已到达一层!\n");
		break;
	case 2:
		printf("您已到达二层!\n");
		break;
	default:
		printf("你选择的楼层还在建设中!\n");
	case 3:
		printf("您已到达三层!\n");
		break;
	}
	return 0;
}

输出

请输入你想要到达的层数:
-1
你选择的楼层还在建设中!
您已到达三层!

哈哈哈,出现不在 case 中的会从 default 入口进,但是如果没有 break,就会导致上述结果(default 后面的语句继续执行)

2.3.5 break

  • break 如果用于循环是用来终止循环

  • break 如果用于 switch,则是用于终止 switch

  • break 不能直接用于 if,除非 if 属于循环内部的一个子句

  • 在多层循环中,break 只能终止距离它最近的那个循环

  • 在多层 switch 嵌套中,break 只能终止它最近的 switch

2.3.6 continue

  • 用于跳过本次循环余下的语句,转去判断是否需要执行下次循环

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/426207.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[ 汇编语言 (一) ] —— 踩着硬件的鼓点,掌握计算机的精髓

&#x1f64c;秋名山码民的主页 &#x1f602;一个打过一年半的oier&#xff0c;写过一年多的Java&#xff0c;现在致力于学习iot应用的普通本科生 &#x1f389;欢迎关注&#x1f50e;点赞&#x1f44d;收藏⭐️留言&#x1f4dd; &#x1f64f;作者水平有限&#xff0c;如发现…

数据库系统工程师——第二章 程序语言基础知识

文章目录&#x1f4c2; 第二章、程序语言基础知识 &#x1f4c1; 2.1 程序语言概述 &#x1f4d6; 2.1.1 程序语言的基本概念 &#x1f4d6; 2.1.2 程序语言的基本成分 &#x1f4c1; 2.2 程序语言翻译基础 &#x1f4d6; 2.2.1 汇编程序基本原理 &#x1f4d6; 2.2.2 编译程序…

算法之归并排序

文章目录一、归并排序&#xff08;递归版&#xff09;二、归并排序&#xff08;非递归版&#xff09;一、归并排序&#xff08;递归版&#xff09; 归并排序思想&#xff1a;将数组划分为两个区间&#xff0c;左区间&#xff0c;右区间 然后对这两个区间内容进行排序 &#xff…

一文讲懂C#、ASP.NET、ASP.NET MVC、ASP.NET web form、asp.net core mvc的区别

微软的命名很糟糕。技术上有两个框架&#xff1a;ASP.NET和ASP.NET Core&#xff0c;它们分别基于.NET Framework和.NET Core构建。 当Microsoft首次尝试创建一个遵循MVC模式的“现代”Web应用程序平台时&#xff0c;它将这个新平台称为“ASP.NET MVC”&#xff0c;以区别于以前…

【性能优化】cocoscreator 共享节点-动效复用方案

前言 迷雾散尽&#xff0c;露出了古朴庄严的森林。古老的铁杉&#xff0c;在头顶编成绿色穹顶。 阳光在树叶间破碎成金色顶棚。从树干间远眺&#xff0c;远处的森林渐渐隐去。 用几句话就能描述一片巨大的森林&#xff0c;但是在实时游戏中做这件事就完全是另外一件事了。 当屏…

[数据结构-C语言] 算法的时间复杂度

目录 1.算法的复杂度 2.时间复杂度 2.1 时间复杂度的概念 2.2 大O的渐进表示法 3、常见时间复杂度计算举例 3.1 冒泡排序 3.2 二分查找 3.3 阶乘递归 3.4 斐波那契数列 1.算法的复杂度 算法在编写成可执行程序后&#xff0c;运行时需要耗费时间资源和空间(内存)资源 …

PS学习记录——自动选择的【图层】/【组】模式说明

PS中&#xff0c;【移动工具】状态下&#xff0c;上方的工具栏有个【自动选择功能】&#xff0c;用于移动图像 自动选择下有【图层】、【组】两种选项 1、自动选择-【图层】 图层模式下&#xff0c;自动选择可以任意移动选中的图像图层&#xff0c;想移动哪个就移动哪个 即便不…

43.CSS grid布局

本节我们学习的初始代码如下&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta http-equiv"X-UA-Compatible" content"IEedge" /><meta name"viewport" …

110页智慧农业解决方案(农业信息化解决方案)(ppt可编辑)

本资料来源公开网络&#xff0c;仅供个人学习&#xff0c;请勿商用&#xff0c;如有侵权请联系删除。 第一部分 智慧农业概述 智慧农业以农业资源为基础、市场为导向、效益为中心、产业化为抓手&#xff0c;面向农业管理部门、农技推广部门、农业企业、农业园区和基地、农业专家…

【C】Pointer

系列连载 【python / C / C】 参考 《C语言程序设计&#xff08;第四版&#xff09;谭浩强》【C语言】C语言视频教程《郝斌 C 语言自学教程》 文章目录一、指针的重要性二、指针的定义三、指针的分类基本类型指针指针和一维数组指针和函数指针和结构体多级指针int * p;// p …

CASS自带数据-绘制地形图

1、打开cass软件&#xff0c;如下图&#xff1a; 2、点击“绘图处理”菜单栏&#xff0c;选择“展野外测点点号”&#xff0c;如下&#xff1a; 3、在命令栏输入绘图比例尺&#xff0c;这里选择默认1:500&#xff0c;点击回车键进入下一步&#xff0c; 4、在弹出的窗口中&#…

单片机通过串口向电脑端发送数据电脑端发送数据控制led

上节课我们学习了串口的理论部分&#xff0c;这节课我们要来学习实操部分。 要想实现单片机通过串口向电脑端发送数据&#xff0c;我们首先要来配置寄存器。 1.配置SCON SCON寄存器中的SM0配置为0&#xff0c;SM1配置为1决定了串口工作在模式一&#xff0c;也就是8位UART&am…

前端透明分栏设计

目前在开发一个基于众包的打分网站&#xff0c;前端遇到的一个需求是&#xff1a; 背景是电影的海报&#xff0c;且不能随着scroll-bar滚动&#xff0c;需要一个蒙版分为两栏&#xff0c;左侧是影视的媒体信息&#xff0c;不随页面滚动右侧是影视的基本信息和评分信息&#xf…

如何使用基于GPT-4的Cursor编辑器提升开发效率

程序员最恨两件事情&#xff1a;一是别人代码不写文档&#xff0c;二是要让自己写文档。随着 GPT-4 的到来这些都不是问题了&#xff0c;顺带可能连程序员都解决了。。。 之前一直觉得 AI 生成的代码也就写个面试题的水平&#xff0c;小打小闹&#xff0c;现在时代可变了。Curs…

@Conditional四个较常用的派生注解总结

该内容是在学习SpringBoot底层的时候&#xff0c;看到SpringBoot的使用&#xff0c;所以这的做一个简单的总结方便以后复习。可能会有一些问题&#xff0c;还望指出共同学习 Conditional注解&#xff1a; 作用&#xff1a;按照一定的条件进行判断&#xff0c;在满足给定条件后…

如果采用密钥对的形式登录系统后,如何由普通用户切换到root用户

使用xshell工具 采用秘钥的方式进行登录 创建一个新用户并设置密码 切换到新用户之后 su root 想要切换成root用户的时候 输入密码提示 su:Authentication failure su&#xff1a;身份验证失败 使用秘钥之后是不能使用密码再进行登录 我去阿里云查了一下 有一个相同…

stable diffusion 安装xFormers 报错:Couldn‘t install open_clip.

一、No module ‘xformers’. Proceeding without it. 这是因为没有安装xformers导致的。 解决办法&#xff1a; 在webui-user.bat文件这添加一行&#xff1a; set COMMANDLINE_ARGS--xformers如下图所示&#xff1a; 试着点击webui-user.bat&#xff0c;看能否下载&#xff…

17:00面试,17:04就出来了 ,问的实在是太...

从外包出来&#xff0c;没想到算法死在另一家厂子 自从加入这家公司&#xff0c;每天都在加班&#xff0c;钱倒是给的不少&#xff0c;所以也就忍了。没想到8月一纸通知&#xff0c;所有人不许加班&#xff0c;薪资直降30%&#xff0c;顿时有吃不起饭的赶脚。 好在有个兄弟内推…

你具备抽离与封装的思想吗?

笔者最近思考了自己参与的分布式系统业务的架构小细节&#xff0c;虽然笔者每天做的是实现部分需求与业务&#xff0c;但是笔者还是拥有很多时间去读底层源码的&#xff0c;加之笔者自身的思考与实践demo的总结&#xff0c;笔者将在本篇文章中提出笔者自己对“抽离”与“封装”…

Nginx编译安装及配置文件详解

写在前面 Centos版本&#xff1a;Centos 7.6 - 64bit Nginx版本&#xff1a;1.20.2 一、什么是Nginx Nginx (engine x) 是一款轻量级的Web 服务器 、反向代理服务器及电子邮件&#xff08;IMAP/POP3&#xff09;代理服务器。 二、Nginx用在哪些地方 2.1 静态资源服务 动静…