C语言I作业05

一、本周教学内容&目标##

第2章 用C语言编写程序-函数 2.5 生成乘方表与阶乘表。使学生对函数的定义和调用有初步的认识,能模仿编程。

二、本周作业头##

问题 答案
这个作业属于那个课程 C语言程序设计II
这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/2019TA/homework/9833
我在这个课程的目标是 以C为基础,进一步学习java与C++
这个作业在那个具体方面帮助我实现目标 练习markdown语法以及自主寻找资料的能力
参考文献 百度

三、本周作业##

1. PTA作业###

1.1 编写函数fun,其功能是:判断一个整数的各位数字平方之和能否被5整除,可以被5整除则返回1,否则返回0,返回到主调函数来判断是否为素数,返回值为1说明是素数,0则为非素数。.

1.1.1 数据处理

 -数据表达:提出整形变量sum,i,result,以及定义函数prime,用来解决数字平方能否被5整除,变量i用于进行循环,变量sum用于存储余数来进行进一步的判断是否为素数,result赋值1,用于在接下来的运行中对于此输入数字是否为素数而改变值,以返回此值进行验证是否为素数;
 -数据处理:以作为被调函数的定义函数的主体,其中包含着判断语句if和循环语句for,来进行程序运行,其中if判断出非素数的可能(素数肯>=2),当if语句判断完毕,就进入for循环来进行赵卒为素数的i,如果非素数则输出返回值0,如果是素数则输出返回值1;然后返回result,用于是否为素数进行判断;

1.1.2 实验代码截图

函数接口定义:####

int fun(int n );

裁判测试程序样例:####

#include <stdio.h>
int fun( int n );

int main()
{
  int m;
  scanf("%d", &m);
  printf("The result is %d\n", fun(m));
  return 0;
}

/* 你的程序将被嵌入在这里 */

输入格式:####

12

输出格式:####

The result is 1

输入样例:####

123

输入样例:####

The result is 0

1.1.3 造测试数据

输入数据 输出数据 说明
46 This result is 0 正数
134 This result is 0 正数
-23 This result is 0 负数
1.1.4 PTA提交列表及说明

Q1:部分正确主要是因为说明造成的?
A1:两个部分正确都是由于if语句的部分返回出现问题,并未正确返回所需的0或者1,来正确使代码正常运行,而且出现了一些编译错误(else语句错误),但不知道为什么没有出现编译错误,在这两个出现问题,对这两个地方的if进行了更改,使程序正确;

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

 -数据表达:提出变量i和形参n,形参用于接收实参进行函数之间的联系,变量i用于for循环来控制内部的循环输出;
 -数据处理:两个被调函数,使用for循环来调试出符合素数的数来进行判断,再使用if语句进行判断来,其中也应用到另一个被调函数来进行判断,再判断之后输出并跳出或者不做反应;

1.2.2 实验代码截图

函数接口定义:####

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

其中函数prime当用户传入参数p为素数时返回1,否则返回0;函数Goldbach按照格式“n=p+q”输出n的素数分解,其中p≤q均为素数。又因为这样的分解不唯一(例如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\n", 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("\n");
    }

    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.3 造测试数据

输入数据 输出数据 说明
65 76 66=5+61,68=7+61,70=3+67,72=5+67,74=3+71 m<n
76 65 m>n
86 86 86=3+83 m=n

1.2.4 PTA提交列表及说明

 Q1:为什么出现这些答案错误,是什么因为什么?
 A1:这些答案错误都是被调函数出现问题,其他都是进行了更改但是并没有使答案正确,造成了这么多的答案正确,原因使因为再使用while语句时存在着一些变量赋值的表达式使while无法正常循环;将错误更改后正确;

2. 代码互评###

同学代码截图:

2. 代码互评###

自己代码截图:

 与第一份作业:它采用的时提出头文件math,直接运用数学函数进行计算;且用(N-a*100)来得到个位数字为后续运算;然后和我一样当结果==N时返回1,否则返回0;

 与第二分作业:运用for循环,每次提出一个数字并且用sum进行存储,当循环结束,用sum==N进行判断,是则返回1,否则返回0;比我的更高端吧,看着就感觉好一点,运用for循环和if分工完成了任务,我虽然也使用if但是前面一部分是非常杂乱的,没有他的简洁;

3. 学习总结###

3.1 学习进度条.

周/日期 这周所花时间 代码行 学到的知识点简介 目前比较迷惑的问题
第七周 9小时 513 定义函数 return的返回位置
第八周 12小时 467 局部变量与全局变量 暂无
第九周 12小时 483 数组 暂无

3.2 累积代码行和博客字数.

3.3思维导图

3.3.1 学习内容总结与体会
总结:学习了数组以及预处理命令,了解了宏定义的意义以及使用方法,例如宏定义的宏名再函数内不可以用 “” 括起来,这样出现一些问题,无法正确地参与计算;数组的一些使用方法;本周的学习程度不够,将加快学习,对于之前学习的while与do-while要进行应用,防止今天出现的一些错误,在一些题目中获取了一些知识,例如:if(N%5),所以可以通过做题来时自己的问题浮现,再进行更改;
体会:现在学习C的进度有些迟缓,让我感到无法完成博客1的目标,但是接下来将加快学习进度,而且从这个助教的PTA作业,我发现了一些问题,函数的应用没有达到想要的地步,所以,PTA的固定题目将要去挑战,不仅要学了,而且要学好,认真地完成自己的目标;对于现在的班级学习氛围有点烦躁,感觉他们对于基础课一点都不认真,作业应付,有的甚至只将题目协商,其他的说明都不写,而且不提交作业的人数也多,对于我多次的要求也跟没有听到一样;仍持续出现只发布不提交的作业,我也将要在此方面想一些方法来抑制这种风气。

posted @ 2019-10-24 21:52  weakin  阅读(333)  评论(2编辑  收藏  举报