大一计科小白为期末复习所整理,不喜勿喷
教材为C程序设计(第五版)谭浩强第五章循环结构程序设计
5.1为什么需要循环控制
用循环控制处理重复问题,如:检查30个学生的成绩是否合格。输出一万次“hello world!”
5.2用while语句实现循环
基本语法:
![](https://img-blog.csdnimg.cn/img_convert/20525e0da427dc138eb89f0f4a097c5c.png)
while(表达式)语句
【说明】
循环体只能是一个语句,可以是一个简单的语句,也可以是一个复合的语句(用花括号括起来的若干语句),执行循环体的次数由循环条件控制,这个循环条件就是表达式,当此表达式的值为真的时候就执行循环体语句,为假的时候就不执行
While语句可简单的记为只要当循环条件表达式为真(即给定的条件成立时),就执行循环体语句
非0即为真
while先判断再执行
循环条件是返回一个表示真(非0)假(0)的表达时候
【例5.1】
求1+2+3+4+……+100
编写程序:
![](https://img-blog.csdnimg.cn/img_convert/de1f0a6ad75c4aa71d2795c891890562.png)
【例1】
打印40-200之间所有偶数
编写程序:
![](https://img-blog.csdnimg.cn/img_convert/2744ce4e360f29e67f03ff97b458f6f5.png)
【例2】
打印1-100之间能被3整除的数
编写程序:
![](https://img-blog.csdnimg.cn/img_convert/f0ac721badfb25a11f5995bcd808df2b.png)
5.3用do…while语句实现循环
基本语法:
![](https://img-blog.csdnimg.cn/img_convert/fb3a547a617edd7295934c4fd228fa23.png)
【说明】
循环条件是返回一个表示真(非0)假(0)的表达时候
do…while先执行再判断
【例5.2】
用do…while语句求1+2+3+…+100
编写程序:
![](https://img-blog.csdnimg.cn/img_convert/b38ffb0632fb20865d681f0f079396e4.png)
#include<stdio.h>
int main( )
{
int i=1;//循环变量初始化
int sum=0;
do//循环结构开始
{
sum=sum+i;//循环体
i++;//循环变量迭代
}
while(i<=100);//循环条件
printf("sum=%d",sum);
}
【例3】
统计1-200之间可以被5整除但不被三整除的个数
编写程序:
![](https://img-blog.csdnimg.cn/img_convert/af6e7a02fb482a2e454c81d0c5ba8d09.png)
5.4用for语句实现循环
基本语法:
![](https://img-blog.csdnimg.cn/img_convert/08143301d4ce115cbeaa1ca3ad3f9446.png)
例如:
for(i=1;i<=100;i++)
sum=sum+i;
【注意】
for(表达式1;表达式2;表达式3 )语句
可改写为while循环的形式:
表达式1;
while 表达式2
{
语句
表达式3
}
【说明】
表达式1可以省略,即不设置初值,但表达式1后的分号不能省略。例如:
int i=1;
for(;i<=100;i++)
sum=sum+i;
表达式2也可以省略,循环无终止的进行
表达式3也可省略
【例4】
用for语句求1+2+3+……+100=?
编写程序:
#include<stdio.h>
int main( )
{
int sum=0,i;
for(i=1;i<=100;i++)
sum=sum+i;
printf("sum=%d",sum);
}
【例5】
得到以下
![](https://img-blog.csdnimg.cn/img_convert/b0665d0bf5eef684fcaccb933fea84c8.png)
编写程序:
![](https://img-blog.csdnimg.cn/img_convert/111f1a90b32b91b387e2c2273bc3b94c.png)
5.5循环的嵌套
![](https://img-blog.csdnimg.cn/img_convert/3bc4074ce5ad04096153042ce7ac8053.jpeg)
【例6】
统计三个班成绩情况,每个班有5名同学,求出各个班的平均分和所有班级的平均分,并统计三个班的及格人数;
思路:
【先死后活,先简单再复杂】
各个班的平均分
所有班级的平均分,得到所有班级的总分allclasstotalscore
定义变量表示 班级个数,定义变量表示 学生个数stunum
定义变量 classtotalscore每个班级的总分
定义变量score,接收学生成绩
使用两层for循环
定义变量count,保存及格人数
if 语句判断是否及格,若及格,累积到count
编写程序:
#include<stdio.h>
int main()
{
int classnum=3;
int stunum=5;
int i,j;
double score=0.0;
double classtotalscore=0.0;
double allclasstotalscore=0.0;
int count=0;
for(i=1;i<=classnum;i++)
{
classtotalscore=0.0;
for(j=1;j<=stunum;j++)
{
printf("\n请输入第%d个班第%d名同学的成绩:\n",i,j);
scanf("%lf",&score);
if(score>=60)
{
count++;
}
classtotalscore+=score;
}
allclasstotalscore+=classtotalscore;
printf("\n第%d个班级的平均分是:%.2f\n",i,classtotalscore/stunum);
}
printf("所有班级的平均分=%.2f\n",allclasstotalscore/(classnum*stunum));
printf("及格人数=%d",count);
}
【注意】大括号的使用
【例7】
打印九九乘法表
编写程序:
![](https://img-blog.csdnimg.cn/img_convert/5935d7afef4b37fe65c2b892332eb8a2.png)
【说明】
先打印一列,再打印多列
注意分析,逐步完成
注意最后printf中先j后i