一、PTA实验作业

题目1:6-6 使用函数输出水仙花数

1. 本题PTA提交列表

2. 设计思路

  • (1) 首先先定义narcissistic函数。
  • (2)定义四个整形变量n,a,d,cnt,sum,cnt用来计算有几位数,sum用来存放每个数的cnt次方的和。
  • (3)进行一个循环,让n=number(防止后面需要用number时它的值发生变化),循环中n=n/10,直到
    n<=0结束循环,其中每次循环cnt值都加一,用来计算number有几位数。
  • (4)再进行一个for循环(让a=number;直到a不>0;a/=10)
    在循环中d=a%10;sum=sum+pow(d,cnt);这部是让每个位数的cnt次方进行相加。
  • (5)这里在进行一个判断,如果nunber=sum则说明这个数是水仙花数,则return 1;
    否则就return 0;
  • (6)再进行void PrintN( int m, int n )函数的定义。
  • (7)定义一个变量i 用来进行循环
  • (8)for(i=m+1;i<n;i++)做循环让它输出这个范围内的水仙花数。
    因为在这个区间里的水仙花数不能取m和n,所以给i定义的初值为m+1,
    限定条件为i<n。
  • (9)if( narcissistic(i) )调用上一个函数 ,判断i是否为水仙花数
    printf("%d",i);printf("\n")如果是输出这个数,并换行。

    3.本题调试过程碰到问题及PTA提交列表情况说明

  • (1)当时在编译这题时,一开始就打算用cnt 来计算number的值。
    可是在做题目时一直根据题目给的值153,就把在第4步时把那个cnt输成了3
    结果一直导致部分正确。

其中大于三位数后水仙花数就输不出来

  • (2)还有一个问题就是在判断完它是水仙花数后不知道要怎样返回这个值。
    后开尝试用了下return 1就可以了,运气有些好。

    题目2:6-8 使用函数输出指定范围内的Fibonacci数

    1. 本题PTA提交列表

2. 设计思路

  • (1)int fib( int n )首先定义fib函数
  • (2)int a=1,b=1,i.定义三个整形变量(因为题目所给的内容,a,b的初始值都为1,i是后面用来做循环
  • (3) if(n==1 || n==2)return 1;如果n=1,n=2时Fibonacci数都为1
  • (4)for(i=3;i<=n;)再进行一个循环,令i=3直到i>n时结束循环。
  • (5) a=a+b;i=i+1;b=b+a;i++;这样就能够让前面两个数的值相加成第三个数。
  • (6)如果n为奇数则就return a的值
  • (7)为偶数就输出偶数的值
  • (8)void PrintFN( int m, int n )再进行void PrintFN函数的定义
  • (9)int cnt=0,i,j定义三个整形变量i,j,用来进行循环,cnt 是用来判断这个区间内是否有Fibonacci数
  • (10)for(i=1;fib(i)<=n;i++) if(fib(i)>=m) printf("%d",fib(i))让每一个Fibonacci数都与m进行比较
  • (11)如果fib(i)>=m,就说明这个Fibonacci数在区间内,则输出fib(i)
  • (12)if(fib(i+1)<=n) printf(" ");在区间内最后一个Fibonacci数前输入“——”满足行末没有空格。
    并且在这个if语句中让cnt=1
  • (13)再循环外进行一个判断语句如果cnt=0则输出No Fibonacci number。

    3.本题调试过程碰到问题及PTA提交列表情况说明

对于行末不能保留空格一开始没有注意到,所以只在其为空集时正确了

于是我在输出空格前进行了一次判断,如果fib(i+1)<n则说明这个数是区间内倒数第二个数,那么在下一个数的后面就不要再输出空格。
可是,还有错误就是两端点都是F数,测试超过区间的fib不满足条件

所以我就再看了下题目题目中如果m,n是Fibonacci数那么他也是需要输出的。所以在)if(fib(i+1)<n)中加了一个=。就满足条件。

题目1:6-7 使用函数输出指定范围内的完数

1. 本题PTA提交列表

2. 设计思路

本题要求实现一个计算整数因子和的简单函数

  • (1)int factorsum( int number )定义这个函数来判断一个数是否为函数
  • (2)int i,sum=0;定义sum用来存放因子相加后的值
  • (3)if(number==1) return 1;因为1是一定满足有有点特殊,首先拿出来考虑
  • (4) for(i=1;i<number;i++) if(number%i==0) sum=sum+i;进行一个循环在<n的范围内而不能=n,
    所以1是有点特殊,后面一个判断语句是将i的因子全部相加。
  • (5)if(sum==number)则说明这个数是完数,那么就return sum.否则return 0;
  • (6)void PrintPN( int m, int n )在进行这个函数的定义
  • (7)int i,j,a=1。i,j是用来进行循环,a是用来判断区间内是否有完数
    -(8)for(i=m;i<=n;i++) if(factorsum(i) == i)则说明这个数是完数,则printf("%d = 1",i) 因为任何完数都会等于1+多少。
    -(9)for(j=2;j<i;j++)在进行一个循环 if(i%j==0)这个是用来判断i的因子,如果是则printf(" + %d",j)
  • (10)然后在j循环外printf("\n")换行。并使a=0
  • (11)进行一个判断if(a==1)就printf("No perfect number")

    3.本题调试过程碰到问题及PTA提交列表情况说明

这道题的难点在于 完数 = 因子1 + 因子2 + ... + 因子k 这个格式的输出怎样才能让它正确输出因子的同时,又正确的输出+与空格。
经过观察每个数必有因子1," + %d",j 在以这样的格式一个个输出,我一开始是在每个数的后面加空格,这样导致行末出现空格,
后来经过一个同学的提点,把空格放在+的前面这样就不会在行末出现空格。

行末出现空格

二、同学代码结对互评

2.我的代码、互评同学代码截图

我的代码!

int fib( int n )
{int a=1,b=1,i;if(n==1 || n==2){//如果n=1,2时F数都为1return 1;}for(i=3;i<=n;){a=a+b;//让前两个数相加得到一个新的数i=i+1;b=b+a;i++;}if(n%2==0){//判断奇偶数return b;}else{return a;}
}
void PrintFN( int m, int n )
{int cnt=0,i,j;for(i=1;fib(i)<=n;i++){if(fib(i)>=m){printf("%d",fib(i));if(fib(i+1)<=n){printf(" ");}cnt=1;} }if(cnt==0){printf("No Fibonacci number");}
}

黄炳炜的代码

int fib( int n )
{int result=0,i,a=1,b=1;if(n==1)return 1;for(i=2;i<=n;i++){result=b;b=b+a;a=result;}return result;
}void PrintFN( int m, int n )
{int f,i,flag=0,c=0;//f放完数,i控制循环,利用flag判断是否有完数,c,判断是否为第一个数 for(i=1;i<=100;i++){f=fib(i);if(f>=m&&f<=n)//完数在所给范围内 {c++;flag=1;if(f==1&&m==1&&i==1)//起始点为1比较特殊,直接输出1 {printf("1");continue;}if(c==1)//第一个数前面没有空格,所以单独输出 {printf("%d",f);continue;}printf(" %d",f);flag=1;}}if(flag==0)//没有完数,则flag还是为0,输出。 printf("No Fibonacci number");
}

3.我和同学代码不同在哪里?有哪些各自优势?你更喜欢哪种代码风格?如果同学代码有错的也请帮忙指出来哪里出问题

不同点:我和炳炜同学在定义fib函数的做法不一样,我是让n从三开始进行循环a=a+b,i++,b=b+a,i++当n为奇数时其F数再a上,
偶数时F数再b上。
而炳炜同学是在定义一个变量来存放fib数,result=b; b=b+a; a=result它的循环是从2开始先让result=b,每次都让b=b+a,又再将a=result
这样同样巧妙的将前两个数的和放到了result上
优势:1:我的代码在一步的循环中就能计算多个F数,剪短了循环的时间,并且我不用多定义一个变量也节省了空间。
而,炳炜同学的代码比较精炼,不需要在后面做判断,直接返回result,而我的有两个出口。
2:在第二个函数上,我觉得我的优势会更大,在第一个循环我结束的条件是fib(i)<=n而炳炜同学i<=100,这样 它循环的次数就会更多,时间更长。
然后为了避免在行末输出空格if(fib(i+1)<=n) printf(" ");我是来找nm 区间内的倒数第二个数,而他是让第一个数单独输出,还要多设计一个数来判断区间内的第一个数
总之,它的代码使用的空间和时间都用的比我多。
所以,我会更喜欢我自己的代码。

三、截图本周题目集的PTA最后排名。

四、本周学习总结

1.你学会了什么?

  • (1)short、int、long、char、float、double 这六个关键字代表C 语言里的六种基本数据类型。这周对这些数据类型更深入的进行了学习。
  • (2)字符型数据可以与整型通用,例如: 10+'a'+1.5-8765.1234 *'b' 是合法的.

    2.本周的内容,你还不会什么?

    答:本周还学习了运算符的优先级以及结合性,,还有前缀自增和后缀自增的区别,最重要的是对位运算有了一定的了解,
    还有就是学会了怎样将字符的大小写进行替换。

    2.本周的内容,你还不会什么?

    本周的内容其实我对于,运算符的优先级还是不太清楚,太多了有些混乱,在加上结合性,就更乱了。
    还有就是对自增和自减还没有领会。

    3.循环结构考试总结

    1.哪题做错了,怎么改?

    我在二进制的前导的零,这道题目中有一些小错误就是当值为1的时候答案是错的,1情况比较特殊,可以多设计一个判断条件出来
    单独分析即可。
    然后就是在最后一题的单词长度那题,暂时没有什么思路容我在想想。

    2.考试结果满意么,怎么改进?

    不满意,一些小细节的地方还是没有注意,效率还是不够高,导致最后一题都没有多少时间去认真思考。
    还是需要多加练习,勤能补拙,多与同学老师交流。

转载于:https://www.cnblogs.com/1028-zwj/p/7858323.html

C语言第五次博客作业相关推荐

  1. C语言第五次博客作业---函数

    一.PTA实验作业 题目1. 使用函数判断完全平方数 1. 本题PTA提交列表(要提交列表,不是结果) 2. 设计思路(此处用流程图最好) 1.主函数 (1)定义变量n存放用户传入的参数 (2)输入数 ...

  2. 第五周博客作业西北师范大学|李晓婷

    1.助教博客链接:https://home.cnblogs.com/u/lxt-/ 2.作业要求链接:https://www.cnblogs.com/nwnu-daizh/p/10527959.htm ...

  3. 2022软工第06组第五次博客作业

    本博客为OUC2022秋季软件工程06组第五次作业 组长:黎泉林 文章目录 一.前言 二.NABCD模型分析 三.电梯演说 一.前言 项目名称:图像修复 项目简介: 图像修复(Image Inpain ...

  4. C语言第三次博客作业---单层循环结构

    一.PTA实验作业. 题目1 1.实验代码 int n,i; double height1,height2;//1为输入身高,2为输出身高. char sex; //1<=height1< ...

  5. C语言博客作业--函数

    C语言博客作业--函数 一,PTA实验作业 6-2 简单实现x的n次方 1.本题PTA提交列表 2.设计思路 double mypow( double x, int n )函数 (1)定义y=1,i用 ...

  6. C语言第二次博客作业---分支结构

    C语言第二次博客作业---分支结构 一,PTA实验作业 题目1.计算分段函数 本题目要求计算下列分段函数f(x)的值 1.代码 double x, result;scanf("%lf&quo ...

  7. C语言|博客作业06

    这个作业属于哪个课程 https://bbs.csdn.net/forums/csuft_swxy_C?typeId=17321 这个作业要求在哪里 https://bbs.csdn.net/topi ...

  8. C语言|博客作业05

    C语言|博客作业05 这个作业属于哪个课程 https://bbs.csdn.net/forums/csuft_swxy_C?typeId=17321 这个作业要求在哪里 https://bbs.cs ...

  9. C语言|博客作业04

    C语言|博客作业04 1. 完成云班课的知识点总结作业,并给出截图. 2. 学习总结 这个作业属于哪个课程 https://bbs.csdn.net/forums/csuft_swxy_C?typeI ...

最新文章

  1. 利用服务器修改服务器数据,用Jquery实现可编辑表格并用AJAX提交到服务器修改数据...
  2. Linux下基于socket多线程并发通信的实现
  3. T-SQL 之 表变量和临时表
  4. Web前端饱和了?还能学Web前端吗?
  5. 最近读的那些性能测试书
  6. imx6 android快速启动,freescale imx6 开机启动速度优化之Bootchart工具的使用问题
  7. 一个SQL更新多条字段
  8. 批量画同心不同半径圆lisp_【微课视频】青岛版数学六年级上册5.1圆的认识
  9. Erlang中的record与宏
  10. 科大讯飞语音接口调用实现语音识别
  11. c语言饭卡管理系统_C语言饭卡管理系统毕业设计(含毕业论文、程序源码)论文字数:15422字 C0004-C语言毕业设计下载-华软网...
  12. 2022美赛M奖经验总结(1)分工职责篇(附论文)
  13. 省市区三级数据-MySQL
  14. Publish报文及其响应分析
  15. Android判断当前使用数据流量的是哪张卡
  16. 解决ios的webview中上/下拉露出黑灰色背景问题
  17. 虽然不能去故宫办婚礼,但你可以帮故宫找“中纹”啊!
  18. 两张表格数据匹配删除
  19. 大流行时代的三大社会技术影响
  20. 使用Python实现滚动的广告屏幕

热门文章

  1. Linux扩展正则表达式
  2. Kafka源码分析-序列3 -Producer -Java NIO(Reactor VS Peactor)
  3. msyql开启慢查询以及分析慢查询
  4. spark的外排:AppendOnlyMap与ExternalAppendOnlyMap
  5. android和java中常见 Exception
  6. Android文本框实现搜索和清空效果
  7. Oracle 各种语法(一)
  8. 你能否列出与 Elasticsearch 有关的主要可用字段数据类型?
  9. nginx日志中$request_time时间异常问题排查
  10. 巨星陨落,光芒永存—回顾霍金对人工智能的思考