C语言之循环控制语句用法及说明

 更新时间:2026年09月30日 10:10:12   作者:Space-oddity-fang  
还在为循环控制语句发愁吗?本文系统讲解for循环、while循环、do while循环的基本语法和注意事项,并通过打印9的倍数、统计成绩、九九乘法表等练习帮你掌握多重循环和嵌套循环的编程思想,轻松应对循环相关编程题

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)先死后活的一种编程思想

分析

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(②循环条件){
	③循环体(多条语句);
	④循环变量迭代; 
}

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 后面有一个 分号,不能省略.

2.注意事项和细节说明

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

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) 打印出九九乘法表

#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) 打印金字塔

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

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 关于《C和指针》的学习笔记

    关于《C和指针》的学习笔记

    本篇文章是对《C和指针》这本书的学习做了笔记介绍。需要的朋友参考下
    2013-05-05
  • C语言中互斥锁与自旋锁及原子操作使用浅析

    C语言中互斥锁与自旋锁及原子操作使用浅析

    今天不整GO语言,我们来分享一下以前写的C语言代码,来看看互斥锁、自旋锁和原子操作的demo,示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值
    2023-01-01
  • Qt中const QString转换 char *可能的坑

    Qt中const QString转换 char *可能的坑

    本文主要介绍了Qt中const QString转换 char *可能的坑,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-07-07
  • 基于C语言实现井字棋游戏

    基于C语言实现井字棋游戏

    这篇文章主要为大家详细介绍了基于C语言实现井字棋游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-10-10
  • C++非递归建立二叉树实例

    C++非递归建立二叉树实例

    这篇文章主要介绍了C++非递归建立二叉树的方法,实例分析了二叉树的原理与C++实现技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-04-04
  • C++实现双目立体匹配Census算法的示例代码

    C++实现双目立体匹配Census算法的示例代码

    这篇文章主要为大家详细介绍了如何利用C++实现双目立体匹配Census算法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2022-08-08
  • C++按照正态分布来排列整型数组元素

    C++按照正态分布来排列整型数组元素

    这篇文章主要介绍了C++按照正态分布来排列整型数组元素的相关资料,需要的朋友可以参考下
    2016-07-07
  • C语言 用while循环求和的平均值操作

    C语言 用while循环求和的平均值操作

    这篇文章主要介绍了C语言 用while循环求和的平均值操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-12-12
  • C语言扫雷游戏的实现代码

    C语言扫雷游戏的实现代码

    这篇文章主要为大家详细介绍了C语言扫雷游戏实现代码,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-03-03
  • C++实现扫雷经典小游戏

    C++实现扫雷经典小游戏

    这篇文章主要为大家详细介绍了C++实现扫雷经典小游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-03-03

最新评论