C语言I博客作业11

这个作业属于哪个课程 这个作业要求在哪里 我在这个课程的目标是 这个作业在哪个具体方面帮助我实现目标 参考文献
C语言程序设计I https://edu.cnblogs.com/campus/zswxy/CST2019-1/homework/10132 能够熟练掌握所学编程语言,并且在做作业的过程中熟练语法 每次做作业都通过使用Markdown格式巩固记忆 百度

1.PTA实验作业

1.1题目

C语言I博客作业11_第1张图片

1.1.1数据处理

数据表达:定义整型变量:i,b,c,d浮点型变量e,整型数组a,i用来让数组递增,b用来代替N参与循环,c用来判断是否由相同的数,d和e用来判断开方是否相等因为一个是整形一个是浮点型,如果开方相等说明是完全平方数,数组a用来存放各位数字并用来比较。
数据处理:用for循环把数拆开并分别放到数组里,等拆完后跳出for循环,在设定一个for循环让数组递增,再加和for循环嵌套判断是否有相同的数字,如果有c就等于1,反正等于0,再利用整型和浮点型的特性开方,如果开方得到的结果相同就表示是完全平方数就返回1,反之返回0。

1.1.2代码

C语言I博客作业11_第2张图片

1.1.3数据测试

输入数据 输出数据 说明
105 500 cnt = 6 按照题目要求测试

1.1.4PTA提交列表及说明

找不到我的了,这道题分成两个部分,首先判断各位数里面有没有两个相同的数,其次是判断是否是完全平方数,这道题比较简单所以不容易出错,基本上一遍过。

1.2题目

C语言I博客作业11_第3张图片

1.2.1数据处理

数据表达:......定义了太多变量全列出来也不太方便,就说说几个主要的,整型数组A用来存放区间内的幸福数,数组B本来是用来判断是否进入死循环的,之后李泽基同学告诉我了规律于是就把判断死循环那一节的数组B换掉了,其他的方还没换所以可以不用管数组B,数组C是用来存放数组A中幸福数的依附数,数组D是用来存放特立独行的依附数之后用来计算独立性,虽然没必要建立数组D,但是看了下发现不会超过内存就建了数组D让逻辑更清晰这样就不容易错。
数据处理:先建立一个大的for循环用于找出区间内的幸福数,然后用一个for循环把每一位拆开平方和算出依附数,本来是想用数组B存储这些依附数然后再一个个比较看有没有相同的会不会陷入死循环,后来李泽基同学告诉我当平方和等于4的时候肯定会陷入死循环,所以我就改用b是否等于4判断是否进入死循环,如果等于4就continue,如果这次迭代的结果不等于1,就用goto语句返回for循环继续迭代直到迭代结果等于1存进A数组,定义C数组用for循环加for循环嵌套把A数组所有数都拿来算依附数并存进数组C里面,然后再拿A数组和C数组里面的数一个个比对,如果在数组C中有数组A中的数就把数组A中那个数去掉,最后把剩下的那些数放进D数组,再把D数组的数一个个拿出来计算迭代次数,再判断是否为素数,是的话独立性加倍,差不多就是这样,然后一个个输出就行了。

1.2.2代码

C语言I博客作业11_第4张图片

1.2.3数据测试

输入数据 输出数据 说明
10 40 C语言I博客作业11_第5张图片 题目要求测试
2 10^4 C语言I博客作业11_第6张图片 最大范围,截不完
10001 10001 C语言I博客作业11_第7张图片 不合法数据
110 120 C语言I博客作业11_第8张图片 范围内无幸福数

1.2.4提交列表

C语言I博客作业11_第9张图片
说明:额...次数太多了我也不好一次次说,主要就是两个问题,第一次提交两个点没过,而且还不说是为什么没过,在苦试无果之后我去弄到了一位大佬的成品代码,于是就拿来和我的比较,我先在他的代码上加了个输出总数的语句,给我自己的也加上,然后运行2到10000,发现他有1404个而我的只有1300多个,在一段一段的检查的时候发现我的1115没法输出,然后又从1114到1116进行调试,发现我的数组B在运行完一个轮回后没有清零,也就是说在比较是否进入死循环的时候拿1115的依附数和一部分1114的依附数进行比较,虽然发生这种是的概率较低但还是有,之后我就更换了判断死循环的方式,果然就又过了一个测试点,最后那个我突发奇想试了一下把错误输出的SAD去掉了A,如果不是这个原因的话肯定会多一个点没过,但是一提交发现还是那个点,于是我就确定是输出SAD的时候出了问题,我就把我的代码详细的读了一遍,再把那个大佬的代码也读了一遍,发现再判断某些输出SAD的情况的时候我的逻辑有问题导致无法输出,遗憾的是我忘了是什么问题了,因为当时通过之后太高兴导致我忘了做了什么修改。总而言之这道题只要想到点子上了其实不难。

2代码互评

别人的
C语言I博客作业11_第10张图片

我的
在上面,太长了
比对:这位同学和我的最大的区别就是他定义了函数,在重复同样的步骤的时候他选择的是定义一个函数而我则没有定义函数而是再写一遍相同的语句,这样做的缺点是不仅显得代码长而且还容易出错,所以我要学习这位同学的做法,如果之后还有需要重复相同的步骤的地方应该第一时间想到定义一个函数这样可以降低代码的出错率。

3学习总结

3.1学习进度条

3.2 累积代码行和博客字数

C语言I博客作业11_第11张图片

3.3 学习内容总结和感悟

3.3.1 学习内容总结

C语言I博客作业11_第12张图片

3.3.2 学习体会

这次的幸福数是我PTA只有20分的罪魁祸首,因为我想先做做最后一题试试然后就杠上了以至于忘了前面还有题目,不过没关系做出了幸福数就算丢了分也是值得的,关于对幸福数这道题的看法我只能说说难不难说简单不简单,因为刚开始看完这道题的时候我都懵了几分钟,要做的事太多了实在是不知道从哪里下手,在经过前几次的失败之后开始有了一点思路,在大约星期五的时候知道了做出这道题的办法,大致的框架已经构建好了,然后在星期六开始攻克,现在回首发现就那么几个固定的事要做,明白了那些之后发现还是挺简单的,就是测试点不给提示很让人头痛要凭自己的感觉猜哪里会出错,要是没有之前那个大佬的正确代码做比对肯定做不出来,而且我对于函数的使用还不够得心应手,别人只要在相同的地方定义一个函数就行了大约70多行就能做出来我比他多了近一百行就是吃了没定义函数的亏。

你可能感兴趣的:(C语言I博客作业11)