1.作业头
这个作业属于哪个课程 | https://edu.cnblogs.com/campus/zswxy/SE2020-2 |
---|---|
这个作业要求在哪里 | https://edu.cnblogs.com/campus/zswxy/SE2020-2/homework/11585 |
这个作业的目标 | <通过写一些较为复杂的代码提升我们的编程能力,让我们更加熟练本周所学的知识,夯实基础。> |
学号 | <20209136> |
一、本周教学内容&目标
第4章 循环结构 4.1-4.2 熟悉使用while和do-while结构解决问题。
二、本周作业
1.PTA实验作业
2.代码互评
3.学习总结
三、作业格式
1.PTA实验作业
请在此处列出自己的排名图片:
从PTA题目集中选出2个你最满意的题目完成以下内容,选择题目难度越大,分值越高,每题20分(每项5分),内容要求如下:
1.1题目名1: 猜数字游戏
题目内容描述:
猜数字游戏是令游戏机随机产生一个100以内的正整数,用户输入一个数对其进行猜测,需要你编写程序自动对其与随机产生的被猜数进行比较,并提示大了(“Too big”),还是小了(“Too small”),相等表示猜到了。如果猜到,则结束程序。程序还要求统计猜的次数,如果1次猜出该数,提示“Bingo!”;如果3次以内猜到该数,则提示“Lucky You!”;如果超过3次但是在N(>3)次以内(包括第N次)猜到该数,则提示“Good Guess!”;如果超过N次都没有猜到,则提示“Game Over”,并结束程序。如果在到达N次之前,用户输入了一个负数,也输出“Game Over”,并结束程序。
输入格式:
输入第一行中给出两个不超过100的正整数,分别是游戏机产生的随机数、以及猜测的最大次数N。最后每行给出一个用户的输入,直到出现负数为止。
输出格式:
在一行中输出每次猜测相应的结果,直到输出猜对的结果或“Game Over”则结束。
1.1.1数据处理
介绍实现本题过程中,你的数据表达、数据处理是怎么做的。注意:请务必按照以下方式书写。
数据表达:用到了i,p,n,m四个变量。m,p,n的值通过调用输入函数获取用户输入的数值再进行赋值,其属于整型变量。i的值通过循环逐渐累加。
数据处理:用到了赋值表达式i++,输入输出表达式,scanf("%d %d/n",&m,&p);printf("Bingo!
");用到了while,if-else结构。
伪代码
m←1
n←1
i←0
输入 "%d %d/n" &m &p while
m≥0 or n≥0
输入 "%d
"&n
if n<0andi<p+1
输出 "Game Over"
elseif n≠m and i>p+1
then printf"Game Over"
结束
elseif n=m and i=0
输出 "Bingo!
"
i++
结束
elseif n>m printf "Too big
" i++
elseif n<m
then printf "Too small
" i++ if n=m and i≤2
输出 "Lucky You!
"
结束
elseif i>2andi≤pandn=m
then printf"Good Guess!
"
elseif i≥p
then printf "Game Over
"
结束
else 不执行
1.1.2实验代码截图
1.1.3 造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
88 4 1 50 56 4 88 -5 | Too small Too small Too small Too small Game over | 超过四次猜对,输出Game over |
2 8 3 5 56 8 2 -2 | Too big Too small Too small Too small Good guess! | 在八次以内猜对数据,输出Good guess! |
68 6 9 50 56 8 60 -1 | Too small Too small Too small Too small Game over | 在六次以内没有猜对数据,输出Game over |
66 2 9 5 56 8 66 -5 | Too small Too small Game over | 超过两次没有猜对数据,输出Game over |
2 2 2 50 56 8 60 -2 | Bingo! | 超级厉害,一次就猜对了,输出Bingo! |
66 5 1 5 -2 0 60 -1 | Too small Too small Game over | 在5次之前,用户输入了一个负数,输出Game Over |
1.1.4 PTA提交列表及说明
根据PTA提交列表,简要描述调试程序碰到的问题及解决办法。
提交列表说明:
1.部分正确:把在到达p次之前,判断输入负数将输出“Game Over”并结束程序的代码加到while循环以外,搞半天脑子又混乱了,于是试着把它放进去,再进行提交。
2.部分正确:找到问题所在if(i>2&&i<p&&n==m),没有理解题目意思,改成if(i>2&&i<=p&&n==m),提交后显示答案正确。
1.2题目名2:求整数的位数及各位数字之和
题目内容描述:
输入在一行中给出一个不超过10的9次方的正整数N。
1.2.1数据处理
介绍实现本题过程中,你的数据表达、数据处理是怎么做的。注意:请务必按照以下方式书写。
数据表达:用到了x,number,y,sum,item,i,t这七个变量。x,y,number的值通过调用输入函数获取用户输入的数值再进行赋值,number属于整型变量,x,y属于双精度浮点型变量。t的值通过调用pow函数被赋值属于浮点型变量,i,sum在后面的循环中递增,其属于整型变量。item在循环中被number%10赋值,属于整型变量。
数据处理:用到了赋值表达式item=number%10; number=number/10; sum=item+sum; i+=1; 。用到了while循环结构,调用了数学函数。
伪代码
i←0
sum←0
t←pow 9 10
输入 整型 &number
if number<t
then
while number≠0
item←number%10/*除10取余赋值给item*/
number←number/10 /*除10取整赋值给number*/
sum←item+sum
i+=1
输出 浮点型 %.0f i sum
1.2.2实验代码截图
1.2.3 造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
321 | 3 6 | 三位数,各位数的和为6 |
456 | 3 15 | 三位数,各位数的和为15 |
1999 | 4 28 | 四位数,各位数的和为28 |
2001 | 4 3 | 四位数,各位数的和为3 |
250 | 3 7 | 三位数,各位数的和为7 |
520 | 3 7 | 三位数,各位数的和为7 |
9898 | 4 34 | 四位数,各位数的和为34 |
1.2.4 PTA提交列表及说明
根据PTA提交列表,简要描述调试程序碰到的问题及解决办法。
提交列表说明:
1.多种错误:出现了运行超时,答案错误,仔细查找原来是把%错打成了/导致出现错误,正确修改再次提交。
2.编译错误:修改过程中把/打成了导致编译错误,正确修改后显示答案正确。
2.代码互评
同学代码截图
自己代码截图
1.同学的代码仅仅定义了三个变量,用一个while循环就解决了问题。非常的高效。
2.我定义了七个变量,还调用了数学函数判断输入值的情况,同样使用的是while循环。但代码量较多。
同学代码截图
自己代码截图
1.整体上看我们的代码量差不多,都是先获取输入再判断,在while循环体中再添加逻辑判断语句。
2.不同的是同学使用的是goto end语句跳出循环还有else-if语句,而我使用的是break语句和if-else嵌套。同学用goto end语句做跳转更加正确,而break的使用限于for。
在
二.学习进度条
周/日期 | 代码行 | 这周所花的时间 | 学到的知识点简介 | 目前比较疑惑的问题 |
---|---|---|---|---|
第八周10.19-10.25 | 480 | 23小时 | 调用输入输出函数,输出任意的字符串。 | 输入输出格式常没有与题目一致 |
第九周10.26-11.01 | 599 | 33小时 | 数的类型,定义变量时要先考虑清楚。 | 数据溢出和负数的浮点型 |
第十周11.02-11.08 | 519 | 27小时 | for循环语句,if的判断语句。 | 多次循环与循环体中再添加变量赋值并再循环 |
第十一周11.09-11.15 | 520 | 20小时 | 定义函数,调用函数 | 调用函数和定义函数易将变量弄混淆 |
第十二周11.16-11.22 | 550 | 28小时 | 多分支结构、字符型数据类型和逻辑运算符。 | 多分支结构容易弄错,逻辑运算符使用不熟练 |
第十三周11.23-11.29 | 540 | 30小时 | 多分支结构switch语句 | switch语句使用不熟练,容易出现漏掉符号的情况 |
第十三周11.30-12.06 | 510 | 20小时 | while和do-while结构 | 在while和do-while结构的循环体中添加判断和累加代码就很难弄清 |