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

原文地址:https://www.cnblogs.com/just-like-this/p/11734736.html