C语言——循环控制语句

2023-11-01

循环控制语句

for循环控制

1.基本语法

for(①循环变量初始化;②循环条件;④循环变量迭代){
         ③循环操作(多条语句);
}

2.注意事项和细节说明

  1. 循环条件是 返回一个**表示真(非0)**假(0) 的表达式
  2. for(;循环判断条件;) 中的初始化和变量迭代可以不写(写到其它地方),但是两边的分号不能省略。
  3. 循环初始值可以有多条初始化语句,但要求类型一样,并且中间用逗号隔开,循环变量迭代也可以有多条变量迭代语句,中间用逗号隔开。for(i = 0, j = 0; j < count; i++, j += 2)

3.练习

(1)打印1~100之间所有是9的倍数的整数的个数及总和. [使用for完成]
#include <stdio.h>
int main(){
	//打印1~100之间所有是9的倍数的整数的个数及总和. [使用for完成]
	int i = 0;
	int count = 0 ,sum =0;
	for(i=1;i<100;i++){
		if(i%9==0){
			count++;//统计次数
			sum+=i;//累计到sum
		}
	}
	printf("%d %d",count,sum);
	getchar();
}
(2)先死后活的一种编程思想
image-20221021090402762

​ //分析
​ //1.先接收用户的输入num
​ //2.使用for循环来输出0-》num 的各种组合方式
​ //3.使用先死后活方式来编程和思考,假定num就是6=》 然后再在把6改成变量
​ //4.一步步形成编程思维

	int num =6;
	int i= 0;
	for(i=0;i<=6;i++){
		printf("\n %d+%d=6",i,num-i,num);
	}
	
	getchar();

while循环控制

1.基本语法

①循环变量初始化;
while(②循环条件){
	③循环体(多条语句);
	④循环变量迭代; 
}
image-20221021094725095

2.注意事项和细节说明

(1)循环条件是返回一个表示真(非0)假(0) 的表达式

(2)while循环是先判断再执行语句

3.例题

(1)打印1—100之间所有能被3整除的数
	int i = 1;
	int max =100;
	while(i<=max){
		if(i%3==0){
			printf("\n i=%d 能被3整除",i);
		}
		i++;
	}
(2)不断输入姓名,直到输入 “exit” 为止[使用while完成]
分析:
//1.需要接受用户的输入,字符串[字符数组]
//2.提示:<string.h>有一个strcmp函数,判断两个字符串是否相同
#include <stdio.h>
#include <string.h>
	int main(){
	char name[10]="";
	while(strcmp(name,"exit")!=0){//这里返回0 表示相等,非0表示不相等
		printf("\n 请输入名字:");
		scanf("%s",name);//这里不需要加 &name ,因为数组的名称就是地址
		printf("\n 你输入的名字是=%s",name);
	}
	getchar();//过滤回车
	getchar();//暂停控制台
}

do…while循环控制

1.基本语法

do{
	②循环体(多条语句);
	③循环变量迭代; 
}while(④循环条件);
注意:do – while 后面有一个 分号,不能省略.
image-20221021095935163

2.注意事项和细节说明

  1. 循环条件是返回一个表示真(非0)假(0) 的表达式

  2. do…while循环是先执行,再判断

3.练习

(1)统计1——200之间能被5整除但不能被3整除的个数及其它们的和
#include <stdio.h>
int main(){
	//统计1——200之间能被5整除但不能被3整除的个数及其它们的和
	int i =0;
	int max = 100;
	int count=0;
	int sum = 0;
	do{
		//判断
		if((i%5==0)&&(i%3!=0)){
			count++;//累加
			printf("\n%d",i);
			sum+=i;
		}
		i++;	
	}while(i<max);//循环条件
	printf("\n 1-100间能被5整除但不能被3整除的个数 count=%d",count);
	printf("\n 总和sum=%d",sum);
	getchar();
}

多重循环

1.介绍

(1)将一个循环放在另一个循环体内,就形成了嵌套循环。其中,for ,while ,do…while均可以作为外层循环和内层循环。【建议一般使用两层,最多不要超过3层】, 如果嵌套循环过多,会造成可读性降低

(2)实质上,嵌套循环就是把内层循环当成外层循环的循环体。当只有内层循环的
循环条件为false时,才会完全跳出内层循环,才可结束外层的当次循环,开始
下一次的循环, 举例说明。

(3)设外层循环次数为m次,内层为n次,则内层循环体实际上需要执行m*n次。

2.练习

(1)统计3个班成绩情况,每个班有5名同学,求出各个班的平均分和所有班级的平

均分[学生的成绩从键盘输入]。统计三个班及格人数,每个班有5名同学。

#include<stdio.h>
int main(){
	//统计3个班成绩情况,每个班有5名同学,求出各个班的平均分和所有班级的平均分[学生的成绩从键盘输入]
	//分析
	//编程技巧 1.先死后活 2.先简单再复杂(分解)
	//1.各个班的平均分
	//2.所有班级的平均分,得到所有班级的总分allClassTotalScore
	//3.定义变量表示 班级个数classNum 定义变量表示学生个数 stuNum
	//4.定义变量classTotalScore 每个班级总分
	//5.定义变量score , 接收学生成绩
	//6.使用双层for循环
	
	//增加新功能 统计三个班及格人数,每个班有5名同学
	//分析
	//1.定义一个变量count ,保存及格人数
	//2.当接收到一个学生成绩后,就看看是否及格,如果及格
	int stuNum = 5;
	int classNum = 3;
	double classTotalScore = 0.0;
	double score = 0.0;
	double allClassTotalScore = 0.0;//控制班级总成绩
	int count = 0;//及格人数
	int i,j;
	for(i=1;i<=classNum;i++){//控制班级循环次数
		
		//每次给一个班级输出成绩,需要清零
		classTotalScore = 0.0;
		for(j=1;j<=stuNum;j++){//控制学生循环次数
			printf("\n请输入第%d班级的第%d个学生的成绩",i,j);
			scanf("%lf",&score);
			if(score>=60){
				count++;
			}
			classTotalScore+=score;//累计成绩
		}
		allClassTotalScore+=classTotalScore;//累计所有班级成绩
		//当内层的for循环结束后,就得到了改班级的总成绩
		printf("\n第%d个班级的平均分 = %.2f",i,classTotalScore / stuNum);
	}
	//输出所有班级的成绩
	printf("\n所有班级的平均分=%.2f",allClassTotalScore/(stuNum*classNum));
	printf("\n所有班级的及格人数=%d",count);
	getchar();
	getchar();
}
(2)打印出九九乘法表

image-20221021221341564

#include <stdio.h>
int main(){
	//99乘法表
	int i,j;
	for(i=1;i<=9;i++){
		//因为每一行都在增加算式,所以使用for循环控制
		for(j=1;j<=i;j++){
			printf("%d*%d=%d",j,i,i*j);
			printf(" ");
		}
		printf("\n");
	}
	getchar();
}
(3)打印金字塔

image-20221021224643881

#include <stdio.h>
int main(){
	//打印空心金字塔
	
	//分析
	//1.打印矩形
	//2.打印半个金字塔
	//3.打印整个金字塔
	//4.打印空心金字塔
	//    在输出*号的时候,需要考虑是否输出的*还是空格
	//5.打印菱形
	
	int i,j,k,totalLevel=8;
	for(i=1;i<=totalLevel;i++){
		//输出空格,使用k控制空格循环
		for(k=1;k<=totalLevel-i;k++){
			printf(" ");
		}
		for(j=1;j<=2*i-1;j++){
			if(j==1 || j==2*i-1 || i==totalLevel){//i表示层
					printf("*");	
			}else{
				printf(" ");
			}
		}
		printf("\n");
	}
	getchar();
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C语言——循环控制语句 的相关文章

  • 在 C# 中创建具有单独列的分隔文本

    我一直在尝试在 C 中创建一个制表符限制的文本文件 以便数据正确显示在单独的列中 Firstname Lastname Age John Smith 17 James Sawyer 31 我尝试过 t 字符 但我得到的只是 Firstnam
  • 如何使用MemoryCache代替Timer来触发一个方法?

    以下方法通过等待已运行操作的结果来处理并发请求 对数据的请求可能会使用相同 不同的凭据同时出现 对于每组唯一的凭据 最多可以有一个GetCurrentInternal呼叫正在进行中 当准备就绪时 该呼叫的结果将返回给所有排队的服务员 pri
  • 使用 Unity 在构造函数中使用属性依赖注入

    好的 我在基类中定义了一个依赖属性 我尝试在其派生类的构造函数内部使用它 但这不起作用 该属性显示为 null Unity 在使用 container Resolve 解析实例后解析依赖属性 我的另一种选择是将 IUnityContaine
  • 如何检查QProcess是否正确执行?

    QProcess process sdcompare QString command sdcompare QStringList args sdcompare command sdcompare diff args sdcompare lt
  • 在新的浏览器进程中打开 URL

    我需要在新的浏览器进程中打开 URL 当浏览器进程退出时我需要收到通知 我当前使用的代码如下 Process browser new Process browser EnableRaisingEvents true browser Star
  • 在 Unity 进程和另一个 C# 进程之间进行本地 IPC 的最快方法 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我希望每秒大约 30 次从 C 应用程序向我的 Unity 应用程序传送大量数据 由于 Unity 不支持映射内存和管道 我考虑了 t
  • 读取文件特定行号的有效方法。 (奖励:Python 手册印刷错误)

    我有一个 100 GB 的文本文件 它是来自数据库的 BCP 转储 当我尝试导入它时BULK INSERT 我在第 219506324 行上收到一个神秘错误 在解决此问题之前 我想看看这一行 但可惜的是我最喜欢的方法 import line
  • 如何访问另一个窗体上的ListView控件

    当单击与 ListView 所在表单不同的表单中的按钮时 我试图填充 ListView 我在 Form1 中创建了一个方法以在 Form2 中使用 并将参数传递给 Form1 中的方法 然后填充 ListView 当我调试时 我得到了传递的
  • 存储来自其他程序的事件

    我想将其他应用程序的事件存储在我自己的应用程序中 事件示例 打开 最小化 Word 或打开文件时 这样的事可能吗 运行程序 http msdn microsoft com en us library ms813609 aspx and 打开
  • 未定义的行为或误报

    我 基本上 在野外遇到过以下情况 x x 5 显然 它可以在早期版本的 gcc 下编译干净 在 gcc 4 5 1 下生成警告 据我所知 警告是由 Wsequence point 生成的 所以我的问题是 这是否违反了标准中关于在序列点之间操
  • 将 log4net 与 Autofac 结合使用

    我正在尝试将 log4net 与 Autofac 一起使用 我粘贴了这段代码http autofac readthedocs org en latest examples log4net html http autofac readthed
  • 等待线程完成

    private void button1 Click object sender EventArgs e for int i 0 i lt 15 i Thread nova new Thread Method nova Start list
  • 私有模板函数

    我有一堂课 C h class C private template
  • 有人可以提供一个使用 Amazon Web Services 的 itemsearch 的 C# 示例吗

    我正在尝试使用 Amazon Web Services 查询艺术家和标题信息并接收回专辑封面 使用 C 我找不到任何与此接近的示例 所有在线示例都已过时 并且不适用于 AWS 的较新版本 有一个开源项目CodePlex http www c
  • 如何对 Web Api 操作进行后调用?

    我创建了一个 Web API 操作 如下所示 HttpPost public void Load string siteName string providerName UserDetails userDetails implementat
  • C++ 密码屏蔽

    我正在编写一个代码来接收密码输入 下面是我的代码 程序运行良好 但问题是除了数字和字母字符之外的其他键也被读取 例如删除 插入等 我知道如何避免它吗 特q string pw char c while c 13 Loop until Ent
  • 用于 C# 的 TripleDES IV?

    所以当我说这样的话 TripleDES tripledes TripleDES Create Rfc2898DeriveBytes pdb new Rfc2898DeriveBytes password plain tripledes Ke
  • 如何在 C# 中调整图像大小同时保持高质量?

    我从这里找到了一篇关于图像处理的文章 http www switchonthecode com tutorials csharp tutorial image editing saving cropping and resizing htt
  • 如何在按钮单击时模拟按键 - Unity

    我对 Unity 中的脚本编写非常陌生 我正在尝试创建一个按钮 一旦单击它就需要模拟按下 F 键 要拾取一个项目 这是我当前的代码 在编写此代码之前我浏览了所有统一论坛 但找不到任何有效的东西 Code using System Colle
  • 如何使用 Word Automation 获取页面范围

    如何使用办公自动化找到 Microsoft Word 中第 n 页的范围 似乎没有 getPageRange n 函数 并且不清楚它们是如何划分的 这就是您从 VBA 执行此操作的方法 转换为 Matlab COM 调用应该相当简单 Pub

随机推荐

  • wifi和AP共存方案研究--Android8.0

    目录 Android原生不支持Wifi和AP同时打开 Android对同时开Wifi和AP的限制地方 1 设置 2 framework 3 Fwk与HAL层的代理 4 HAL层部分 可能遇到的问题 附 想象这样一个场景 你的手机通过某种方式
  • MIT 6.s081 Lab2 学习笔记

    因为发现写笔记能促进自己学习 提出问题 所以记笔记 risk 5如何启动 其实是通过kernerl kernel ld跳到汇编文件kernel entry S 里面 OUTPUT ARCH riscv ENTRY entry SECTION
  • JAVA中的@interface

    注解 interface不是接口是注解类 在jdk1 5之后加入的功能 使用 interface自定义注解时 自动继承了java lang annotation Annotation接口 在定义注解时 不能继承其他的注解或接口 interf
  • 【笔试强训选择题】Day27.习题(错题)解析

    作者简介 大家好 我是未央 博客首页 未央 303 系列专栏 笔试强训选择题 每日一句 人的一生 可以有所作为的时机只有一次 那就是现在 文章目录 前言 一 Day27习题 错题 解析 总结 前言 1 解析 A 相关知识点 本题主要考察有关
  • linux 如何隐藏 /proc/目录下的文件(version 2.6 其他版本没适配)

    只为研究而用 禁止用于非法行为 通过加载此模块 来将 proc目录下的文件进行隐藏 使用方式 insmod xx ko hidestr xxxx include
  • Django框架 - 应用命名空间app_name和实例命名空间namespace的区别

    Django框架学习笔记 include 区分app name和namespace 文章目录 前言 app name的两种写法 namespace的写法 namespace默认值 namespace的唯一性 app name的唯一性 结论
  • VMware Linux 可视化增加磁盘

    1 VMware 增加磁盘 2 disks挂载磁盘 此处我挂载的是20G磁盘 截图只是用5G的做过程演示例子 3 验证挂载磁盘
  • Arduino智能物流小车各部分功能代码详解(省工程训练能力综合竞赛)

    文章目录 前言 测试部分 循迹部分 超声波测距部分 避障部分 机械臂控制部分 扫码部分 初赛部分 前言 考虑到之前那篇博客写的太简略 也只给了一个最终代码 比较容易让人看不懂 本篇主要写一些不同功能函数的代码讲解 要看整体部分的请前往我的另
  • QT第五个参数讲解

    二 connect的第五个参数 参数type定义了信号和槽的关联方式 Qt支持6种连接方式 其中3中最主要 1 Qt AutoConnection 自动方式 Qt的默认连接方式 如果信号的发出和接收这个信号的对象同属一个线程 那个工作方式与
  • 第一篇:mysqlcluster数据库集群的搭建和配置

    当系统的规模达到一定程度后 数据库在系统中慢慢成为一个瓶颈 因此需要对数据库进行扩展 数据库集群时一种解决数据库负荷的有效手段 本篇主要是描述了数据库集群如何搭建和配置的过程 一 mysql集群的规划 mysql集群由管理节点 数据节点 m
  • Python 语言对面向对象的支持

    其实许多知识点 我们看似已经熟悉还不能再熟悉 而且有些代码已经成为习惯 因为我们对他们太熟悉了 而忘记问一句为什么会这样写 所以适当抽出时间对一些过往的或者熟悉知识进行整理 可能会有意想不到的收获 Python 语言对面向对象的支持 当初
  • 【PHP】Phpstorm环境配置与应用

    一 Phpstorm环境配置 1 点击左上端File 选择下拉框中的setting 进入环境配置页面 如下图 2 如下图点击1处 选中下拉框中的Deployment Type 图示2处 下拉框中选择Local or mounted fold
  • ADB详解

    文章目录 ADB概述 一 安装与连接 二 常规使用方法 三 Adb shell 四 性能统计dumpsys 五 Monkey工具 ADB概述 ADB Android Debug Bridge 顾名思义 安卓调试桥 是一种功能多样的命令行工具
  • 不同jdk环境导致md5不一致

    加密访问接口 运行jar包发现就导致错误 idea测试没有问题 这还都是在本机运行 单步调试发现出现结果不一致地方出现在以下代码处 MessageDigest sec MessageDigest getInstance MD5 sec re
  • 部门来了个拿25k出来的00后测试卷王,老油条表示真干不过,已被...

    内卷的来源 内卷最早的 出处 是几张名校学霸的图片 大学生们刷爆朋友圈的几张 内卷 图片是这样的 有的人骑在自行车上看书 有的人宿舍床上铺满了一摞摞的书 有的人甚至边骑车边端着电脑写论文 这些图片最早在清华北大的学霸之间流传 之后 边骑车边
  • Linux共享文件夹到windows服务器

    1 安装Samba yum y install samba samba client samba common 2 添加要使用的账号 useradd s sbin nologin username smbpasswd a username
  • 闭眼推荐,9 个不能错过的机器学习数据集

    内容一览 本期整理了 HyperAI超神经官网近期更新的 9 个数据集 涉及人脸识别 姿态估计 自动驾驶三个领域 关键词 人脸识别 姿态估计 自动驾驶 本文首发自微信公众号 HyperAI 超神经 近期 HyperAI超神经官网更新了 30
  • springboot + vue项目本地化部署配置内+外网

    1 项目使用nginx做访问代理 配置如下 内网访问配置 server listen 80 server name 192 168 0 235 client max body size 100M charset koi8 r access
  • 开发Hololens遇到The type or namespace name ‘HandMeshVertex‘ could not be found..

    The type or namespace name HandMeshVertex could not be found are you missing a using directive or an assembly reference
  • C语言——循环控制语句

    文章目录 循环控制语句 for循环控制 1 基本语法 2 注意事项和细节说明 3 练习 1 打印1 100之间所有是9的倍数的整数的个数及总和 使用for完成 2 先死后活的一种编程思想 while循环控制 1 基本语法 2 注意事项和细节