当前位置: 首页 > article >正文

循环结构程序设计

目录

一、while循环语句

二、for循环语句

三、do-while循环语句

四、循环中的特殊语句

1.break

2.continue

五、综合案例

总结


一、while循环语句

在C语言中,while语句是一种最简单的循环语句,它通过循环控制条件,从而控制语句的重复执行,其一般形式为:while(表达式){循环体语句S;},主要含义为:当表达式值为真(非0)时,,则执行循环语句S,然后再次判断表达式的真假,知道表达式为假(0)才会退出。

注意:任何表达式最终都可以转化为真和假(非0和0)。

从这个过程中可以看出,while是一种当型循环结构,即先进行条件判断,若满足则执行循环体,所以while循环语句条件判断次数比循环体执行次数多一次。

案例:要求输入一个正整数n,计算从0到n的所有整数和。

代码实现:

#include<stdio.h>

int main()
{
    int i, n;
    float sum;
    i = 0;//为了体现从零开始,实际可以初始化为1
    sum = 0;
    scanf("%d", &n);
    while (i <= n)
    {
        sum += i;
        i++;
    }
    printf("sum=%f\n", sum);
    return 0;
}

分析:首先输入一个n,接着让i从0开始,每次循环结束时加一,sum每次循环都加一个数,直到i>n,不满足条件,退出循环,最后打印sum,程序退出。 

二、for循环语句

for循环的一般形式为for(表达式1;表达式2;表达式3){循环体语句S};

其执行过程为首先执行表达式1,然后执行表达式2,若表达式2为真,则执行循环体语句S,而后执行表达式3;若表达式2为假,跳出for循环。执行完表达式3再次执行表达式2,判断真假,开始第二次循环。

从这个过程可以看出,for循环也是一种当型循环结构(所以for循环语句条件判断次数比循环体执行次数多一次。),先判断,再执行。其中表达式1多用来初始化赋值,表达式2是判断条件,表达式3是循环控制语句,与while语句相比,for循环语句更加简洁明了,但两者是等价的,可以互换。

案例:计算1~100的累加值

代码实现:

#include<stdio.h>

int main()
{
	int i;
	float sum;
	for (i = 1, sum = 0; i <= 100; i++)
	{
		sum += i;
	}
	printf("%f", sum);
	return 0;
}

三、do-while循环语句

do-while循环语句是一种直到型循环语句,其一般形式为:do{循环体语句S;}while(表达式);

这种循环语句是先执行循环体语句S,再判断条件是否成立。所以do-while循环语句条件判断次数和循环体执行次数是一样多的。

案例:使用do-while语句计算1~100的累加值

代码实现:

#include<stdio.h>

int main()
{
	int i;
	float sum;
	i = 1;
	sum = 0;
	do
	{
		sum += i;
		i++;
	} while (i <= 100);
	printf("%f", sum);
	return 0;
}

四、循环中的特殊语句

1.break

前面在switch语句中已经介绍了break的功能,就是提前结束switch语句,在循环语句中是一样的功能,当循环体中的break执行时可以提前结束整个循环。

2.continue

break的功能是结束(跳出)循环,而continue的功能是跳过当前循环,注意只是跳过本次循环,并不是退出整个循环,所以执行了continue语句后,应该执行表达式3(循环控制语句),然后再进行判断,进入下一次循环。

五、综合案例

计算机菜单功能

要求:从键盘接收用户的操作选择,若用户输入的菜单项编号不是1~4,则提示“输入有误(合法的操作功能编号为1~4),请重新输入:”并等待用户重新输入,直到用户输入合法的功能菜单编号为止,然后执行用户选择的功能。

分析:根据题意,要求用户输入编号,编号不合法重新输入,直到合法为止,合法则执行用户选择的功能,这符合先执行一次,再判断是否合法的循环特征,所以可以采用do-while循环来实现。

代码实现:

#include<stdio.h>

int main()
{
	double x1, x2, y;
	int option;

	printf("=========简易计算器=========\n");
	printf("1.加法运算\n");
	printf("2.减法运算\n");
	printf("3.乘法运算\n");
	printf("4.除法运算\n");
	printf("您要执行的运算是(请输入上述菜单项前的编号):");

	do
	{
		scanf("%d", &option);  //接收功能选择
		if (option < 1 || option>4)  //验证所输入的功能选择编号是否合法
			printf("输入有误(合法的操作功能编号为1~4),请重新输入:");
		else
			break;
	} while (1);  //1为恒真,表示这个循环要一直执行,直到输入合法才能break退出

	//输入提示信息和接收操作数
	printf("请输入两个小数,以空格作为分隔符:");
	scanf("%lf%lf", &x1, &x2);
	//根据功能选择编号进行判断和执行相应的运算
	switch (option)
	{
	case 1:
		y = x1 + x2;
		printf("%.2lf + %.2lf的计算结果为:%.2lf\n", x1, x2, y);
		break;
	case 2:
		y = x1 - x2;
		printf("%.2lf - %.2lf的计算结果为:%.2lf\n", x1, x2, y);
		break;
	case 3:
		y = x1 * x2;
		printf("%.2lf * %.2lf的计算结果为:%.2lf\n", x1, x2, y);
		break;
	case 4:
		y = x1 / x2;
		printf("%.2lf / %.2lf的计算结果为:%.2lf\n", x1, x2, y);
	}
	return 0;
}

运行结果为: 

总结

本节介绍了循环结构程序的设计,包括了三种循环语句及特点(while,for,do-while),break和continue语句,还分析了4个案例。这些在程序设计中都是基本功,随处可见。好了本节到此结束,拜拜!


http://www.kler.cn/a/403075.html

相关文章:

  • Flink Lookup Join(维表 Join)
  • Stm32f103X HAL库 串口DMA空闲中断学习 踩坑记
  • PostGIS分区表创建
  • 《C++ 实现区块链:区块时间戳的存储与验证机制解析》
  • ECharts柱状图-带圆角的堆积柱状图,附视频讲解与代码下载
  • 【11.22更新】Win11 24H2正式版:26100.2454镜像一键获取!
  • 【C++】深入理解 C++ 优先级队列、容器适配器与 deque:实现与应用解析
  • 优选算法(双指针)
  • 一篇快速上手 Axios,一个基于 Promise 的网络请求库(涉及原理实现)
  • vue3教程:快速搭建Vue3项目
  • GLM4 PyTorch模型微调最佳实践
  • 第十种Prompt 框架-MASTER
  • ES6 (MNO-eUICC) 接口中 OTA 平台通信概述
  • DTH11传感器温度湿度+esp8266+阿里云+小程序
  • 对基因列表中批量的基因进行GO和KEGG注释
  • 小程序租赁系统开发为企业提供高效便捷的租赁服务解决方案
  • Sourcetree登录GitLab账号
  • 在 CentOS 系统上直接安装 MongoDB 4.0.25
  • 基于EEMD变换的ECG心电信号去噪和心率估计matlab仿真
  • mysql如果把between and换成大于小于怎么改
  • 通过计算巢快速部署 Jupyter Notebook
  • 力扣--LCR 140.训练计划||
  • 鸿蒙NEXT开发案例:随机密码生成
  • 【Bug合集】——Java大小写引起传参失败,获取值为null的解决方案
  • 定长滑动窗口(LeetCode——1423.可获得的最大点数)
  • layui 输入框带清空图标和分词搜索功能