1.这个作业属于那个课堂 | C语言程序设计 |
2.这个作业要求在哪里 | http://edu.cnblogs.com/campus/zswxy/CST2019-2/join |
3.我在这个课堂的目标是 | 学好C语言,能很好的运用它 |
4.这个作业在那个具体方面帮助我实现目标 | 从实际运用出发,使我从实践中更加熟练地掌握它 |
5.参考文献 | 《C语言程序设计(第三版)》 |
一.本周作业
1.PTA实验作业
1.1 题目 判断一个整数的各位数字平方之和能否被5整除
题目内容:
编写函数fun,其功能是:判断一个整数的各位数字平方之和能否被5整除,可以被5整除则返回1,否则返回0。
函数接口定义:int fun(int n );
其中 n 是用户传入的参数。 函数判断n的各位数字平方之和能否被5整除,能被5整除则返回1,否则返回0。
裁判测试程序样例:
#include
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.1数据处理
介绍实现本题过程中,你的数据表达 数据处理是怎么做的.注意:请务必按照以下方式书写.
数据表达: 用了整型变量s和t,s表示各位数字平方和,t表示输入的整数除以10取余数,题目中还用了整型变量m。
数据处理: 本题运用了 t=n%10; S+=pow(t,2);n/=10;等表达式,主调函数为int型,int main () int fun(int n)是主调函数,被调函数也为int型,scanf("%d",&n);和题目中的 scanf("%d", &m);
printf("The result is %d\n", fun(m));是被调函数,用了while循环语句,直到型循环语句.
**函数参数:请明确说明主调函数与被调函数的名称,被调函数的类型,实参与形参的名称 类型。**
1.1.2实验代码截图
1.1.3造测试数据
1.1.4PTA提交列表及说明
提交列表说明:
1.编译错误:把This写成了this,把0写成o.
解决办法:看错误提示,把上面的代码删了,复制题目上的代码下来,以免出现单词大小写错误.
2.编译错误:我没有找到为什么错了,错误提示:Redefinition of 'main' int main(),翻译为:"主要"的重新定义.
解决办法:我把题目中给出的代码删了,只剩下了我自己写的代码,然后就对了.
1.2使用函数验证哥德巴赫猜想
题目内容:
本题要求实现一个判断素数的简单函数,并利用该函数验证哥德巴赫猜想:任何一个不小于6的偶数均可表示为两个奇素数之和。素数就是只能被1和自身整除的正整数。注意:1不是素数,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
#include
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 number90=7+83, 92=3+89, 94=5+89, 96=7+89, 98=19+79100=3+97,
1.2.1数据处理
介绍实现本题过程中,你的数据表达 数据处理是怎么做的.注意:请务必按照以下方式书写。
数据表达: 用了整型变量p,i,isprime,题目中用了整型变量m,n,cnt,
数据处理:本题用了 isPrime = 0;for (i = 2; i <= (int)sqrt(p); i++) if (p % i == 0);isPrime = 0; j = n - i;i += 2;等语句表达式,题目中用了if ( m < 6 ) m = 6; if ( m%2 ) m++;cnt = 0;for(
i=m;i<=n;i+=2) cnt++;等语句表达式,主调函数是int型,int main()int prime(int p)是主调函数,被调函数也为int型,#include #include scanf("%d %d", &m, &n);
printf("%d is a prime number\n", m);等是被调函数,用了for-else循环语句和while循环语句,还有if-else分支语句,多种语句结构结合起来可以解决复杂的问题.
**函数参数:请明确说明主调函数与被调函数的名称,被调函数的类型,实参与形参的名称 类型。**
1.2.2实验代码截图
1.2.3造测试数据
1.2.4PTA提交列表及说明
提交列表说明:
1.部分错误:把 int isPrime = 1;写成int isPrime =0;
解决方法:看错误提示,把编程看了一遍.
2.部分错误:也跟上面一样把0写成了1,
解决办法:看错误提示,借鉴同学的代码,看自己哪里错了,因为自己不怎么喜欢看英文,一般错了只是大致瞄一眼,不会去细究所有的错误,改一个是一个,直到实在改不了错误时才会去把
错误提示一个一个的翻译.
2.代码互评
找2份同学代码,和自己代码比较,建议互评代码尽量找代码风格差异较大.
风格差异:
a.她的第一眼看上去就很整洁,也很让人产生舒服感.
b.她只用了一个变量,而我用了两个变量.
c.她没有调用scanf("%d",&n);而我用了.
d.她while循环语句里只用了两个表达式,而我用了三个语句表达式,她把我的t=n%10;S+=pow(t,2);用一个m=m+n%10;就表示完了,我觉得在写代码的时候可以找寻多种方法,不要对了就
可以了,说不定你能找到更好的方式 更容易理解的代码.
(2)
风格差异:
a.我们定义的变量所用字母不同,她用了x,y,z,我用了a,b,c,
b.她用了y=(N-x*100)/10,而我用了b=N/10%10,她是用减法变成两位数,在除以10取余数,而我是直接除以10得到一个两位数的整数再除以10取余数,我觉得我的运算要简洁一点,我
只用了两次除法,而她永了减法和乘法还有除法。
c.她在求立方和时用了x*x*x的方法,而我用了pow(a, 3)的形式,我本人更倾向于用第二种方法,因为我觉得我们应该熟练运用第二种方法,不可能在遇到一个数的很多次幂还一直用
乘法吧。而且看着也简洁。
d.我们两个都没有在if和else下面打{},虽然只有一个语句不需要打{},但我觉得还是打了的好,因为怕形成习惯以后有多个语句时也忘记打{},有时候成功决定于细节。
3.学习总结
3.1学习进度条
3.2累积代码行和博客字数
3.3学习内容总结和感悟
3.3.1学习内容总结
3.3.2学习体会
请回顾自己的本周的学习过程,描述学习感受,也可以提出你不理解的地方 对教师教学建议等。如果你有新的想法或者新的方法,请及时记录下来.
通过这些天的学习,我发现我有一个不好的心态,不知道其他同学有没有这种心态,就是老师布置作业时,如果给的时间长就喜欢托,不到最后不着急去做,如果给的时间短,就急于求成。自己什么都不懂,就知道去百度上搜答案和问同学。为了做作业不择手段。后面认识到自己这样不好,就开始学习书本内容,看一些网上相关的视频内容,慢慢地学习知识,我希望过不了多久我就能自己写PTA的作业。不要动不动就去搜百度答案。
我发现老师每次布置博客作业都会有一些新的内容让我们学习。我觉得这种方法很好,因为一节课的时间是有限的,讲的内容也有限,很多东西都要靠自己去学习,老师只是起一个引导作用。这样不仅能提高自我学习能力,还能使同学们主动去学习新知识,而不是被动的去接受。
感觉自己看了书本的知识其实记住的东西不多,通过做作业记住的要多一些,所以我们要多多运用所学的知识,这样才能有所进步,你学了东西不去运用,那你永远不知道自己的薄弱处在哪里,自己不懂的地方又在哪里,还有要时不时的看一下以前学过的知识,以免自己忘记所学的内容。而且要跟着老师的脚步走或者赶在老师前面,毕竟老师教了这么多的学生,她们的方法是很有用的,而且她们的讲课方式是根据前面的师兄师姐们的情况不断调整的,肯定适合大部分同学学习,所以不要想着老师不清楚你的实力,讲的课的方法根本就不适合自己。
我还有一个疑问,就是我们做PTA的时候出现错误时为什么不把他设计成中文错误提示,而要是英文,并且很多英文翻译过来还是看不懂它的意思,为什么不简单粗暴一些直接告诉我们是少了符号、大小写不对、 那个符号用了中文输入法、把0写成了o等,说到这里,我想再说一点,我们在编程的时候很容易忘记转换,也会在不注意间按了Shift键而自己不知道,以至于编程出错。hh
我从一个连电脑都不会开到能用电脑做了老师完成的作业,我感觉自己还是有一点点进步的.哈哈,自我鼓励一下哦。