C语言I作业05
2019-10-26 14:28 Sapphire丶 阅读(407) 评论(1) 编辑 收藏 举报这个作业属于那个课程 | 这个作业要求在哪里 | 我在这个课程的目标是 | 这个作业在那个具体方面帮助我实现目标 | 参考文献 |
C语言程序设计II | https://edu.cnblogs.com/campus/zswxy/CST2019-1/homework/9825 | 循序渐进,更加熟练掌握C语言 | 学习定义fun函数等 开始算法编写 | 百度 C语言程序设计 |
1.PTA实验作业
1.1 题目名
请编写函数,显示上午或下午。
函数原型
// 显示上、下午
void ShowMeridiem(int hour);
说明:hour
为时数。若时数小于12点,则函数输出“上午”,否则输出“下午”。
要求:不换行。
1.1.1 实验数据处理
此题难度较易 前几次编译错误原因是
1. 输入完 汉字“上午” “下午”之后,没有切换成英文输入法直接输入 “分号”,导致一直编译错误
2.虽然是个简单的题目 但是从小细节当中也可以学到许多东西。
2.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。
2.1.1 数据处理
1.运用整形常量 a,b, c,分别定义水仙花数的个位 ,十位,百位,这是前提。
2.运用if,else,语句来选择数据,若符合则返回条件1,如不符合则返回条件0。
3.主调函数为int main ();副调函数为int func(const int N)。
2.1.2代码截图
2.1.3造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
100 | 0 | 最小三位数100 |
99 | 0 | 使用非三位数 |
999 | 0 | 最大三位数999 |
153 | 1 | 使用题目数字测试 |
370 | 1 | 使用其它水仙花数 |
2.1.4PTA提交列表及说明
2.1.4 错误说明
1.第一次部分正确 sum==N输入时少打了一个等号 导致答案输出时无法得出正确答案。
2.第二次部分正确 函数 if sum = = N这一行不需要打分号。检查时一直没有发现,最后询问同学之后才明白多打了一个分号。
3.2函数验证哥德巴赫猜想
本题要求实现一个判断素数的简单函数,并利用该函数验证哥德巴赫猜想:任何一个不小于6的偶数均可表示为两个奇素数之和。素数就是只能被1和自身整除的正整数。注意:1不是素数,2是素数。其中函数prime当用户传入参数p为素数时返回1,否则返回0;函数Goldbach按照格式“n=p+q”输出n的素数分解,其中p≤q均为素数。又因为这样的分解不唯一(例如24可以分解为5+19,还可以分解为7+17),要求必须输出所有解中p最小的解。
3.3数据处理
①数据表达:使用了整形变量result, i,m,其中result作为返回值;i和m作为判断素数的中间变量;
②数据处理:使用了for循环语句,流程结构是利用素数的定义对p整除,若能够整除,则这个数不是素数,则返回0。
③函数参数:主调函数是“int main()”,被调函数是“int prime( int p )、void Goldbach( int n )”,它们都是是整形函数;实参是p和n,形参是result, i,m,它们都是整形。
3.4代码截图
此题难度较大,基本上都是靠百度来完成的,所以具体细节与处理,希望老师上课能够讲解一下。
3代码互评
3.1同学代码截图(刘焱)
3.2 自己代码截图
3.3 比较结果
同:代码首尾处理基本大同小异,都是正常操作。
异:直观上看,刘同学的代码明显简洁许多,让人看过去一目了然,
仔细分析,这是因为计算方法与计算步骤的不同;
同学的是直接用abc相乘,并且用N直接判断计算结果,
而我是定义了math.h函数来计算,用sum作为中间定义变量来输出结果,所以显得复杂一些。
但是我的代码优势在于思路清晰明了,通俗易懂。
总的来说,一个思路简单,操作复杂,一个思路复杂,操作简单。
学习心得
每次在网上搜索资料,还是成功弄出来了。那一刻,有着满满的成就感。可是在做PTA作业时,我还是发现了我的一个很大的缺点,那就是太粗心了,几次的编译错误都是很不应该犯的,我还是要更细心点。同学之间也应该互相交流学习,因为都是初学者,都有自己的见解与体会。
任重而道远,希望能够继续努力。
输入数据 | 输出数据 | 说明 |
---|---|---|
89 100 | 89 is a prime number 90=7+83, 92=3+89, 94=5+89, 96=7+89, 98=19+79,100=3+97, | 使用题目测试数据 |
99 100 | 90=7+83, 92=3+89, 94=5+89, 96=7+89, 98=19+79,100=3+97, | 在题试数据上变动观察是否改变输出 |
11 20 | 11 is a prime number 12=5+7, 14=3+11, 16=3+13, 18=5+13, 20=3+17 | 使用较小数据测试 |
1000 1008 | 1000=3+997, 1002=5+997, 1004=7+997, 1006=23+983, 1008=11+997 | 使用较大数据测试 |