C语言I博客作业11

问题 答案
这个作业属于哪个课程 c语言程序设计II
这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/CST2019-1/homework/10132
我在这个课程的目标是 熟练使用C语言
这个作业在那个具体方面帮助我实现目标 pta习题
参考文献 https://blog.csdn.net/liujian20150808/article/details/50630546

1.PTA实验作业

1.1

6-2 统计各位数字之和是5的数 (20分)

本题要求实现两个函数:一个函数判断给定正整数的各位数字之和是否等于5;另一个函数统计给定区间内有多少个满足上述要求的整数,并计算这些整数的和。

1.1.1数据处理

  • 数据表达:| 变量 | 类型 | 作用 |
    | - | - | - |
    | e | 整型 | 函数返回值 |
    | x | 整型 | 各位数之和 |
    | number | 整型 | 要求判断的数字 |
    | a | 整型 | 范围左区间 |
    | b | 整型 | 范围右区间 |
    | i | 整型 | 范围统计数字 |
    | sum | 整型 | 数字和 |
    | is() | 函数 | 判断是为否符合题意的数 |
    | count_sum | 函数 | 计算和输出个数和总和 |
  • 数据处理:
    接收变量number;
    将number对10取余且平方加给x;
    当number为0时判断x是否为5;
    接收范围;
    最小值开始递增,并且判断is(a);
    如果真;计数器i加一;
    加到sum上;
    a递增到b;
    输出i与sum。

.2实验代码截图

1.1.3数据测试

输入数据 输出数据 说明
104 999 题目要求
105 105 没有
1 999 随机数

1.1.4提交列表及说明


*无

1.2

对一个十进制数的各位数字做一次平方和,称作一次迭代。如果一个十进制数能通过若干次迭代得到 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.2.1数据处理

  • 数据表达:| 变量 | 类型 | 作用 |
    | - | - | - |
    | s | 整型 | 范围下限 |
    | e | 整型 | 范围上限 |
    | x | 整型 | 被判断的数 |
    | S | 整型 | 代替s进行依次计算 |
    | flag| 函数 | 判断有无特立独行幸福数 |
    | flag2| 整型 | 判断是否为特立独行幸福数 |
    | a[] | 数组 | 记录范围内所有特立独行的数字 |
    | y | 整型 |代替数组内每一个元素进行计算 |
    | add |每一位数平方的和 |
    | happy(int x)| 函数 | 判断是否为幸福数字 |
    | prime(int x)| 函数 | 判断是否为素数 |
    | happysat(int x)| 函数 | 计算幸福值 |
    | 函数中的e| 整型 | 返回值 |
    | 函数中的max | 整型 | 记录迭代中的最大值 |
  • 数据处理:
    输入范围s e;
    从i=-1开始,调用happy函数;
    将所有返回值为1的s填入数组;
    从s递增,如果调用happy函数判断s;
    如果返回值为1;
    令flag2=1;
    将s遍历数组;
    判断数组中的每一个数在迭代至1的过程中有没有与s相等;
    如果没有;
    输出s;
    并计算幸福值;
    调用prime函数;
    如果返回值为1;
    幸福值*2;
    输出s与幸福值happysat。

1.2.2实验代码截图







1.2.3数据测试

输入数据 输出数据 说明
10 40 题目要求
110 120 无幸福数
1 1000 较大数

1.2.4 提交列表及说明

  • 部分正确:经过测试,99或999或9999或9998等会形成的死循环但不会包含自己;且最大值也不在死循环中,但是这些数最后的循环却出奇的一致,于是设置了一个判断来排除这种情况。

2.代码互评

  • 同学代码

  • 我的代码

  • 同学代码使用表达式i(int)sqrt9=(n)来判断是否为一个数的平方,我用的是遍历的方法,同学的比较节约运算时间。

3.学习阶段

| 周/日期 | 这周所花的时间 | 代码行 | 学到的知识简介 | 目前比较迷惑的问题 |
| - | - | - |
| 10/7-10/14 | 7个小时 | 130 | 选择结构的使用,变量类型的区别及使用 | 为啥老师要让我们看看不懂的代码 |
| 10/15-10月17 | 6小时 | 75 | dev c++的调试,各种运算符的起源及优先级,for循环语句的使用 | <=符号的类别及优先级;前++和后++的区别 |
| 10/18-10月26日 | 12小时 | 90 | 自定义函数的声明和调用 | for循环和while循环各自的利弊 |
| 10月27-11月1日 | 8小时 | 150 | ascll码的作用,switch case简单用法, 数组元素的简单使用,字符的输出与输入 |
| 11月2-11月8日 | 9小时 | 117 | 数组元素的进一步了解 |
| 11月9日-11月15日 | 10小时 | 110 | 伪代码是什么 |
| 11月16日-11月22日 | 7个小时 | 85 | 如何输出对齐 |
| 11月23日-11月29日 | 10小时 | 500 | 多维数组的定义,使用,计算,搜索 |
| 11月30日-12月6日 | 20个小时 | 260 | 浮点数比较大小的方法 |

3.2累计代码行的博客字数

3.3学习内容总结和感悟

3.3.1学习内容总结

*思维导图

3.3.2 学习体会

  • 解方程那道题好像有点问题,明显错误的程序却可以拿到满分,希望老师以后选题更加严谨。
posted @ 2019-12-06 21:16  ‘panzer  阅读(291)  评论(0编辑  收藏  举报