这个作业属于那个课程 | C语言程序设计II |
---|---|
这个作业要求在哪里 | C语言I作业11 |
我在这个课程的目标是 | 希望能够在学完后能够自己做出一个C语言的小游戏 |
这个作业在那个具体方面帮助我实现目标 | 函数复习;熟悉变量的作用域、生存周期和存储类型。 |
参考文献 | C语言程序设计 |
1.PTA实验作业(20分/题)
1.1(6-1) 统计各位数字之和是5的数 **(20 **分)
本题要求实现两个函数:一个函数判断给定正整数的各位数字之和是否等于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数据处理
-
数据表达:此题我定义了四个整型变量x, y, i, flag和一个整型数组a[10],并将flag赋值为0,a[10] = { 0 };x,y用于存储N能否开平方进行中间值的储存;i代表的是各位数的数值;flag是N是否为完全平方数的一个返回值标志;a[10]代表一位数可能出现的10种情况
-
数据处理:
int IsTheNumber(const int N) 定义变量x, y, i, flag和数组a[10]; flag←0,a[10]←{0}; x←N的算数平方根; y←x的平方; 如果y是完全平方数 { 循环直至y为0 { 得到N的个位数; N中有某个数的个数+1; 如果有某个数的个数大于2 { 确定一个标志flag←1; } 控制N依次去掉各位数; } } 返回flag的值
1.1.2实验代码截图
1.1.3 造测试数据
输入 | 输出 | 说明 |
---|---|---|
105 500 | cnt = 6 | sample 全是3位数 |
1111 2222 | cnt = 9 | 全是4位数 |
-100 11 | cut = 0 | 包括负数,cnt为0 |
1.1.4 PTA提交列表及说明
说明:
- 编译错误:等号的左值应该是一个可修改的值,我直接用了N,后来重新定义了一个值作代表
- 答案错误:flag没有进行初始化;后来加上flag=0;
1.2(6-2) 统计各位数字之和是5的数 (20 分)
本题要求实现两个函数:一个函数判断给定正整数的各位数字之和是否等于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.2.1数据处理
-
数据表达:函数1:我定义两个整型变量num,sum;num用于取得number的个位数;sum用于对num进行累加;函数2:我定义了两个整型函数count,sum;count用作与对符合条件数的进行记数;sum用作与对对符合条件数的进行累加
-
数据处理:
int is(int number) 定义变量num,sum; num←0,sum←0; 循环直至为number等于0的时候 { num←number的个位数; sum←sum+num; 控制N依次去掉各位数; } 如果sum等于5; { 返回1; } 如果sum不等于5; { 返回0; } void count_sum(int a, int b) 定义变量count,sum; count←0,sum←0; 从a开始循环直到b,每次循环a+1; 如果i的各位数之和是5 { count+1; sum = sum + i; } 输出count的值和sum的值
1.2.2实验代码截图
1.2.3 造测试数据
输入 | 输出 | 说明 |
---|---|---|
104 999 | 104 is counted. count = 15, sum = 3720 | sample等价,a是,b不是 |
14 23 | 14 is counted. 23 is counted. count = 2, sum = 37 |
a和b都是,但之间没有 |
0 1 | count = 0, sum = 0 | 区间内完全没有 |
0 10000 | count = 56, sum = 77770 | 最大区间 |
13 15 | count = 1, sum = 14 | 最小区间,有1个 |
1.2.4 PTA提交列表及说明
说明:部分正确:for循环中的终止条件写成了i<b;后来改成了i<=b
2.代码互评
同学1代码:
同学2代码:
我的代码:
对于这个题目区别主要在第一个函数,第二个函数基本上没有什么什么区别
不同点:
我与同学:我的第一个函数是在对和是否为5进行判断后就直接进行返回值的操作,两位同学则是用了一个标志再进行对标志的返回
同学与同学:同学1在对sum进行判断后再将sum赋值为1或者0,再将sum的值作为返回值进行返回,同学2是定义了一个i的标志变量,并且初始化为0,如果sum符合条件就再将其赋值为1,最后返回i的值
3.学习总结
3.1 学习进度条
周/日期 | 这周所花的时间 | 代码行 | 学到的知识点简介 | 目前比较迷惑的问题 |
---|---|---|---|---|
第六周 | 20小时 | 372 | if-else语句和数学函数 | 暂无 |
第七周 | 10小时 | 226 | 分支结构 | 暂无 |
第八周 | 12小时 | 110 | for循环结构 | 暂无 |
第九周 | 16小时 | 200 | 函数的声明,定义和调用 | 暂无 |
第十周 | 20小时 | 323 | 分支结构,字符型数据类型,ASCII码,逻辑运算符 | 对于字符型数据类型的运用还是不熟练,需要多加练习 |
第十一周 | 18小时 | 788 | 分支结构,switch语句,简单的数组的使用 | 对于数组的了解还是不够,下周还是要多加学习 |
第十二周 | 22小时 | 346 | 循环结构,while循环和do-while循环 | 数组和结构体的知识有待加强 |
第十三周 | 20小时 | 463 | 熟悉break、continue的使用;熟悉使用循环的嵌套解决问题。 | 最近自学的进度有点落下来了,有必要调整下自己的时间安排 |
第十四周 | 23小时 | 564 | 学了一点最基础的Linux系统的命令行操作,会查看日历,当前日期等操作 | 对于C语言指针方面有点懵 |
第十五周 | 35小时 | 376 | 继续学习Linux操作系统的基础命令操作,进行python的学习 | 对于C语言指针方面有点懵 |
3.2 累积代码行和博客字数
3.3学习内容总结和感悟
3.3.1 学习内容总结
3.3.2 学习体会
快考试了,感觉还有好多有学的东西,寒假时间虽然比较长但是任务可能也会比较重,加油