1.展示PTA总分
- 单循环结构
2.本章学习总结
2.1. 学习内容总结
1.循环结构
- 练习的大多都是单循环结构,例如for循环,do while循环结构等等。
- for循环:
例如c03 7-5 最佳情侣身高差 :
i=0这个语句只执行一次,i<N这个是循环条件,和i++一同循环。
for循环也需要有一个大括号来组合众多组合语句,形成复合语句。但是for()后面不需要;
- 再例如while语句和do while语句;
while语句和do-while语句:
while语句是先判断条件,条件满足后才执行循环体; do while语句是先执行循环体,后判断循环条件,
do while语句至少执行一次,但while语句可能1次都不执行。
- contimue语句和break语句:
contimue语句和break语句的区别在于,break结束循环,而continue 只是跳过后物语句继续循环。break 除了可以中止循环外,还用手switch语句,而continue只能用于
循环。
各种循环虽然用法各不相同,但是在进行程序编写时效果相似,只是在方便性上有些许不同。
2.嵌套循环
- for循环语句的嵌套运用尤其普遍:
for循环的嵌套分出了外循环和内循环:
例如:
此题外循环循环了4次,但是外循环每循环一次,内循环就会循环四次,所以最后内循环循环了16次。
- 嵌套循环的运用大大减小了某些程序的复杂性,也缩减了代码量,使得程序运行的效率大大提升了。
2.2 本章学习体会
在本章学习过程中,我还没能改掉自己拖拉的毛病,在学习单循环结构时,pta作业的完成依旧需要班助和同学的帮助,自我解决问题的能力还依旧处于较低阶段,尤其是vs调试的能力非常差,但是通过一些视频文本资料的帮助,也改掉了自身的一些不足之处,关于嵌套循环学习的一个很严重的问题就是不能明确的知道外循环和内循环的内容,还有就是循环的条件不清楚,一些马虎容易犯的错误已经记住并且改正了,真的就像老师说的,只有自己实践过才懂得透彻,做的顺手。
-
周代码量:
第一周|第二周
:-😐:-:
356|435
3.PTA实验作业
3.1 7-7 猜数字游戏
3.1.1 伪代码
int mynumber
;定义客户输入的数字;
int yournumber
;定义电脑定义的随机数;
int i=1
;定义客户猜到之前循环的次数;
int n
;定义可以进行猜数的最大次数;
scanf
(输入电脑定义的随机数mynumber和最大次数n);
while
(循环条件循环n次后停止)
if (yournumber >= 0)
;先定义客户输入的数字是正数的情况
if (yournumber > mynumber)
;猜的数字比随机数大时;
else if (yournumber < mynumber)
;猜的数比随机数小时;
两个输出不同的结果;
当两个数相等时,
if (i == 1)
;只猜了一次就猜中;
{
printf("Bingo!\n"); break;
}
else if (i <= 3)
;猜了三次以下;
{
printf("Lucky You!\n"); break;
}
else
;在n次以内猜到数字
{
printf("Good Guess!\n"); break;
}
在输入负数以及猜的次数在n次以上:
{
printf("Game Over\n");输出结果;
break;提前结束
}
i++;对i进行累加;
}
if (i > n)
{
printf("Game Over\n");超出n最大值后输出程序结束;
}````
#### 3.1.2代码截图
![](https://img2018.cnblogs.com/blog/1776748/201910/1776748-20191020181928065-1391084080.png)
![](https://img2018.cnblogs.com/blog/1776748/201910/1776748-20191020181935551-1156792329.png)
#### 3.1.3 造测试数据
输入数据|输出数据|说明
:-:|:-:|:-:
50 5 55|Game Over|正常数据
5 -2 66|Game Overn|为负数,直接结束,正常数据
56 1 56|Bingo!|猜一次就成功,正常数据
####3.1.4 PTA提交列表及说明
![](https://img2018.cnblogs.com/blog/1776748/201910/1776748-20191020192849802-1275406968.png)
Q1:编译错误是因为将if语句中的break写到了大括号外面
A:将break移到大括号外面来允许下一个语句的运行;
Q2: 部分正确是把猜想次数的前提条件弄错;
A:把条件划分为以1,3,n为节点的范围;
## 3.2 7-8 念数字
输入一个整数,输出每个数字对应的拼音。当整数为负数时,先输出fu字。十个数字对应的拼音如下:
#### 3.2.1 数据处理
````char a;````定义这个字符表示整数;
````int flag = 0;````定义一个数据来表述后面要不要加空格;
````scanf("%c", &a);````输入这个字符;
````if (flag == 1)````;代表输出空格;
````{
printf(" ");
}
flag = 1;````给这个变量一个固定的值,到循环结束都带空格;
````switch(a)````
判断输出不同的字符代表对应的不同的字;
继续输入a,不断循环;
#### 3.2.2 代码截图
![](https://img2018.cnblogs.com/blog/1776748/201910/1776748-20191020194320214-1000151904.png)
#### 3.2.3 造测试数据
输入数据|输出数据|说明
:-:|:-:|:-:
0|ling|正常数据
12|yi er|正常数据
-1|fu yi|当输入的数为负数的情况
#### 3.2.4 PTA提交列表及说明
![](https://img2018.cnblogs.com/blog/1776748/201910/1776748-20191020194745344-9083178.png)
Q1:没有用变量flag来区分什么时候用空格
A:加上flag=1表示在输出后面加空格,第一次定义为0,便是开头不加空格;
Q2:没有用符号定义输入,而使用的int a,case后面的数字也没有加‘’
A:改用char定义a,并且在case后面的数字上加上‘’
## 3.3 7-9 龟兔赛跑
乌龟与兔子进行赛跑,跑场是一个矩型跑道,跑道边可以随地进行休息。乌龟每分钟可以前进3米,兔子每分钟前进9米;兔子嫌乌龟跑得慢,觉得肯定能跑赢乌龟,于是,每跑10分钟回头看一下乌龟,若发现自己超过乌龟,就在路边休息,每次休息30分钟,否则继续跑10分钟;而乌龟非常努力,一直跑,不休息。假定乌龟与兔子在同一起点同一时刻开始起跑,请问T分钟后乌龟和兔子谁跑得快?
#### 3.3.1 数据处理
````int t=0;````定义比赛时间;
```` int t1=0;````定义兔子跑步的时间;
````int t2=0;````定义乌龟跑步的时间;
````int W=0;````定义兔子跑的路程;
```` int T=0;````定义乌龟跑的路程;
输入比赛时间t```` scanf("%d",&t);````
当比赛还没结束时,
若兔子跑10分钟的倍数,乌龟跑步时间t2要加上兔子休息的30分钟:
````if(兔子跑了10的倍数且兔子领先于乌龟){
t2=t1+30;乌龟跑步时间加兔子休息的30分钟
while(兔子用的时间比乌龟短){
乌龟的路程每分钟加3;
t1++;
}````
if(乌龟走的路程大于兔子走的路程)
{
输出@_@
}
else if(两者走的路程相等)
{
输出-_-
}
else兔子走的路程大于乌龟
{
输出^_^
}
#### 3.3.2 代码截图
![](https://img2018.cnblogs.com/blog/1776748/201910/1776748-20191020204057332-1508006705.png)
![](https://img2018.cnblogs.com/blog/1776748/201910/1776748-20191020204109738-1887149942.png)
#### 3.3.3 造测试数据
输入数据|输出数据|说明
:-:|:-:|:-:
0|-_- 0|比赛时间为0
12|^_^ 81|正常数据
10|^_^ 90|正常数据
#### 3.3.4 PTA提交列表及说明
![](https://img2018.cnblogs.com/blog/1776748/201910/1776748-20191020204936682-1135638337.png)
在vs调试中出现的问题:
Q1:scanf()后忘记加;
A:加上;后继续调试。
Q2:忘记给W,T赋初始值0.
A:给W,T赋予初始值0之后可以进行正常运算。
# 4.代码互评
### 同学代码截图
![](https://img2018.cnblogs.com/blog/1776748/201910/1776748-20191020213554958-1595832751.png)
![](https://img2018.cnblogs.com/blog/1776748/201910/1776748-20191020213607122-846923594.png)
### 自己代码截图
![](https://img2018.cnblogs.com/blog/1776748/201910/1776748-20191020214319015-1875205000.png)
![](https://img2018.cnblogs.com/blog/1776748/201910/1776748-20191020214325091-969911999.png)
* 不同之处:1.同学的代码比我的变量的定义要更加明确;
2.同学使用的是for循环结构,而我使用的是while语句;
3.同学的程序比我的要简洁易懂
### 同学代码截图
![](https://img2018.cnblogs.com/blog/1776748/201910/1776748-20191020215019881-1404215932.png)
![](https://img2018.cnblogs.com/blog/1776748/201910/1776748-20191020215025992-1289580287.png)
### 自己代码截图
![](https://img2018.cnblogs.com/blog/1776748/201910/1776748-20191020215201677-2146377149.png)
![](https://img2018.cnblogs.com/blog/1776748/201910/1776748-20191020215216286-1820029650.png)
不同之处:1.同学使用for语句,我使用while语句
2.同学使用了flag进行区分