代码改变世界

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 题目名

6-3 水仙花数判断 
 

本题要求实现一个函数,判断任一整数是否为水仙花数(必须是三位数,且数的每一位上数字的立方和与数本身相等)。例如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 使用较大数据测试