1.PTA实验作业(20分/题)
![](https://img2020.cnblogs.com/blog/2181282/202012/2181282-20201220151839705-1530739325.png)
1.1 打印九九口诀表
下面是一个完整的下三角九九口诀表:
1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
1*4=4 2*4=8 3*4=12 4*4=16
1*5=5 2*5=10 3*5=15 4*5=20 5*5=25
1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36
1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49
1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64
1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81
本题要求对任意给定的一位正整数N,输出从1*1到N*N的部分口诀表。
输入格式:
输入在一行中给出一个正整数N(1≤N≤9)。
输出格式:
输出下三角N*N部分口诀表,其中等号右边数字占4位、左对齐。
输入样例:
4
输出样例:
1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
1*4=4 2*4=8 3*4=12 4*4=16
1.1.1数据处理
数据表达:所用变量:i,j,N;这些变量的值的来源:N是输入的值,i是外循环的次数,与输入的N的值有关,j是内循环的次数,与i的值有关;所属类型:都属于整型(int)。
数据处理:数据用到的表达式:无;流程结构:循环结构(for语句),选择结构(if语句)。
1.1.2实验代码截图
![](https://img2020.cnblogs.com/blog/2181282/202012/2181282-20201220025442192-351612694.png)
1.1.3 造测试数据
输入数据 |
输出数据 |
说明 |
4 |
![](https://img2020.cnblogs.com/blog/2181282/202012/2181282-20201220030555303-1218326364.png) |
打印1×1至4×4的乘法表 |
2 |
![](https://img2020.cnblogs.com/blog/2181282/202012/2181282-20201220030724069-1594047609.png) |
打印1×1至2×2的乘法表 |
5 |
![](https://img2020.cnblogs.com/blog/2181282/202012/2181282-20201220030737817-1908434915.png) |
打印1×1至5×5的乘法表 |
7 |
![](https://img2020.cnblogs.com/blog/2181282/202012/2181282-20201220030806596-988868969.png) |
打印1×1至7×7的乘法表 |
9 |
![](https://img2020.cnblogs.com/blog/2181282/202012/2181282-20201220030817329-1745890080.png) |
打印1×1至9×9的乘法表 |
1.1.4 PTA提交列表及说明
提交列表说明:
![](https://img2020.cnblogs.com/blog/2181282/202012/2181282-20201220025316306-910200720.jpg)
1.多种错误:答案错误和格式错误,输出时i与j的值输反了;
解决办法:将输出i与j的值交换。
2.部分错误:刚开始没发现什么,后发现题中要求等号的右边数字占4位、左对齐,就觉得是那里出了错;
解决办法:将printf("%d*%d=%d ",j,i,i*j)改为printf("%d*%d=%-4d",j,i,i*j)。
1.2 Wifi密码
下面是微博上流传的一张照片:“各位亲爱的同学们,鉴于大家有时需要使用 wifi,又怕耽误亲们的学习,现将 wifi 密码设置为下列数学题答案:A-1;B-2;C-3;D-4;请同学们自己
作答,每两日一换。谢谢合作!!~”—— 老师们为了促进学生学习也是拼了…… 本题就要求你写程序把一系列题目的答案按照卷子上给出的对应关系翻译成 wifi 的密码。这里简单假设每
道选择题都有 4 个选项,有且只有 1 个正确答案。
![](https://img2020.cnblogs.com/blog/2181282/202012/2181282-20201220000248947-874811939.jpg)
输入格式:
输入第一行给出一个正整数 N(≤ 100),随后 N 行,每行按照 编号-答案 的格式给出一道题的 4 个选项,T 表示正确选项,F 表示错误选项。选项间用空格分隔。
输出格式:
在一行中输出 wifi 密码。
输入样例:
8
A-T B-F C-F D-F
C-T B-F A-F D-F
A-F D-F C-F B-T
B-T A-F C-F D-F
B-F D-T A-F C-F
A-T C-F B-F D-F
D-T B-F C-F A-F
C-T A-F B-F D-F
输出样例:
13224143
1.2.1 数据处理
数据表达:所用变量:n,i,option,answer;这些变量的值的来源:n、option和answer是输入的值,i是循环的次数,与输入的n有关;所属类型:i与n属于整型(int),option与answer属于字符型(char)。
数据处理:数据用到的表达式:n *= 4;;流程结构:循环结构(for语句),选择结构(if语句)。
1.2.2 实验代码截图
![](https://img2020.cnblogs.com/blog/2181282/202012/2181282-20201220012450150-1207660961.png)
1.2.3 造测试数据
输入数据 |
输出数据 |
说明 |
![](https://img2020.cnblogs.com/blog/2181282/202012/2181282-20201220011749653-700780248.png) |
13224143 |
8个数字组成的WiFi密码 |
![](https://img2020.cnblogs.com/blog/2181282/202012/2181282-20201220012809795-444169985.png) |
241 |
3个数字组成的WiFi密码 |
![](https://img2020.cnblogs.com/blog/2181282/202012/2181282-20201220013517283-637750197.png) |
3412243421 |
10个数字组成的WiFi密码 |
![](https://img2020.cnblogs.com/blog/2181282/202012/2181282-20201220013645194-507994276.png) |
343421 |
6个数字组成的WiFi密码 |
1.2.4 PTA提交列表及说明
提交列表说明:
![](https://img2020.cnblogs.com/blog/2181282/202012/2181282-20201220015204184-1710703317.png)
部分错误:之前写的代码输出的答案与题中的一模一样,但提交答案时总是有一个测试点的答案错误,测试点也没说明测得哪里的;
解决办法:使输入的一个一个的判断。
2.代码互评(5分)
同学代码截图
![](https://img2020.cnblogs.com/blog/2181282/202012/2181282-20201220051925637-39401957.png)
![](https://img2020.cnblogs.com/blog/2181282/202012/2181282-20201220051917084-2074772559.png)
自己代码截图
![](https://img2020.cnblogs.com/blog/2181282/202012/2181282-20201220052009009-368516137.png)
1.张国庆同学和我的差不多,但他写的缩小了范围,是循环的次数减少了,这是我需要注意的地方,我的比他的多了一个条件,此条件是根据题中的要求设定的;
2.杨连平同学的代码及缩小了范围,是循环次数减少,又巧妙地减少了一个for循环语句的使用,相比我的来说更精简了许多,值得学习;
3.虽然我们看似差不多,但杨连平同学写的代码更精简些,其次张国庆同学的比我的要减少些循环次数。这些在以后的解题中是要值得注意的地方。
3.学习总结(15分)
3.1 学习进度条(5分)
周/日期 |
这周所花的时间 |
代码行 |
学到的知识点简介 |
目前比较迷惑的问题 |
第三周 |
4天 |
156 |
for语句 |
在综合表达式中,不知道为什么不能用"[ ]" |
第四周 |
2天 |
169 |
函数的定义和调用 |
函数的定义和调用的格式不太懂 |
第五周 |
3天 |
192 |
分支结构if-else语句和字符型(char) |
有同学作业中运用到的没学过的知识不太理解 |
第六周 |
3天 |
278 |
选择结构中的switch语句 |
解题时不能很快判断出用if-else语句好些还是用switch语句好些 |
第七周 |
5天 |
256 |
循环结构中的while与do-while |
PTA第二题的不太懂 |
第九周 |
5天 |
307 |
break和continue的使用 |
数组的运用不是很熟 |
3.2 累积代码行和博客字数(5分)
时间 |
博客字数 |
代码行数 |
第一周 |
638 |
12 |
第二周 |
562 |
97 |
第三周 |
2058 |
156 |
第四周 |
1737 |
169 |
第五周 |
2520 |
192 |
第六周 |
1780 |
278 |
第七周 |
2267 |
256 |
第九周 |
2315 |
307 |
![](https://img2020.cnblogs.com/blog/2181282/202012/2181282-20201220054514998-1260720036.png)
3.3 学习内容总结和感悟(5分)
3.3.1 学习内容总结
![](https://img2020.cnblogs.com/blog/2181282/202012/2181282-20201216171208260-750830402.png)
3.3.2 学习体会
1.老师在课堂上让我们去解决的问题(如何在嵌套循环语句中直接跳出所有的循环?),对此有以下几种方法:①一层一层地使用break;②在外面的循环语句前定义一个标号,然后在里层循环体的代码中使用带有标号的的break语句;③设置一个判断符进行判断。设置一个flag初始化为1,然后在每层循环的时候判断条件都&&flag一下,在需要跳出的地方置flag=0就可以了;④可以用return(适合特别特别小的程序或者函数);⑤可以用goto语句(不建议过分使用goto语句,容易使得程序难于理解,容易出错);
2.通过这次作业的练习,学了不少的知识,如数组的使用,break和continue的使用等等,也知道了需要注意的地方;
3.对于break和continue的使用还不太熟,要多去了解其用法和运用,还有一些没弄懂的地方也要去弄清楚;
4.问题要考虑的全面,多加思考多加练习,继续努力学习,让C语言这棵知识树越来越茂盛!