问题 | 答案 |
---|---|
这个作业属于那个课程 | C语言程序设计IIIII |
这个作业要求在哪里 | https://edu.cnblogs.com/campus/zswxy/CST2019-2/homework/10131 |
我在这个课程的目标是 | 熟练掌握各大语句,运算符,函数,尝试用简单的代码解决复杂的问题 |
这个作业在那个具体方面帮助我实现目标 | 掌握各种类型函数的定义、调用和申明,熟悉变量的作用域、生存周期和存储类型 |
参考文献 | 《C语言程序设计》 |
一、PTA实验作业
1.1统计某类完全平方数
题目内容:
本题要求实现一个函数,判断任一给定整数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;
}
/* 你的代码将被嵌在这里 */
1.1.1 数据处理
数据表达:定义了整型变量n。n指输入的整数。sqrt 函数返回的值是double型,强制类型转换为int型。定义一个有10个整型元素的数组num,并对第一个元素赋初值0。
伪代码
1.1.2实验代码截图
1.1.3 造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
10 90 | cnt=0 | 不存在两位数字相同的完全平方数 |
50 130 | cnt=2 | 满足条件的整数较少 |
105 500 | cnt = 6 | 题目示例 |
90 950 | cnt=9 | 满足条件的整数较多 |
1.1.4 PTA提交列表及说明
- Q1:部分正确说明大体思路是对的,可能是某种需要考虑的情况被漏掉或有部分不正确。
- A1:当输入的数不是完全平方数需要返回0,加上这种情况就可以了。
1.2统计各位数字之和是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;
}
1.2.1数据处理
数据表达:在定义函数is时,定义了两个整型变量sum,a。sum表示number各位数字之和,a表示区间内的最小值。在定义函数count_sum时,定义了四个整型变量b,c,sum,count。b和c分别表示区间的最大值和最小值,sum表示满足条件的正整数之和,count表示满足条件的正整数的个数。
伪代码
1.2.2 实验代码截图
1.2.3 造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
5 30 | 5 is counted. count = 3, sum = 42 |
区间较小 |
104 999 | 104 is counted. count = 15, sum = 3720 |
题目示例 |
233 2333 | count = 31, sum = 40574 | 区间较大 |
1.2.4 PTA提交列表及说明
- Q1:格式错误可能是输入或输出时的格式不符合题目要求。
- A1:题目要求输出两个数时=两边都要有一个空格,打上空格之后就正确了。
二、代码互评
2.1.1统计某类完全平方数
2.1.2代码截图(左边和中间的分别为第一位同学和第二位同学的代码,右边的是自己代码)
- 第一位同学比我多定义了一个变量b。在判断输入的n是否为完全平方数时,她用整型变量b来存sqrt(n),然后运用if语句判断b^2是否与n相等。我是直接将sqrt 函数返回的值是double型,强制类型转换为int型。
- 第一位同学运用if语句进行判断,当n为完全平方数时再嵌套其他语句判断是否n至少有两位数字相同。我是运用if语句进行判断,如果n不是完全平方数直接返回0.
- 第二位同学定义了一个有100个整型元素的数组a,用来存放i的余数。我定义了一个有10个整型元素的数组num。
三、学习总结
3.1 学习进度条
周 | 这周所花的时间 | 代码行 | 学到的知识点简介 | 目前比较迷惑的问题 |
---|---|---|---|---|
第一周 | 6小时 | 29行 | 对C语言、markdown语法,编程有了初步的认识 | 对编程一窍不通,只会照着书上打 |
第二周 | 8小时 | 19行 | 学会如何提问,安装MinGW-w64并用它编译C程序 | markdown语法掌握不熟练 |
第三周 | 10小时 | 96行 | 关系运算、if-else语句、格式化输入语句scanf(),以及常用的数学库函数 | 对编程中各大语句的运用不熟悉 |
第四周 | 13小时 | 93行 | for循环语句实现指定次数的循环程序设计 | 运用for语句时经常犯很多错误 |
第五周 | 10小时 | 161行 | 用C语言编写程序 | 对编写函数和调用函数还有很多不熟悉 |
第六周 | 12小时 | 168行 | 多分支结构、字符型数据类型和逻辑运算符 | 对各运算符的优先级和结合性,多分支结构不熟悉 |
第七周 | 10小时 | 185行 | 熟悉多分支结构switch语句的使用 | 面对比较复杂的题时难以解决 |
第八周 | 8小时 | 159行 | 使用while和do-while结构解决问题 | 不知道如何写伪代码 |
第九周 | 8小时 | 158行 | 熟悉break、continue的使用,熟悉使用循环的嵌套解决问题 | 对复杂的嵌套循环还是有些难理解 |
第十周 | 11小时 | 140行 | 根据实际情况,选择合适的算法、合理的循环结构,熟练的编写程序 | 逻辑思维能力不够,做题太吃力 |
第十一周 | 10小时 | 194行 | 掌握各种类型函数的定义、调用和申明,熟悉变量的作用域、生存周期和存储类型 | 不太理解函数的类型区分,定义等 |
3.2 累积代码行和博客字数
3.3 学习内容总结和感悟
3.3.1 学习内容总结
3.3.2 学习体会
- 函数作为能够完成特定任务的独立程序代码单元,毫无疑问是编写代码时非常便利的工具。不仅可以省去重复的代码,还提高了代码的可读性。但它学起来也是非常头疼的。首先是函数的分类,有无参数,有无返回值,其次是如何定义函数,如何调用函数和如何声明函数,还有变量的作用域和存储方式。好像都有点一知半解的样子。