循环
| 这个作业属于哪个班级 | C语言--网络2011/2012 |
| ---- | ---- | ---- |
| 这个作业的地址 | [C博客作业02--循环结构](https://edu.cnblogs.com/campus/jmu/2020C/homework/11483 |
| 这个作业的目标 | 学习循环结构内容,包括for循环、while循环、循环嵌套 |
| 姓名 | 吕以晴 |
0.展示PTA总分
1.本章学习总结
本章主要学习了循环结构,其适用于在程序中需要反复执行某个功能时。
可通过循环体中的条件,来判断是应继续执行某个功能还是退出循环。
1.1 for循环语法
🌙语法展示
for(条件1;条件2;条件3)
{
循环体
}
🌙注意事项
for
循环括号内的条件可省略,但;
不能省。- 只有满足括号内条件时执行循环,若不满足则退出。
🌙简单案例
1.2 while、do while循环语法
🌙语法展示
- while循环
while(条件)
{
循环体
}
- do-while循环
do
{
循环体
}
while(条件)
🌙注意事项
while
循环和do-while
循环的区别:前者是先判断再循环;后者是先进行一次循环后再判断。
🌙简单案例
- while循环
- do-while循环
1.3 跳出循环相关语句break\continue
🌙注意事项
break
是跳出当前循环,执行循环下面的其他语句;而continue
是不执行该循环剩下的所有语句,结束本次循环,继续下一次循环的判断。- 在分支结构中用
break
语句可以使程序跳出switch
语句,继续执行其下面的程序。 break
语句只能用于循环语句与switch
语句。continue
语句只能用于循环语句。
🌙简单案例
- continue
若输入0 1 2 3 4 ,则会输出
可见,虽然第一次num=0使程序执行了continue
语句,但循环仍未退出,只是不再执行continue之后的程序(输出0后没有输出exam),终止了那一次循环,开始下一次循环(继续输出了error和exam)。
- break
若输入0 1 2 3 4 ,则会输出
可见,当第一次num=0使程序执行了break
语句,循环就直接退出了(输出了0和right)。
1.4 循环嵌套
🌙语法展示
for(条件1;条件2;条件3)
{
循环体;
for(条件a;条件b;条件c)
{
循环体;
}
}
🌙注意事项
- 嵌套循环,需注意循环内部参数的重新赋值,以免影响下次循环。
🌙简单案例
学习体会
- 循环结构的使用最应该注意的就是循环进入和退出的条件,要防止出现循环无法进入或循环无法退出的情况。
2.编程技巧总结
🌙数列求和问题
技巧
- 对于求和问题,首先第一想法应想到要使用循环结构实现累加。
- 定义变量sum时,必须先初始化sum=0。
- 注意累加的第一项和最后一项,并要关注退出循环的条件书写是否正确,防止出现死循环。
- 使用sum+=num的形式来实现累加,可根据题意对num进行适当变化。
🌙字符转为数字
技巧
- 字符与数字的转化利用的是ASCII码,如‘1’对应的ASCII码为49,而‘0’为48,所以‘1’-‘0’=1。
- 但由于ASCII码表只包含0到9的数字,所以这种方法只适用于个位数。
🌙大小写字母转化
技巧
- 字母的大小写转化同样是利用了ASCII码,小写字母az是97122,而大写字母AZ是6590。
- 所以大小写字母的转化公式为:大写字母=小写字母-32
- 又因为空格的ASCII码为32,所以也可以写成:大写字母=小写字母-‘空格’
🌙数字逆序问题
技巧
- 数字逆序问题考虑使用数组来储存需处理的数据。
- 通过循环结构将数组arr[i]与arr[n-1-i](i=0;i++)相互转化,从而实现数字的逆序。
🌙图形打印问题
技巧及注意事项
- 注意空格及字符的个数随行数变化的规律。
- 可以考虑使用双重循环来解决图形打印问题,外层循环控制层数,内层循环控制字符及空格数。
- 对于对称图形,可以以对称轴下一行为界,分为两种情况。
🌙四则运算
技巧及注意事项
- 四种运算符的优先级相同,算式是根据输入的顺序从左到右进行计算的,而非根据数学法则。即,若用户输入5+3*2,程序会先计算5+3,然后再令其值乘以2。
- 除法运算时需注意,分母不能为0,应该单独分出一种情况。
- 为实现计算的连续性,统一采用一个变量来储存各种运算的结果,并用这个结果再次参加下次运算。
- 若输入非加减乘除及数字的字符,应判定为非法运算符,输出error。
- 遇到等号后,直接输出储存结果的那个变量的值。
3.PTA实验作业
3.1 数列求和问题
🌙3.1.1 流程图或伪代码介绍思路
🌙3.1.2 截图代码
🌙3.1.3 PTA提交列表及说明
- sum定义时应该先初始化为0。
- 注意循环的次数与循环退出的条件。
- 每一项是在之前项的基础上加上一个a*pow(10,i-1)[1],而不是直接加上或乘上a。
3.2 图形打印问题
🌙3.2.1 流程图或伪代码介绍思路
🌙3.2.2 截图代码
🌙3.2.3 PTA提交列表及说明
- 注意观察每行的字符及空格数与行数的关系
- 注意合理利用ASCII码以达到字母回退的效果
- 若要输出此类空心字符,可将每行的首位及末位单列出来使其输出字符,其余情况直接输出空格即可。
3.3 计算单词长度
🌙3.3.1 单步调试截图
第一个while条件括号内写了scanf语句,但嵌套的while下也要写,否则会出现嵌套的while结构死循环,经过printf()调试,发现输入的ch恒为I
可见,若嵌套的while结构下不写scanf语句,那输入的ch就不会改变,导致死循环.
也可写为以下形式,while条件括号内用1来构造循环。
🌙3.3.2 截图代码
🌙3.3.3 PTA提交列表及说明
- 若未使用flag容易使输出时末尾错误出现空格。
- 注意字符的输入与输出均是使用%c。
i=1;i<=n;i++ ↩︎