这个作业属于那个课程 | C语言程序设计II |
---|---|
这个作业要求在哪里 | C语言I作业11 |
我在这个课程的目标是 | 熟练运用循环结构以及更合理的算法 |
这个作业在那个具体方面帮助我实现目标 | 在完成pta作业时能帮我更好地理解 |
参考文献 | C语言程序设计 |
1.PTA实验作业
1.1 统计某类完全平方数
本题要求实现一个函数,判断任一给定整数N是否满足条件:它是完全平方数,又至少有两位数字相同,如144、676等。
函数接口定义:
int IsTheNumber ( const int N );
其中N是用户传入的参数。如果N满足条件,则该函数必须返回1,否则返回0。
裁判测试程序样例:
include
include
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\n", cnt);
return 0;
}
/* 你的代码将被嵌在这里 */
输入样例:
105 500
输出样例:
cnt = 6
1.1.1数据处理
数据表达:N是输入的整数,定义了n来接受N乘以1.0的平方根,m来表示n的平方;还定义了一个十位的数组a来储存n,i用来收集m除以10后的余数。
数据处理:伪代码:
int IsTheNumber ( const int N )
{
定义 n = N乘以1.0的平方根
定义 m = n的平方
if( m等于N)
{
定义 数组a[10]={0};
while (m>0)
{
int i = m除以10的余数
a[i]累加
if(a[i]==2)
返回值为1;
m/=10;
}
}
返回值为0
}
1.1.2实验代码截图
1.1.3 造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
105 500 | cnt 6 | 105~400中有6个类完全平方数 |
101 1001 | cnt = 8 | 101~1001中有8个类完全平方数 |
618 728 | cnt = | 618~728中有1个类完全平方数 |
1.1.4 PTA提交列表及说明
编译错误:定义n时,应该是N乘以1.0,我忽略了还需要加个小数点,后面改了后再在VS上编译了几遍后便通过了
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 裁判测试程序样例:
include
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.\n", a);
if (is(b)) printf("%d is counted.\n", b);
count_sum(a, b);
return 0;
}
/* 你的代码将被嵌在这里 */
输入样例:
104 999
输出样例:
104 is counted.
count = 15, sum = 3720
1.2.1 数据处理
数据表达: 自定义函数is, count_sum,定义整型变量s,t用于while循环count,sum,count为满足条件的整数个数, sum为这些整数的和
数据处理:伪代码:
自定义函数is
定义整数变量s = 0, t = 0,用于while循环
while (n 不等于 0)
{
t 等于n除以10的余数
n 等于自身除以10
s 等于自身加上t
}
如果 (s == 5)
返回值为1
则
返回值为0
}
自定义函数count_sum
{
定义整形变量 sum = 0, count = 0, i;
for (i = a; i <= b; i++)
{
如果 is返回值为1
{
count++;
sum等于自身加i
}
}
输出count,sum
}
1.2.2 实验代码截图
1.2.3 造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
104 999 | 104 is counted. | |
count = 15, sum = 3720 | 104~999中有15个各位数字之和是5的数,它们的和为3720 | |
618 728 | count = 0, sum = 0 | 618~728中没有各位数字之和是5的数,故和为0 |
1 100 | count = 6, sum = 165 | 1~100中有6个各位数字之和是5的数,它们的和为165 |
1.2.4 PTA提交列表及说明
编译错误:不仅仅是编译错误,完全忽略了s=5的1情况,还有一些没打出来
部分正确:这次只通过了 “区间内完全没有” 这一个测试点,后面借鉴了百度嘻嘻,然后再在VS上编译,才全部通过
同学代码截图
同学代码截图
自己代码截图
1.与第一位同学相同的是我们定义的count_sum函数是一样的,只不过前面他是定义了n并将number赋值于n, 而且while语句和他的不一样,他的更简洁一点吧
2.与第二位同学不同的是他的代码自定义is函数定义用的是for循环,而我用的是while循环
3.而且第二位同学的是直接累加计算余数,这里我和他也不同,我分开了,他的应该相对好一些
3.学习总结
3.1 学习进度条
日期/周 | 这周所花的时间/小时 | 代码行数 | 学到的知识点 | 目前比较困惑的地方 |
---|---|---|---|---|
第四周 | 5 | 68 | ||
第五周 | 6 | 86 | ||
第六周 | 15 | 168 | ||
第七周 | 7 | 127 | ||
第八周 | 20 | 268 | for循环语句 | 一些符号语句的含义 |
第九周 | 24 | 298 | fact语句 | 符号的含义 |
第十周 | 26 | 324 | 字符型数据类型和逻辑运算符 | 部分逻辑运算符的含义 |
第十一周 | 20 | 278 | 多分支结构switch语句 | 分支结构内部的区别于联系以及数组 |
第十二周 | 28 | 422 | while语句与do-while语句 | do-while语句和数组 |
第十三周 | 25 | 287 | brerak,continue语句和嵌套式语句 | 基础知识不牢固 |
第十四周 | 20 | 420 | 熟练运用循环结构并学会将代码合理化 | 数组学了一点却还不会实际运用 |
第十五周 | 21 | 411 | 将基础知识巩固并优化代码 | 老师讲的新知识还不能完全理解还不会运用 |
3.2 累积代码行和博客字数
日期/周 | 博客字数 | 代码行数 |
---|---|---|
第四周 | 623 | 50 |
第五周 | 640 | 70 |
第六周 | 1024 | 196 |
第七周 | 1941 | 286 |
第八周 | 3068 | 426 |
第九周 | 3462 | 486 |
第十周 | 4068 | 596 |
第十一周 | 5266 | 742 |
第十二周 | 6408 | 1031 |
第十三周 | 7829 | 1318 |
第十四周 | 8645 | 1509 |
第十五周 | 10021 | 1920 |
3.3 学习内容总结和感悟
3.3.1 学习内容总结
呼! 还是不得不感叹时间过的真快,转眼这就是最后一次作业了,而且真的感觉比之前的题难了好多个度,之前的题都还能理解题意,这次的编程题我题目都没看懂,其实也还是自己太差了吧。通过这么多次的博客与PTA作业,从最开始啥也不懂到现在对C语了解后慢慢的会做一些简单的题了(难题还是不太会)。然而现在对于期末考试还是有点慌,就希望在接下来还有几天的时间里进行恶补一下,一直相信只要用心没有啥是学不好的(前提是得自律点哈哈),加油加油!