一、本周教学内容&目标
第5章 函数 要求学生掌握各种类型函数的定义、调用和申明,熟悉变量的作用域、生存周期和存储类型。
二、本周作业头
题目 | 答案 |
---|---|
这个作业属于那个课程 | C语言程序设计II |
这个作业要求在哪里 | http://edu.cnblogs.com/campus/zswxy/CST2019-2/homework/10131 |
我在这个课程的目标是 | 能够熟练c语言,能够使用开发软件 |
这个作业在那个具体方面帮助我实现目标 | 每次作业的错误都能是我学到很多新的知识盲点 |
参考文献 | 百度,博客 |
三、本周作业
- 1.PTA实验作业
- 2.代码互评
- 3.学习总结
四、作业格式
1.PTA实验作业(20分/题)
从PTA题目集中选出2个你最满意的题目完成以下内容,选择题目难度越大,分值越高,每题20分(每项5分),内容要求如下
统计各位数字之和是5的数
题目内容描述:
本题要求实现两个函数:一个函数判断给定正整数的各位数字之和是否等于5;另一个函数统计给定区间内有多少个满足上述要求的整数,并计算这些整数的和。
函数接口定义:
int is( int number );
void count_sum( int a, int b );
函数is判断number的各位数字之和是否等于5,是则返回1,否则返回0。
函数count_sum利用函数is统计给定区间[a, b]内有多少个满足上述要求(即令is返回1)的整数,并计算这些整数的和。最后按照格式
count = 满足条件的整数个数, sum = 这些整数的和
进行输出。题目保证0<a≤b≤10000。
裁判测试程序样例:
#include <stdio.h>
int is( int number );
void count_sum( int a, int b );
int main()
{
int a, b;
scanf("%d %d", &a, &b);
if (is(a)) printf("%d is counted.
", a);
if (is(b)) printf("%d is counted.
", b);
count_sum(a, b);
return 0;
}
/* 你的代码将被嵌在这里 */
输入样例:
104 999
输出样例:
104 is counted.
count = 15, sum = 3720
1.1.1数据处理
数据分析:
is:
用int定义a,b,number以及sum,number是实参,a用来接收number每个位上面的数,sum用来求和。
count_sum:
用int 定义了a,b,count,sum,其中a,b为实参,count用作计数器,sum用来求和。
伪代码:
int is( int number ) 定义统计各位数字之和是5的数的函数。
{
int a,b,sum=0;
while(number) { 统计各位数字之和。
a=number%10; 取每个位上面的数
number=number/10; 去掉最后一位
sum+=a; 求和。
}
if(sum==5) 判断结果是否为5并提供输出接口
return 1;
else return 0;
}
void count_sum( int a, int b ) 定义函数。
{
int count=0,sum=0;
for(; a<=b; a++) { 判断一定范围内的数是否符合条件
if(is(a)) {
count++; 计数器,统计符合条件数的个数。
sum+=a; 求和。
}
}
printf("count = %d, sum = %d",count,sum); 输出结果。
}
1.1.2实验代码截图
1.1.3 造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
104 999 | 104 is counted. count = 15, sum = 3720 |
题目输入 |
23 200 | 23 is counted.count=9,sum=756 | 随机数 |
1.1.4 PTA提交列表及说明:
- 格式错误:等号没有空格。
改正方法:在等号两边添加空格。
统计某类完全平方数
题目内容描述:
本题要求实现一个函数,判断任一给定整数N是否满足条件:它是完全平方数,又至少有两位数字相同,如144、676等。
函数接口定义:
int IsTheNumber ( const int N );
其中N是用户传入的参数。如果N满足条件,则该函数必须返回1,否则返回0。
裁判测试程序样例:
#include <stdio.h>
#include <math.h>
int IsTheNumber ( const int N );
int main()
{
int n1, n2, i, cnt;
scanf("%d %d", &n1, &n2);
cnt = 0;
for ( i=n1; i<=n2; i++ ) {
if ( IsTheNumber(i) )
cnt++;
}
printf("cnt = %d
", cnt);
return 0;
}
/* 你的代码将被嵌在这里 */
输入样例:
105 500
输出样例:
cnt = 6
1.2.1 数据处理
数据处理:
因为const定义N所以N的值不能被更改,所以我用了int定义n来接受N的值,用一个int的数组来统计每个数位上数字的个数,用一个整型的b来接收余数,用整型定义的m用来判断n是否是完全平方数,利用m*m==n,是因为m是整型,所以当√n不是整数时,该判断式就不会成立。用for循环统计每个数位数字的个数,再用if判断是否符合条件。
伪代码:
int IsTheNumber ( const int N )定义统计某类完全平方数的函数
{
int n=N,b,p[10]={0},m=sqrt(n);
if(m*m==n){判断N是否是完全平方数
while(n){统计每个数字的个数
b=n%10;取每个位上的数
p[b]++;计数器
n/=10;
}
for(int i=0;i<=9;i++){判断是否有重复数字。
if(p[i]>1)如果有重复数字,返回1。
return 1;
}
}
return 0;
}
1.2.2 实验代码截图
1.2.3 造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
105 500 | cnt = 6 | 题目数据 |
300 1000 | cut=5 | 随机数 |
1.2.4 PTA提交列表及说明
- 编译错误: 部分语句后面没有加分号。
改正方法:在语句末尾添加分号。
2.代码互评
找2份同学代码,和自己代码比较,建议互评代码尽量找代码风格差异较大。
同学1 | 同学2 | 我的代码 |
---|---|---|
区别:
同学1用了一个长度为100的数组,然后把每个位的数都放到数组里头,然后再判断是否有数字相同。都是用数组来判断有没有重复数字,2同学我和我代码有一点相似,就是用数组来统计每个数字的个数,然后看有没有1个以上的数字。我和同学2的思路相同,1同学的方法我觉得会有一点麻烦,从内存占用来看,我觉得1同学的方法还需要改进,但是这种思路非常的好。
3.学习总结(15分)
3.1 学习进度条(5分)
周 /日期 | 这周所花的时间 | 代码行 | 学到的知识点简介 | 目前比较迷惑的问题 |
---|---|---|---|---|
第一周 | 3小时 | 60 | 学会输出字符 | 无 |
第二周 | 10小时 | 186 | 学到变量名称、运算、把变量的结果输出 | 无 |
第三周 | 7.5小时 | 245 | 学会if条件判断 | 无 |
第四周 | 5小时 | 120 | 学会使用for循环 | 无 |
第五周 | 6小时 | 80 | 学会定义函数,do while 等循环 | 一些复杂的函数看到不知道怎么定义,不了解一些新定义,比如const |
第六周 | 7小时 | 140 | 数组的定义,break的用法 | 对于一些题目不知道到底用什么方法去解决 |
第七周 | 8.5小时 | 254 | switch语句不加break;的用法。 | 无 |
第八周 | 10小时 | 360 | 字符串的使用 | 不会用字符串解决实际问题 |
第九周 | 8小时 | 400 | 利用循环嵌套来解决问题 | 有很多问题不知道如何下手,思路不是很清晰。 |
第十周 | 12小时 | 400 | 复杂的循环嵌套和字符的使用。 | 不会写伪代码 |
第十一周 | 8小时 | 325 | 掌握各种类型函数的定义、调用和申明,熟悉变量的作用域、生存周期和存储类型。 | 对于用double定义时,不太好理解负0的情况,也不知道怎么去处理 |
3.2 累积代码行和博客字数(5分)
时间 | 博客字数 | 代码行数 |
---|---|---|
第一周 | 183 | 60 |
第二周 | 1774 | 186 |
第三周 | 2149 | 245 |
第四周 | 1585 | 120 |
第五周 | 1645 | 80 |
第六周 | 2139 | 140 |
第七周 | 1979 | 254 |
第八周 | 2010 | 360 |
第九周 | 1856 | 400 |
第十周 | 2014 | 400 |
第十一周 | 2154 | 325 |
3.3 学习内容总结和感悟(5分)
3.3.1 学习内容总结
请用思维导图的形式将到目前为止所学的内容进行整理。
3.3.2 学习体会
这一周忙着恋爱,再加上作业难度大,而且这个星期的事比较多,所以作业做得不是很好。这个星期还有有很多地方没有理解的地方,比如负零还不是很了解。期末考试逼近,我也要抓紧复习,我计划这学期把C语言学完。从现在开始我也要学会挑战自己的极限,有时候感觉自己很累的时候,其实还能坚持。在这个学校可能学习氛围不是很好,我们其实可以和别人不一样。我们的人生可以是一个不平凡的人生。我们每天都在抱怨世界的不公平,却永远不知道背地里别人是多么努力。所以我决定以后严格要求自己,每天坚持比别人多花10%去学习。每周没课常去图书馆,因为为了追一个比我优秀女生,我必须和她现在同一个高度。当我听说了她在学校的事,我才知道原来自己做的事在她面前根本不算多,我们有时候只在乎今天游戏有什么活动、哪个电视剧更好看,但是别人还是在努力的学习。要想拥有一个不平凡的人生,我建议大家从此刻就要开始努力。而不是注意身边的人在干什么。我现在才知道原来自己连一个女生都不如。我们再做任何的事情都不要抱怨,因为现实就是这么残酷,你必须适应它。而且总会有比你更优秀的人、比你更努力的人。忽然才明白的一个道理,大学如果什么都不做,那就真的荒废了自己。本来我们就在一个三本院校,如果我们不努力,我们拿什么跟其他人比,开学前一段时间我感觉我很累,但是逐渐我感觉每天渐渐的不是那么累。这几天我一直在思考,之前的我真的很累吗?现在自己不感觉那么累了是不是自己懈怠了。仔细一想,还真是那么回事。当发现熬夜写代码变成熬夜打游戏的时候,放上课我倒在一头睡觉时,我才知道,我真的懈怠了。我高中同学跟我说她每天都要一两点才睡,而且晚上随时可能接到通知,每天都有做不完的工作。我问她那你怎么不把那个职位退了。她说了一句令我深思的话:“我不像拥有一个平庸的生活”,作为211大学的大学生都这么努力,为什么我们却还是这样。虽然有很多人都是懒懒散散,但是为什么我们不过做特殊的那一个。社会很残酷,你不努力就会被淘汰。 我真的很希望大家能够有一个这样的氛围。 # **五、评价标准** C语言作业评价标准 本次作业特别注意: + **1.提交列表没内容,或者太简单,每题得分0分。注意选择提交列表长的题目介绍。** + **2.代码格式不规范,0分。** + **3.代码互评,内容简单,0分。** + **4.学习内容总结无思维导图,0分。** + **5.完成挑战题的同学,加20分。**