【C】Process Control

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

【C】Process Control

系列连载

  • 【python / C / C++】

参考

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


1 什么是流程控制

程序代码的执行顺序

2 流程控制的分类

2.1 顺序执行

2.2 选择执行

1)定义

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

2)分类

if

1、if 最简单的用法

格式:

if(表达式)
	语句

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

2、if 的范围问题

【C】Process Control
【C】Process Control

3、if…else… 的用法
4、if…else if…else…的用法
【C】Process Control

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;

}

【C】Process Control

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


7、if 的常见问题解析
【C】Process Control
【C】Process Control
else 开头报错

【C】Process Control

#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!

【C】Process Control
没有 else
【C】Process Control
【C】Process Control
【C】Process Control

2.3 循环执行

定义:

  • 某些代码会被重复执行

分类

2.3.1 for

【C】Process Control

求 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;

}

【C】Process Control

看一个比较神奇的例子

#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】Process Control
参考 c语言如何把一个浮点变量精确到2位小数_浮点数比较的精度问题

2.3.2 while

1)执行顺序
【C】Process Control

2)与 for 的相互比较
【C】Process Control

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

【C】Process Control
主要用于人机交互

举例,一元二次方程

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

输出
【C】Process Control

2.3.4 switch

【C】Process Control
【C】Process Control
case 相当于入口

【C】Process Control
举例坐电梯

#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文章来源地址https://www.toymoban.com/news/detail-417176.html

2.3.6 continue

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

到了这里,关于【C】Process Control的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包