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的固定题目将要去挑战,不仅要学了,而且要学好,认真地完成自己的目标;对于现在的班级学习氛围有点烦躁,感觉他们对于基础课一点都不认真,作业应付,有的甚至只将题目协商,其他的说明都不写,而且不提交作业的人数也多,对于我多次的要求也跟没有听到一样;仍持续出现只发布不提交的作业,我也将要在此方面想一些方法来抑制这种风气。