C语言I博客作业05

问题 答案
这个作业属于那个课程 C语言程序设计II
这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/CST2019-2/homework/9826
我在这个课程的目标是 函数的定义和调用有初步的认识,能模仿编程
这个作业在那个具体方面帮助我实现目标 用C语言编写程序
参考文献 《C语言程序设计》

一、PTA实验作业

1.1水仙花数判断

题目内容描述:本题要求实现一个函数,判断任一整数是否为水仙花数(必须是三位数,且数的每一位上数字的立方和与数本身相等)。例如\(153=1^3+5^3+3^3=1+125+27=153\),而1或155则不是水仙花数。如果是水仙花数,则函数返回1,否则返回0.
函数接口定义:int func(const int N);
其中N是用户传入的参数。N的值不超过int类型的范围。如果参数N是水仙花数,则返回1,否则返回0

1.1.1数据处理

数据表达:先用int定义整型变量sum,x。再将N的值赋给x,然后用while语句执行循环。sum存放数的每一位数字的立方和。用if-else语句判断sum和N的值是否相等。如果相等则输出1,不相等输出0.
数据处理:运算符=是赋值,==是相等。sum+=(x%10)*(x%10)*(x%10)和sum=sum+(x%10)*(x%10)*(x%10)是不同的表达,相同的意义。
函数参数:主调函数是main。被调函数是func,数据类型为整型。实参是void。形参是N,数据类型为const int。

1.1.2实验代码截图

1.1.3 造测试数据

输入数据 输出数据 说明
1 0 一位数的整数,不是水仙花数
28 0 两位数的整数,不是水仙花数
153 1 是水仙花数
155 0 不是水仙花数

1.1.4 PTA提交列表及说明

1.编译错误:字母错误,把while打成了whiie。
2.编译错误:打return 0;时用了中文字符的分号。

1.2使用函数验证哥德巴赫猜想

题目内容:本题要求实现一个判断素数的简单函数,并利用该函数验证哥德巴赫猜想:任何一个不小于6的偶数均可表示为两个奇素数之和。素数就是只能被1和自身整除的正整数。注意:1不是素数,2是素数。
函数接口定义
int prime( int p );
void Goldbach( int n );
其中函数prime当用户传入参数p为素数时返回1,否则返回0;函数Goldbach按照格式“n=p+q”输出n的素数分解,其中p≤q均为素数。又因为这样的分解不唯一(例如24可以分解为5+19,还可以分解为7+17),要求必须输出所有解中p最小的解.

1.2.1 数据处理

数据表达:先用int定义两个整型变量prime,i。置prime为0,置i为2。用if语句进行判断,用了for语句执行循环。
数据处理:当m不为1时,p%i==0意为p能被某个i整除,可判定m不是素数。
函数参数:主调函数是main。被调函数是prime,数据类型是整型。实参为void。形参为p,数据类型是整型。

1.2.2 实验代码截图

1.2.3 造测试数据

输入数据 输出数据 说明
89 100 89 is a prime number 示例

1.2.4 PTA提交列表及说明

1.编译错误:在17行调用函数Goldbach时在后面多打了个分号。
2.编译错误:在赋值时少打了个等号。

二、代码互评

2.1.1题目截图

2.1.2第一份代码截图(左边的是我自己的代码,右边的是同学代码)

相同之处:使用int定义了整型变量sum,置sum的值为0.都使用sum存放一个整数的各位数字平方之和。
不同之处:1.我使用for语句,对i进行取余;她使用while语句,当n不等于0时,对n进行取余。
2.我直接用x*x计算一个整数的各位数字平方,她调用幂函数计算一个整数的各位数字平方。
3.我使用if-else语句,进行判断,如果sum取余后的值为0,输出The result is 1,否则输出The result is 0;她是直接使用return对sum进行取余。

2.2.1题目截图

2.2.2第二份代码截图(左边的是我自己的代码,右边的是同学代码)

相同之处:使用int定义了整型变量sum和x,置sum的值为0.都用了if-else语句。用sum存放数的每一位数字的立方和。
不同之处:1.我使用sum+=(x%10)*(x%10)*(x%10)计算数的每一位上数字的立方和,她调用了幂函数来计算。
2.她比我多定义了一个整型变量i。

三、学习总结

3.1 学习进度条

这周所花的时间 代码行 学到的知识点简介 目前比较迷惑的问题
第一周 6小时 29行 对C语言、markdown语法,编程有了初步的认识 对编程一窍不通,只会照着书上打
第二周 8小时 19行 学会如何提问,安装MinGW-w64并用它编译C程序 markdown语法掌握不熟练
第三周 10小时 96行 关系运算、if-else语句、格式化输入语句scanf(),以及常用的数学库函数 对编程中各大语句的运用不熟悉
第四周 13小时 93行 for循环语句实现指定次数的循环程序设计 运用for语句时经常犯很多错误
第五周 10小时 161行 用C语言编写程序 对编写函数和调用函数还有很多不熟悉

3.2 累积代码行和博客字数

3.3学习内容总结

3.4学习感悟

  • 这周学习函数的编写及调用。对函数有了深一步的了解。但在做题中还是发现自己所储备的知识太少。在每出现一个新的东西之后,都应该要去试图了解它的含义和用法,即使不能完全看懂,也能在脑海里形成对它的初步了解。这样在它下一次出现的时候就不会太慌乱。例如在做pta时用到了break语句,但这个知识要到后续章节里才学,通过查阅资料,了解到当循环结构中出现多个循环条件时,break语句应和if语句配合使用,即条件满足时,才执行break跳出循环;否则,若break无条件执行,意味着永远不会执行循环体中break后面的其他语句。
posted @ 2019-10-26 21:54  沈星楼  阅读(306)  评论(5编辑  收藏  举报