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

    这个作业属于那个课程 C语言程序设计II
    这个作业要求在哪里 C语言I作业05
    我在这个课程的目标是 学会自己通过定义简化代码中那些重复出现的代码,减小内存占用空间
    这个作业在那个具体方面帮助我实现目标 练习对函数的声明,定义,调用
    参考文献

    1.PTA实验作业

    **1.1 (6-1) 判断一个整数的各位数字平方之和能否被5整除 **

    编写函数fun,其功能是:判断一个整数的各位数字平方之和能否被5整除,可以被5整除则返回1,否则返回0。

    函数接口定义:

    int fun(int n );
    

    其中 n 是用户传入的参数。 函数判断n的各位数字平方之和能否被5整除,能被5整除则返回1,否则返回0。

    裁判测试程序样例:

    #include <stdio.h>
    int fun( int n );
    
    int main()
    {
          int m;
          scanf("%d", &m);
          printf("The result is %d
    ", fun(m));
          return 0;
    }
    
    /* 你的程序将被嵌入在这里 */
    

    输入样例:

    12
    

    输出样例:

    The result is 1
    

    输入样例:

    123
    

    输出样例:

    The result is 0
    

    1.1.1数据处理

    • 数据表达:在主函数中定义了一个整型变量m,用与代表输入值,在被调用函数中定义了整形变量s,i,n并将s的初始化值设置为0,n代表被调用函数中的输入值,i表示各位数字,s表示各位数字的平方和
    • 数据处理:用while()函数对符合条件的进行循环
    • 函数参数:主调函数int main(),为整型变量;被调函数int fun( int n ),为整型变量;实参为m,为整形变量;n,s,i为形参,同样也是整型变量

    1.1.2实验代码截图

    1.1.3 造测试数据

    输入 输出 说明
    12 The result is 1 同题目所给例子
    123The result is 0 The result is 0 同题目所给例子
    1234 The result is 0 按照题目所示的两个例子随机再例子
    12345 The result is 1 按照题目所示的两个例子随机再例子

    1.1.4 PTA提交列表及说明

    提交列表说明:

    1. 部分正确:在被调用函数中没有返回值;解决方法:输入返回值
    2. 部分正确:返回值我用成了return 0;导致被调用函数返回主函数的值都为0;解决方法:return (s % 5 == 0);意思是如果s除以5没有余数则为真,返回1;否则为假,返回0;

    1.2(6-6) 使用函数验证哥德巴赫猜想 (20 分)

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

    函数接口定义:

    int prime( int p );
    void Goldbach( int n );
    

    其中函数prime当用户传入参数p为素数时返回1,否则返回0;函数Goldbach按照格式“n=p+q”输出n的素数分解,其中pq均为素数。又因为这样的分解不唯一(例如24可以分解为5+19,还可以分解为7+17),要求必须输出所有解中p最小的解。

    裁判测试程序样例:

    #include <stdio.h>
    #include <math.h>
    
    int prime( int p );
    void Goldbach( int n );
    
    int main()
    {
        int m, n, i, cnt;
    
        scanf("%d %d", &m, &n);
        if ( prime(m) != 0 ) printf("%d is a prime number
    ", m);
        if ( m < 6 ) m = 6;
        if ( m%2 ) m++;
        cnt = 0;
        for( i=m; i<=n; i+=2 ) {
            Goldbach(i);
            cnt++;
            if ( cnt%5 ) printf(", ");
            else printf("
    ");
        }
    
        return 0;
    }
    
    /* 你的代码将被嵌在这里 */
    

    输入样例:

    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, 
    

    1.2.1数据处理

    • 数据表达:在主函数中定义了m, n, i, cnt四个整型变量,m用于表示输入的最小值;n用于表示输入的最大值;i是其中的中间参量;cnt用作与满五个式子后换行;在被调用函数1中,定义了p,i,flag三个整形变量,p代表输入值;i为中间变量;flag作为返回值,返回到主函数中,进行素数的判断;在被调用函数2中,定义了n,p,q三个整形变量,n代表输入值;p和q代表式子中n=p+q的p和q。
    • 数据处理:在第一个被调用函数中运用了for进行循环并且在其中还运用了if-else进行选择,在第二个被调用函数中运用了两个if-else结构进行符合条件的数值的选择,还有一个for循环结构进行不断的累计和选择。
    • 函数参数:主调函数****int main(),为整形变量;被调用函数int prime( int p )和void Goldbach( int n )也都为整型变量;实参为m, n, i, cnt,为整形变量;p,i,flag为被调用函数1形参,为整型变量;n,p,q为被调用函数2形参,也是整型变量。

    1.2.2实验代码截图

    1.2.3 造测试数据

    输入 输出 说明
    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, 同题目示例

    1.2.4 PTA提交列表及说明

    提交列表说明

    • 答案错误:在两个被调用函数中忘记用break跳出循环了,导致循环没有停止。

    2.代码互评

    同学1

    同学2

    自己

    互评:

    • 第一个被调用函数:

      (1)首先同学用的'if(p==1||p<0)'和'if(p<2)',而我用的是'if (p <= 1)'这是同一种关系运算的不同表示;

      (2)与同学1相比在对于条件"p <= 1"和“p == 2 || p == 3”符合的情况下他是直接输出返回值0或1,我是先定义了一个flag变量作为返回值,我觉得他的方法要更好一些,值得我学习

      (3)同学2没有把p=3的情况放在之前处理,而是放在后面的循环一起处理

      (4)在循环的条件2我用的是i<=sprt(p)两位同学用的是i<=p,我觉得我这样用好一点,这样缩短了运行的时间,而且用上了之前题目写好的math.h函数库。

    • 第二个被调用函数:

      (1)我与同学2的区别在于我在之前限定了n属于大于6的奇数,他是直接全部带进去运算

      (2)同学1和我的思路有点不同,他是先定义一个数为3则另一个数为n-3,然后将其带入循环中并用while()函数判断是否是题目要求的结果

    3.学习总结

    3.1 学习进度条

    这周所花时间 代码行 学到的知识点简介
    第八周 16小时 200 函数的声明,定义和调用

    3.2 累积代码行和博客字数

    3.3 学习内容总结和感悟

    3.3.1 学习内容总结

    3.3.2 学习体会

    这一周的时间有点紧,白天上课,下午还去了ATD学习一些别的知识,所以也进行没有预习。我觉得虽然说现在的时间比较紧但是这样是好的,因为这样每天才充实一些,不然每天就跟条咸鱼样的整天瘫着,在作业过程当中也还是有许多不会的地方,又不会的我先会自己思考,实在没有思路了再去百度,其实很多东西都能在网上查得到,而且有时候看那么一小段你就知道自己的思路为什么错了,然后就能结合自己的知识完成题目,而且自己找来的知识也比别人直接告诉你的记得要牢靠些。

  • 相关阅读:
    AM3715/DM3730 更改内存大小后kernel boot不起来的解决办法
    xslt转换xml文档&&xslt call java方法
    VSCode 运行go test显示打印日志
    tomcat作为windows服务的参数配置,特别是PermSize的设置
    高亮显示web页表格行
    深入分析 Java 中的中文编码问题
    webwork和spring多配置文件的方法
    Bug笔记:诡异的$.ajax
    C#多态
    委托的本质
  • 原文地址:https://www.cnblogs.com/just-like-this/p/11734736.html
Copyright © 2011-2022 走看看