C博客作业02--循环结构
0.展示PTA总分(0----2)#
1.本章学习总结(2分)#
1.1 学习内容总结##
- for语句,do-while语句,以及while语句三种语句的嵌套循环。
-
三种语句可以嵌套使用,解决复杂问题。在嵌套循环中,如果要遇到一个break,只能结束当前的循环,并不能结束所有循环,如果要结束所有循环,必须每层都要加一个break,称为接力break,或者用goto语句,直接跳到想要去的地方;如果遇到continue,则只是结束本轮的循环,还会进行下一轮的循环。break可以用于循环,也可用于switch,但continue只能用于循环。
-
for语句的一般形式为:
for(表达式1;表达式2;表达式3)
循环体语句
其中表达式1是初值表达式,对循环变量赋初值;表达式2是条件表达式,给出循环的条件;表达式3是步长表达式,改变循环变量的值,帮助走出循环。注意for语句后面不能随意加分号。 -
do-while语句一般形式为:
do {
循环体语句
}while(表达式) -
while语句一般形式为:
while(表达式)
循环体语句; -
三者的区别在于do-while无论条件是否成立,都会事先做一次循环。
三种循环体语句,都可以解决循环问题,在一定情况下可以互换,for语句一般用在循环次数已知或者有明显规律的题型中,另外两种则适用于循环次数未知。
-
1.2 本章学习体会##
- 又通过这两周的学习,我感觉又收获了好多,知识点虽然知道的比以前多了,但应用起来,还是很乏力,就拿PTA的题来说,总是一道题做的非常慢,要想好久才能想出来,感觉有点累了,并且PTA的习题集有点跟不上了,感觉C语言的作业慢慢多了起来,因为还要复习预习课本,并且还有高数和线代,所以这周学起来感觉有点乏力,总感觉时间不够用,我不敢说我100%都在学习,但起码我70%还是有的,可感觉时间还是不够用,可能我需要更加努力了。通过这两周,我主要想知道PTA,C语言题目是不是一个类型一个类型的,我找不到分类,对一个题不知道它是什么类型的,该用哪种方法做,不知道方法,还有一个就是,尽管PTA的题目过了,但如果上午过的,到下午好像就没什么印象了,老是记不住,还得重新思考。
- 这两周的代码量706。
2.PTA实验作业(6分)#
**2.1 最佳情侣身高差 **##
2.1.1 伪代码###
定义变量N为前来查询的用户数量,ch判断性别,h为一方身高,H为另一方身高。
输入查询用户数
while(N--)
输入一个字符和一方身高
判断性别并计算另一方身高
输出另一方身高
end while
2.1.2 代码截图###
2.1.3 造测试数据###
输入数据 | 输出数据 | 说明 |
---|---|---|
2 M 1.75 F 1.8 | 1.61 1.96 | sample等价 |
2 M 1.00 F 3.0 | 0.92 3.27 | 最高、最矮的男女生 |
1 M 1.09 | 1.00 | 最小N,正好整除 |
2.1.4 PTA提交列表及说明###
1.部分正确:是因为输出格式错误,忘了打回车键,没有换行。
2.部分正确:答案错误,测试了一下发现确实是,当最高、最矮的男女生和最大N,随机数据是错误。
3.答案正确:我把字符和身高分别输出,不放一起,结果就对了。
2.2求n以内最大的k个素数以及它们的和##
2.2.1 伪代码###
定义变量n,k分别为素数的范围和个数,若不够k则按实际输出,count为真正素数的个数,K存储k的值,i用于判断是否为素数,sum为素数的和。
输入n和k,并把k的值存到K中
for (; n >= 2 && k > 0; n--)
判断是否为素数
记录素数的个数
判断素数个数是否够k个
按不同情况输出“n的值”或“n的值+”并计算sum
end for
最后输出=sum的值
2.2.2代码截图###
2.2.3 造测试数据###
输入数据 | 输出数据 | 说明 |
---|---|---|
1000 10 | 997+991+983+977+971+967+953+947+941+937=9664 | 最大数据 |
12 6 | 11+7+5+3+2=28 | 不足k个素数 |
10 1 | 7=7 | 最小数据 |
15 6 | 13+11+7+5+3+2=41 | 正常数据 |
2.2.4 PTA提交列表及说明###
1.部分正确:少考虑了当k正好是素数的个数的情况。
2.答案正确:把k刚好为素数的个数的情况加上去就对了。
2.3单词长度##
2.3.1伪代码###
定义变量ch为输入的字母及其他字符,item判断是否为第一个单词,flag判断空格,i用于计单词长度。
while((ch = getchar()) != '.')
if字符不等于空格 then
flag = 1
i++
else if (flag == 0)
继续下一轮循环
else if (item == 0)
输出i的值
i = 0;
flag = 0;
item = 1;
else
输出i的值
i = 0;
flag = 0;
end if
end while
if (i && item == 0)
输出i的值
else if (i)
输出i的值
end if
2.3.2代码截图###
2.3.3 造测试数据###
输入数据 | 输出数据 | 说明 |
---|---|---|
It's great to see you here. | 4 5 2 3 3 4 | sample等价 |
she. | 1 | 一个单词 |
She is a good girl . | 3 2 1 4 4 | 开头结尾多空格 |
He is her friend. | 2 2 3 6 | 连续多个空格 |
2.3.4 PTA提交列表及说明###
1.部分正确:最后一次输出时,少输出了一个空格。
2.部分正确:当一个单词时,多输出了一个空格。
3.答案正确:最后多加一个条件,要求输出不带空格的,然后就对了。
3.代码互评(2分)#
同学代码截图##
自己代码截图##
1.我用的是if-else的分支,他用的是if语句的嵌套,显然嵌套的话,就比较简单明了,增加了可读性。
同学代码截图##
自己代码截图##
1.我把跑的过程中的规律找了出来,类似解一个数学问题,而他的代码是利用for循环来解决路程问题。
2.我的代码写出来要费时间找规律,而他的则根据逻辑,找了一个循环来做这件事,省时省力。