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.我的代码写出来要费时间找规律,而他的则根据逻辑,找了一个循环来做这件事,省时省力。

posted on 2019-10-20 16:50  王威。  阅读(349)  评论(0编辑  收藏  举报

导航