一.表格
这个作业属于哪个课程 | C语言程序设计II |
---|---|
这个作业要求在哪里 | C语言I博客作业11 |
我在这个课程的目标是 | 把C语言学精,熟练掌握编程技术,努力找到简单代码的写法 |
这个作业在哪个具体方面帮助我实现目标 | PTA上做题,devc++慢慢掌握调试,加强对于函数类型以及静态和动态储存的理解与应用 |
参考文献 | 百度百科,其他同学作业,《C Primer Plus》,教科书 |
二.本周作业
1.PTA实验作业
1.1统计某类完全平方数
题目内容描述:本题要求实现一个函数,判断任一给定整数N是否满足条件:它是完全平方数,又至少有两位数字相同,如144、676等。
函数接口定义:
int IsTheNumber ( const int N );
输入样例:
105 500
输出样例:
cnt = 6
1.1.1数据处理:
数据表达:r,n,a[10],d(变量);运算,赋值(怎么来);int(整型)
函数参数:主函数是“int main()”,被调函数是“int IsTheNumber ( const int N )”形参是r,n,a,它们都是整型
- 数据处理:
定义变量r来放参数N二分之一次方,n来放参数N,a[10]来放完全平方数(完全平方数可以有10位) if(r*r==N) 判断是否是完全平方数 定义变量d来表示数组里的元素 while(n){ d=n%10; 求完全平方数个位数 a[d]++; 数组元素位置上加1 if(a[d]==2){ 是否同一个元素位置上等于2 返回1;跳出循环 n/=10; 取出完全平方数的各位数 } 不是便返回0 程序结束。
1.1.2实验代码截图
1.1.3造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
105 500 | cnt = 6 | 题目样例 |
1 100 | cnt = 1 | 包含所有二位数 |
1 1000 | cnt = 9 | 包含所有3位数 |
-100 0 | cnt = 0 | 不符合条件 |
1.1.4PTA提交列表及说明
题目说明:这个题目刚开始想不用数组去写,想了很久,发现根本不可以。因为完全平方数的位数无法确定,所以必须用数组才可以解决这个问题。去百度搜了一下数组怎么用,然后再dev上试了十多分钟,便写出来了。理解之后便写在pta上面了。
1.2 统计各位数字之和是5的数
题目内容描述:本题要求实现两个函数:一个函数判断给定正整数的各位数字之和是否等于5;另一个函数统计给定区间内有多少个满足上述要求的整数,并计算这些整数的和。
函数接口定义:
int is( int number ); void count_sum( int a, int b );
输入样例:
104 999
输出样例:
104 is counted. count = 15, sum = 3720
1.2.1数据处理:
- 数据表达:i(变量)这题只需要用if-else嵌套就行,所以只需要设置一个变量;赋值(如何来);int(整型)
- 数据处理:
定义变量i来放1——1000所有正整数 for(i=1;i<=1000;i++) 保证1到1000所有数进入循环 if(i*i%10==i) 判断一位数是否为同构数 空6列输出同构数 else if(i*i%100==i) 判断两位数是否为同构数 空6列输出同构数 else if(i*i%1000==i) 判断三位数是否为同构数 空6列输出同构数 程序结束
1.2.2实验代码截图
1.1.3造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
104 99 | ![]() |
题目样例 |
1.1.4PTA提交列表及说明
这个题为这次挑战题,但仔细阅读题目便知道,这和上次作业计算分数差不多。我在Dev上写,每次都答案不对,再仔细看题目,原来还要输出6列才行。加上了,答案便和题目样例一模一样。
2.代码互评
2.1.1 同学代码截图①
2.1.2自己代码截图①
- 我们的不同之处.
- 这位同学和我思路差不多,只是我用的是if-else嵌套结构,他只用一个if-else然后包括所有条件即可输出。
- 他是把平方数定义为n,然后直接输出,而我直接用一个变量i表示所有条件。
我应该有时候运用他这种总和条件的知识,看着很长,但有时候挺好用的。
2.2.1同学代码截图②
2.2.2自己代码截图②
- 我们的不同之处.
- 他的思路和我差不多,不过表达有些偏差。
- 他用count计梅森数;我是直接当n输入为1时,输出None。
- 最后判断素数方法有点不一样,他for循环判断j的最大值没有除以2后面也用了一次;我是前面用了,后面判断直接是否等于0。
他的这种思维更加简单,不过逻辑没有我紧密。
3.学习总结
3.1学习进度条
周/日期 这周所花的时间 代码行 学到的知识点简介 目前比较迷惑的问题 十一/3/12-6/12 3天 150 函数类型以及静态和动态储存的理解与应用 挑战题数组的运用 十/26/11-29/11 2天 110 对循环语句for,if-else加强理解以及对嵌套掌握更加熟练 还有点不清楚字符怎么用 九/19/11-22/11 3天 100 break语句,continue语句用法和区别 不太清楚字符怎么用 八/12/11-15/11 3天 120 while和do-while循环语句用法和概念 暂时没有 七/5/11-8/11 3天 140 switch语句用法 如果x为浮点型,y,z为整型为什么x=y/z答案不对 六/28/10-2/11 3天 130 嵌套if-else语句,格式以及如何应用 不太清楚Devc++怎么调试 五/22/10-25/10 3天 100 用法如何定义函数,格式以及如何应用 暂时没有 四/15/10- 18/10 3天 80 循环结构,流程图,数学函数 数学公式的表达,为什么整数除以变量有一个要用括号括起来还要乘以1.0 三/9/10-13/10 3天 70 if-else,&&用法,字母%用法,数学函数 PTA每次答案错误,都十分难找出来。不得已重打
3.2累计代码行和博客字数
3.3学习内容总结和感悟
3.3.1学习内容总结
3.3.2学习体会
- 这周主要进行对函数的拓展:全局变量、局部变量、静态和动态存储区怎么用,是什么。感觉函数类似于数学函数啊。。依旧的难理解。看样子要多看书和b站大学理解了。
- 这次作业一元二次方程好难啊。。复数的输出真的好难。。应该是因为高中没对一元二次拓展,,完全不知道复数跟怎么讨论
- 主要是进行全局变量和局部变量以及自动变量和静态变量的分别。
- 快要期末了,我发现上课学的知识真的很少,这也说明了大学是靠自学的。下周就要考选择题了。。我得抓紧学后面内容了。