这个作业属于哪个课程 | C语言程序设计II |
---|---|
这个作业要求在哪里 | https://edu.cnblogs.com/campus/zswxy/CST2020-1/homework/11493 |
我在这个课程的目标是 | 更好的理解现在所学习的内容,补充细节和框架 |
这个作业在哪个具体方面帮助我实现目标 | 思维导图和代码互评 |
参考文献 | 《C Primer Plus》 |
1.PTA实验作业
1.1实验4-2-3 验证“哥德巴赫猜想” (20分)
数学领域著名的“哥德巴赫猜想”的大致意思是:任何一个大于2的偶数总能表示为两个素数之和。比如:24=5+19,其中5和19都是素数。本实验的任务是设计一个程序,验证20亿以内的偶数都可以分解成两个素数之和。
1.1.1 数据处理
数据表达:
1.变量n:由输入得来,类型为整型;
2.变量i:由赋值得来,类型为整型;
3.变量flag:由赋值得来,类型为整型;
4.变量a:由赋值得来,类型为整型;
5.变量b:由赋值计算得来,类型为整型;
6.变量x: 由输入得来,形式参数,类型为整型;
7.变量prime:由赋值得来,实际参数,类型为整型。
数据处理:
1.表达式:赋值表达式,算术表达式,关系表达式,逻辑表达式。
2.流程结构:声明自定义函数;主函数:1.定义变量,2.输入变量,3.while循环(判断两个整数是否为素数,相加是否为所输入的值);自定义函数Prime:1.定义返回值,2.赋值返回值,3.用if-else语句判断是否为素数。
3.主调函数:main,被调函数:Prime,类型为int,形参为x,实参为prime,i,类型均为int。
1.1.2 实验代码截图
1.1.3 造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
8 | 8 = 3 + 5 | 8的素数和中P最小的为3 |
5996 | 5996 = 43 + 5953 | 当p较大时的输出 |
3 | 输入为奇数,不满足题目要求,无输出 |
1.1.4 PTA提交列表及说明
编译错误:在vs中编写的程序,复制粘贴过来后忘记删除_s。
部分正确:测试点2,测试点3运行超时。
部分正确:测试点3,答案错误,后发现是判断素数时循环中少了一个等于号,导致部分不是素数被判断为素数。
1.2 7-12 打印沙漏 (20分)
本题要求你写个程序把给定的符号打印成沙漏的形状。例如给定17个“*”,要求按下列格式打印:
*****
***
*
***
*****
所谓“沙漏形状”,是指每行输出奇数个符号;各行符号中心对齐;相邻两行符号数差2;符号数先从大到小顺序递减到1,再从小到大顺序递增;首尾符号数相等。
给定任意N个符号,不一定能正好组成一个沙漏。要求打印出的沙漏能用掉尽可能多的符号。
1.2.1 数据处理
数据表达:
1.变量n:由输入得来,为整型;
2.变量row:由计算得来,为整型;
3.变量s:由计算得来,为整型;
4.变量a:由赋值得来,为整型;
5.变量c:由输入得来,为字符;
6.变量i,j:由赋值,计算得来,为整型。
数据处理:
1.表达式:赋值表达式,算术表达式。
2.流程结构:定义变量,输入变量,for循环计算,for循环嵌套for循环分别输出空格与字符,输出剩余的字符。
3.函数参数:主调函数main,无被调函数。
1.2.2 实验代码截图
1.2.3 造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
1 | * 0 | 输出一行,剩余0 |
6 | * 5 | 因为不满足输出三行,所以只输出一行,剩余5个 |
17 | 0 | 刚好满足输出五行,于是输出沙漏并输出0 |
1.2.4 PTA提交列表及说明
编译错误:在vs中编写的程序,复制粘贴过来后忘记删除_s;
部分正确:测试点2,测试点3,测试点4错误,因为当字符不满三行时仍然输出三行;
部分正确:测试点3错误,当出现最小n及最大于时,仍然多显示两行,且余数显示负数。
2.代码互评
同学代码:
1.
2.
自己代码:
不同:
第一份代码中编写了两个自定义函数,将判断是否为素数,与判断是否相加等于输入的数字分别用自定义函数表达,节省了运行时间,主函数也更简洁明了。
第二份代码中判断素数的自定义函数运用了函数返回值的特性,1是真,0是假,在主函数的if语句中直接判断真假,而不需要自己再定义一个变量来存储返回值。
3.学习总结
3.1 学习进度条
周/日期 | 这周所花时间 | 代码行 | 学到的知识点简介 | 目前比较困惑的问题 |
---|---|---|---|---|
第八周 | 30小时 | 600 | 基础知识,输入输出函数if-else语句 | 无 |
第九周 | 30小时 | 700 | for循环,while循环,switch语句,数组 | 怎样用数组打出金字塔和蛇形数组 |
第十周 | 30小时 | 500 | 无 | 二维数组的使用 |
第十一周 | 25小时 | 550 | 自定义函数,命名法 | 怎样解决自己的暴力解题思路,让代码更直观简洁 |
3.2 累积代码行和博客字数
3.3 学习内容总结和感悟
3.3.1 学习内容总结
3#3.3.2 感悟
这周学习了自定义函数,之前写题时碰到不少的运行超时都随着自定义函数的的到来解决了,也证明了我现在写题的方式是十分表层的,还有很多东西都没有接触到,希望下周继续加油。