一、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后面的其他语句。