zoukankan      html  css  js  c++  java
  • C语言I博客作业05

    这个作业属于那个课程|C语言程序设计II
    ---|---|---
    这个作业要求在哪里|https://edu.cnblogs.com/campus/zswxy/CST2019-1/homework/9825
    我在这个课程的目标是|学会生成乘方表与阶乘表,对函数的定义和调用有初步的认识,掌握自定义函数的程序框架
    这个作业在那个具体方面帮助我实现目标|定义并调用求阶乘的函数以及浏览自定义函数的程序框架
    参考文献|《C Primer Plus》.自定义函数规范.《C语言程序设计》.函数类型.

    1.PTA实验作业

    1.1水仙花数判断

    本题要求实现一个函数,判断任一整数是否为水仙花数(必须是三位数,且数的每一位上数字的立方和与数本身相等)。例如153=1^3+5^3+3^3=1+125+27=153,而1或155则不是水仙花数。如果是水仙花数,则函数返回1,否则返回0.
    

    1.1.1数据处理

    数据表达:用了变量a,b,c.变量的值是通过赋值得来的,类型全为整型.
    数据处理:所用表达式用三个.1.a=N/100. 2.b=(N-a*100)/10. 3.c=N%10.流程结构1.先调用数学函数,因为接来下要使用数学函数pow。2.自定义函数int func(const int N)3.定义a,b,c三个整型数,并且写出以上所用的三个表达式。 4.通过if-else判断语句判断是否N为水仙花数,若是,输出return 1。否则输出 return 0。
    函数参数:主调函数:int main() 被调函数:int func(const int N) 被调函数类型为整型。
    实参:a,b,c
    形参:N.类型全为整型。

    1.1.2实验代码截图

    1.1.3 造测试数据

    输入数据 输出数据 说明
    155 0 根据题意155不是水仙花数,验证答案
    999 0 三位数中最大值
    100 0 三位数中最小值
    370 1 370是水仙花数,验证输出是否正确
    407 1 随机给值

    1.1.4 PTA提交列表及说明


    1.编译错误:在定义函数时,我的程序是N=pow(a,3)+pow(b,3)+pow(c,3),但我没有调用数学函数。
    2.编译错误:试图调用数学函数之后,依旧编译错误,进行下一步调试,我认为是自定义函数不能调用数学函数或者数学函数应该调用在主函数区域.
    3.编译错误:经过调试,我发现错误是if判断语句中条件设置出错,其中N应该==pow(a,3)+pow(b,3)+pow(c,3),而我用的是=.一个是赋值,一个是比较相等,我对此概念模糊.

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

    本题要求实现一个判断素数的简单函数,并利用该函数验证哥德巴赫猜想:任何一个不小于6的偶数均可表示为两个奇素数之和。素数就是只能被1和自身整除的正整数。注意:1不是素数,2是素数。
    

    1.2.1数据处理

    数据表达:用了变量i,q,p,result;都是通过赋值得来的,类型全为整型。
    数据处理:所用表达式:result=1; result=0; i=2; i<=sqrt(p); i++; p=3; p<=n; p=p+2; q=n-p; 流程结构 1.使用了if else选择语句,若符合条件返回1,不符合返回0。并且计算最小素数与另一个素数之和为一个偶数。
    函数参数:主调函数:int main()。被调函数:int prime( int p );void Goldbach( int n );被调函数类型都为整型。实参:p,n.形参:i,result..类型全为整型。

    1.2.2实验代码截图


    1.2.3 造测试数据

    输入数据 输出数据 说明
    89 100 89 is a prime number90=7+83, 92=3+89, 94=5+89, 96=7+89, 98=19+79100=3+97. 使用题目数据验证
    50 70 50=3+47,52=5+47,54=7+47,56=3+53,58=5+53,60=7+53,62=3+59,64=3+61,66=5+64,68=7+61,70=3+67 使用较小数据进行测试
    1000 1010 1000=3+997, 1002=5+997, 1004=7+997, 1006=23+983, 1008=11+997,1010=13+997 使用较大数据进行测试

    1.2.4 PTA提交列表及说明




    1.编译错误:for循环语句中没有用分号隔开,用的是逗号。
    2.编译错误:p没有定义就直接使用,出现错误[Error]printf was not declared in this scope。
    3.答案错误:我的第22行,我首先int p =n,经过查询与请教应该改为int p=3。
    4.emphases:在我的认知中,这个题目有点超出范围了,所有在dev上先进行地不断调试与运行,错误太多了,以上三个错误是pta上所犯,就只列举了三个,这个题要学习自定义函数流程和break跳出函数循环。

    2.代码互评

    同学(1)的代码 我的代码
    1.他的f()语句中的内容更加简洁,我写的是if(N==pow(a,3)+pow(b,3)+pow(c,3)),他的是if(N==result).
    2.我的直接将N==pow(a,3)+pow(b,3)+pow(c,3)。他用的result的值赋值给n。
    3.他多定义了一个result去进行转换。
    
    同学2的代码 我的代码
    1.if()中的语句不同,我的是if(N==pow(a,3)+pow(b,3)+pow(c,3))。而他的是if(N==a*a*a+b*b*b+c*c*c)。
    2.因为我用了pow(a,b)函数,所以我额外调用了一个数学函数.并且用#include<math.h>进行函数声明。
    

    3.学习总结

    3.1 学习进度条

    周数/日期 这周所花的时间 代码行 学到的知识点简介 目前比较迷惑的问题
    第五周/10-26 12h 约350行 自定义函数的声明与调用,break跳出循环,while()循环语句 自定义函数的应用

    3.2 累积代码行和博客字数

    3.3学习内容总结和感悟

    3.3.1 学习内容总结

    3.3.2 学习体会

    对于本次作业,第一感受就是有点偏难,与前几次作业比较起来这次要学的东西与要查询的相关资料要多得多,特别是最后的那个哥德巴赫猜想题目,有点不知所措。看到素数,不知道该要如何表达这个数是否为素数,经过资料查询,在C语言程序设计上面4.3判断素数上面找到了解决方面,但是对于自定义函数,了解的真的是太少了,只知道最基础的函数定义和函数声明,以及形参和实参。在本次作业上,也学到了一些道理,比如说前几周的作业写起来绰绰有余,难免会有点沾沾自喜,但在这次作业解答过程中,我对此有了更深的感触,对于任何事情都要一直保持着严谨,认真的态度,不能轻视。只有这样一直坚持下去,才能在学习的路上渐行渐远,领会学习内容的真谛.在学习的过程中,要给自己定一个目标,不断努力。 -----志之所趋,无远弗届,穷山距海,不能限也!

  • 相关阅读:
    Centos设置时区和时间同步
    CentOS 安装 Docker
    Docker部署RabbitMq
    Docker部署MinIO对象存储服务
    Docker配置阿里云镜像加速
    IDEA集成Docker部署项目容器
    VMware配置静态ip
    Vue 报错 "TypeError: Cannot read property 'name' of undefined"
    持续交付-发布可靠软件的系统方法
    软件测试总结
  • 原文地址:https://www.cnblogs.com/wllrky/p/11722617.html
Copyright © 2011-2022 走看看