这个作业属于那个课程 | C语言程序设计II |
---|---|
这个作业要求在哪里 | C语言I作业0011 |
我在这个课程的目标是 | 对于学过的内容,可以很熟练的进行编程,而且还可以看懂代码的每一步代表着什么意思,训练自己找错的能力 |
这个作业在那个具体方面帮助我实现目标 | 思维导图可以帮我建好学习框架,PTA的题目让我巩固知识点 |
参考文献 | 百度、《C Primer Plus》第六版,C语言程序设计 |
1.PTA实验作业
1.1题目名1
本题要求实现两个函数:一个函数判断给定正整数的各位数字之和是否等于5;另一个函数统计给定区间内有多少个满足上述要求的整数,并计算这些整数的和。
1.1.1数据处理
数据表达:第一个函数定义了两个整型变量:num1,sum,并且给sum赋值为0;第二个函数定义了3个整型变量:count,sum2,i,并且给count、sum赋值为0
数据处理:
int is( int number )
定义num1和sum两个变量
sum=0;
用do-while循环{
num1=number%10;
sum=sum+num1;
number=number/10;
}终止条件是number等于0
然后用if-else语句判断{
if(sum==5)
return 1;
else
return 0;
}
void count_sum( int a, int b )
定义count、sum2、i三个变量
count=0;
sum=0;
用for循环语句,里面包含一个if语句
for(i=a;i<=b;i++){
if(is(i)){
count++;
sum2=sum2+i;
}
}
如果满足第一个函数就进行累加,否则就不执行
最后输出结果:printf("count = %d, sum = %d",count,sum2);
1.1.2实验代码截图
1.1.3造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
104 999 | 104 is counted. count = 15, sum = 3720 | 例题上的数据 |
5 60 | 5 is counted. count = 6, sum = 165 | 随机输入的数据进行测试 |
1000 1999 | count = 15, sum = 17220 | 随机输入的数据进行测试 |
10 30 | count = 2, sum = 37 | 随机输入的数据进行测试 |
1.1.4PTA提交列表及说明
1.运行超时:我开始用的while循环,用DevC++测试发现一直循环,而且根据题目发现要用do-while循环
2-4多种错误:改了几次才知道是第二个函数中间函数出了问题,于是把第二段函数全删了,重新弄(有过忘记打上计数的代码、忘记给变量赋值)
5.格式错误:在答案输出的那里等号两边要空格
1.2 题目名2
本题要求实现一个函数,判断任一给定整数N是否满足条件:它是完全平方数,又至少有两位数字相同,如144、676等
1.2.1 数据处理
数据表达:定义了i, a[100],b, count,j五个变量,其中a[100]是数组,都是整型变量,给count赋值为0,令i=N、b=sqrt(i)(开根号);
数据处理:
int IsTheNumber(const int N)
定义i, a[100],b, count,j;
count=0;
i = N;
b = sqrt(i);
if (b*b==i)
while(i>0)
a[count]=i%10;
i=i/10;
for (j = 0; j < count; j++)
{
if (a[count] == a[j])
return 1;
}
这里开始判断是否是完全平方数,中间有判断是否有两个数字是一样的,就是用数组储存每次计算的结果,然后进行比较是否相等
count++;
然后返回程序
1.2.2 实验代码截图
输入数据 | 输出数据 | 说明 |
---|---|---|
105 500 | cnt = 6 | 例题上的数据 |
140 463 | cnt = 4 | 随机输入的数据进行测试 |
501 666 | cnt = 0 | 随机输入的数据进行测试 |
668 999 | cnt = 2 | 随机输入的数据进行测试 |
1.2.4 PTA提交列表及说明
因为要用到数组这个知识点,所以现在Devc++上测试,直达对了才誊到上面来,我来说说思路:这个题目其实想了很久,因为确实不知道怎么下手,后来觉得用数组会更简单,但因为这个知识点上课还没有讲到,所以不确定能不能用,但是不用数组的话我又想不出,所以最后决定还是用数组,数组可以用来储存数据,所以每算一次,我就储存在数组中,然后进行比较,看是否有相同的数,如果有,就返回计数。用数组解决这个问题简单了很多,我现在还没有想到不用数组怎么做,如果有知道的话,可以告诉我吗?
2.代码互评
2.1同学代码截图(计科3班李双同学)
2.2自己代码截图
2.3比较结果
1.我们采用的方法不一样,她采用了数组的方法,我没有,我就是用都-while语句来进行计算
2.我们只是计算的方式那里有一点不一样,其余的判断和求累积和是差不多的,两个方法都可以,看自己的习惯吧
2.4同学代码截图(计科1班李泽基同学)
2.5自己代码截图
2.6比较结果
1.这一题我是做了很久也没有做出来,问了同学才知道要用宏这个知识点要判断误差,这个是同学教我做的,而他没有用宏这个知识点,这点我很佩服他
2.我相信他一定做了很久,这个代码我要向他学习,他没有用我们没学过的知识点做出来了,我要多向他请教
3.学习总结
3.1 学习进度条(5分)
周/日期 | 这周所花的时间 | 代码行 | 学到的知识点简介 | 目前比较迷惑的问题 |
---|---|---|---|---|
第一周(9.19-3.27) | 6天 | 26行 | Hello world编程和Markdown语法 | 现在没有疑惑 |
第二周(9.25-10.4) | 4天 | 45行 | 华氏度与摄氏度的转换 | 对于变量的类型还不是很懂 |
第三周(10.8-10.11) | 3天 | 大约100行左右 | 计算分段函数和学习if-else语句 | 对于if-else语句还是不那么熟练 |
第四周(10.15-10.17) | 3天 | 大约75行左右 | for循环语句和指定次数的循环程序设计 | 关于指定次数的循环程序设计还不是很清楚 |
第五周(10.22-10.25) | 4天 | 大约110行左右 | 使用自定义函数来编程和生成乘方表和阶乘表 | 关于自定义函数的编程的细节还是不太懂 |
第六周(10.29-11.1) | 4天 | 大约120行左右 | 运用分支结构编程、字符型数据、逻辑运算符 | 对于逻辑运算符还不是很清楚,有一点点懵 |
第七周(11.6-11.8) | 3天 | 大约150行左右 | 运用switch语句来编程 | 现在感觉没有什么疑惑点,可能还没发现 |
第八周(11.12-11.15) | 3天 | 大约200行左右 | 进一步学习循环结构,学习了while和do-while语句 | 目前还没有发现什么疑惑点 |
第九周(11.19-11.22) | 3天 | 大约170行左右 | 学习了break语句和continue语句的用法以及嵌套循环 | 可能是刚学,在做PTA不是很熟练 |
第十周(11.26-11.28) | 2天 | 大约185行 | 对之前学过的循环结构进行了总结 | 暂时还没有发现问题 |
第十一周(12.3-12.5) | 3天 | 大约200行 | 进一步学习了函数,以及局部变量和全局变量 | 今天讲的比较快,有点懵的感觉,自己还需要时间去消化 |
3.2 累积代码行和博客字数(5分)
3.3 学习内容总结和感悟(5分)
3.3.1 学习内容总结
3.3.2 学习体会
本学期的C语言的最后一节新课落下了帷幕,时间真的好快,一下子就要考试了,记得从最开始敲代码时的崩溃到后面慢慢的习惯,这一个学期还是收获了很多,虽然中间的路并不平坦(可以说很艰难哈哈),但我还是坚持下来了,并且我也完成了,虽然还是有瑕疵,但我相信自己会慢慢改正的,我也会变得越来越好。本学期虽然结束了,但我们的学习之路还没有结束,我们这个专业是要不断学习的,所以不能放松,下周就会有考试,加油啦!