C语言I博客作业09
作业头
| 这个作业属于哪个课程 | https://edu.cnblogs.com/campus/zswxy/CST2020-4 |
|---|---|
| 这个作业要求在哪里 | https://edu.cnblogs.com/campus/zswxy/CST2020-4/homework/11637 |
| 这个作业的目标 | <回顾已学得到的知识,记录自己存在的问题,并寻找解决的办法。> |
| 学号 | <20209044> |
1.PTA实验作业(20分/题)
排名图片

从PTA题目集中选出2个你最满意的题目完成以下内容,选择题目难度越大,分值越高,每题20分(每项5分)
1.1特立独行的幸福 (25分)
对一个十进制数的各位数字做一次平方和,称作一次迭代。如果一个十进制数能通过若干次迭代得到 1,就称该数为幸福数。1 是一个幸福数。此外,例如 19 经过 1 次迭代得到 82,2 次迭代后得到 68,3 次迭代后得到 100,最后得到 1。则 19 就是幸福数。显然,在一个幸福数迭代到 1 的过程中经过的数字都是幸福数,它们的幸福是依附于初始数字的。例如 82、68、100 的幸福是依附于 19 的。而一个特立独行的幸福数,是在一个有限的区间内不依附于任何其它数字的;其独立性就是依附于它的的幸福数的个数。如果这个数还是个素数,则其独立性加倍。例如 19 在区间[1, 100] 内就是一个特立独行的幸福数,其独立性为 2×4=8。另一方面,如果一个大于1的数字经过数次迭代后进入了死循环,那这个数就不幸福。例如 29 迭代得到 85、89、145、42、20、4、16、37、58、89、…… 可见 89 到 58 形成了死循环,所以 29 就不幸福。
本题就要求你编写程序,列出给定区间内的所有特立独行的幸福数和它的独立性。
1.1.1数据处理
数据表达:定义整型变量z[10000], y[10000], x[10000], i, a, b, c, d, e, f, g, h, j, count, flag,k。静态数组在z【10000】为答案数,x【10000】为其独立性,其余为中间值。
数据处理:首先输入数据a,b范围。定义函数fact为判断素数函数,第一个for循环将所有[a,b]区间内的幸福数找出来,存进数组z[10000]中,同时在这个循环里面用fact判断素数计算其独立值,这里无限循环判定为循环次数大于20次。第二步是在再行一次for循环,每个值都有迭代的中间值,将其中间值大于a,小于b的存于数组y[10000]里面,然后判断z[count]是否等于y[count],若不等于,则输出z[count],x[count]。这里用个k计算次数,如果k==0,则[a,b]范围内没有独立幸福数,输出SAD。
1.1.2实验代码截图

1.1.3 造测试数据
| 输入数据 | 输出数据 | 数据说明 |
|---|---|---|
| 10 40 | 19 8 23 6 28 3 31 4 32 3 | 题目样例 |
| 110 120 | SAD | 没有独立幸福数 |
| 170 190 | 176 3 188 4 190 4 | 正常输入 |
1.1.4 PTA提交列表及说明!

前面编译一直都没有将静态数组赋值对。
程序数组段错误,数组1000个太小了,要10000个。
1.2 6-1 统计某类完全平方数 (20分)
本题要求实现一个函数,判断任一给定整数N是否满足条件:它是完全平方数,又至少有两位数字相同,如144、676等。
1.1.1数据处理
数据表达: 定义整形变量a, b, c, d, i,flag,count,e,f。flag为返回值,i用来储存N,其余为中间值。
数据处理:先判断是否大于99,若大于则用while计算其位数,然后用两重for循环判定其是否为完全平方数。
1.2.2实验代码截图

| 输入数据 | 输出数据 | 说明 |
|---|---|---|
| 105 500 | cnt = 6 | 题目样例 |
| 1 2 | cnt = 0 | 没有一个数 |
| -3 -9 | cnt = 0 | 负数 |
1.2.4 PTA提交列表及说明!

1.判断有位数中有两位数相等时for循环的条件错了。
2.if没有打双等于导致答案错误。
2.代码互评(5分)
找2份同代码,和自己代码比较,建议互评代码尽量找代码风格差异较大。
自己代码

同学1

用的数组储存变量,用if语句判断输出1,还是0.代码十分简洁。
同学2

.和我的不同,暴力破解,没有用循环直接一个个扣位数,再一个个比较,不是特别简巧。
3学习总结
3.1学习进度条
| 周/日期 | 这周所花的时间 | 代码行 | 学到的知识点简介 | 目前比较迷惑的问题 |
|---|---|---|---|---|
| 10/18——10/22 | 18h | 490 | printf(),scanf()的用法,if-else的用法 | 无 |
| 10/22——10/29 | 20h | 620 | for循环 | 无 |
| 10/29——11/3 | 15h | 436 | 自定义函数 | 无 |
| 11/2——11/8 | 19h | 560 | 自定义函数 | 语法的兼容性,pta总是报错,vs2019却可以运行 |
| 11/8——11/15 | 16h | 597 | 分支函数 | while函数的分支 |
| 11/15——11/22 | 24h | 719 | 分支函数if逻辑运算符 | scanf输入字符时的使用 |
| 11-22——11/29 | 32h | 480 | switch函数的使用,break的使用 | switch判断的范围 |
| 11/29——12/6 | 30h | 520 | while和do-while的结构和使用 | 使代码陷入死循环的输入样例的寻找方法 |
| 12/6——12/14 | 31h | 560 | 继续学习循环结构,并学习continue和break。 | |
| 12/14——12/21 | 29 | 453 | 学习函数,学习全局变量。 |
3.2 累积代码行和博客字数(5分)

3.3 学习内容总结和感悟(5分)
3.31学习内容总结


浙公网安备 33010602011771号