C语言I博客作业11
问题 | 回答 |
---|---|
这个作业属于哪个课程 | C语言程序设计II |
这个作业要求在哪里 | 作业要求 |
我在这个课程的目标是 | 能够自主开发出一个软件,拥有用户并能够维护程序运行 |
这个作业在那个具体方面帮助我实现目标 | |
参考文献 | 百度百科,CSDN技术社区 |
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\n", cnt);
return 0;
}
/* 你的代码将被嵌在这里 */
输入样例:
105 500
输出样例:
cnt = 6
1.1.1数据处理
数据表达:
使用了变量a,b,flag,都定义为整型,其中flag为数组,并初始化都为0
数据处理:
Begin
给a赋值为需要判断的数开根号
判断开方数的平方是否等于需要判断的数
利用while语句判断是否整数含有相同数字
数组用于标记和返回数值
End
1.1.2实验代码贴图
1.1.3造测试数据
数据输入 | 数据输出 | 说明 |
---|---|---|
0 99 | cnt = 0 | 在0到99内无这样的整数 |
500 1000 | cnt = 2 | 在500到1000内有两个这样的整数 |
1.1.4PTA提交列表及说明
说明:
对于数组的使用,在前期我对他的理解是根据余数判断是否出现重复,后来我发现自己的理解不太对,然后想了很久没想明白,再跟李清溪学长讨论后突然醒悟,我给数组初始化为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.\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数据处理
数据表达:
使用了digital,sum1,count,sum变量,都定义为整型
数据处理:
这道题需要写两个函数,is()函数用来判断各位数之和是否等于5,count_sum()函数用于统计和计算
Begin
int is(int number)
{
使用do-while语句来判断整数各位数和,sum1用于接收结果
如果sum1等于5,则返回1
否则返回0
}
void count_sum(int a,int b)
{
用for语句对于给定的范围进行循环判断
用if语句判断is函数返回的值
count累加整数个数
sum累加整数和
}
1.2.2实验代码贴图
1.2.3造测试数据
数据输入 | 数据输出 | 说明 |
---|---|---|
1000 1999 | count = 15, sum = 17220 | 在1000到1999内有这样的整数15个,且和为17220 |
0 10000 | count = 56, sum = 77770 | 给定最大范围得到结果 |
1.2.4PTA提交列表及说明
说明:
这题在老师布置作业之前在PTA固定题目集上做过,之前因为有一段时间没接触过自定义函数了,有点生疏。所以又看书重新复习了一下
代码互评
c1
c2
myself
- 1.我的代码使用的do-while语句,其他两位同学使用的是while语句,并且他们while的判断条件与我不同,他们的是number大于0,而我的是number不等于0
- 2.c1在while语句中使用两个表达式进行了各位数求和,而我使用了三个,这个是一个可以优化代码的地方
学习总结
3.1学习进度条
周 | 这周所花时间 | 代码行 | 学到的知识简介 | 目前比较迷惑的问题 |
---|---|---|---|---|
第五周 | 8h | 56行 | 常量,变量和数据类型 | 无 |
第六周 | 12h | 89行 | 格式化输入函数scanf(),for循环 | 无 |
第七周 | 19h | 286行 | 分支结构 | 无 |
第八周 | 15h | 238行 | 函数的定义和调用 | 函数的定义和调用的基本用法 |
第九周 | 10h | 173行 | while语句,函数的定义和调用强化 | 被调函数返回值 |
第十周 | 20h | 312行 | 逻辑运算符优先级,定义和访问数组 | 逻辑表达式的运算 |
第十一周 | 11h | 189行 | switch语句,ASCⅡ码的了解 | 进制转换 |
第十二周 | 9h | 279行 | continue语句,循环结构的嵌套,do-while语句,条件运算符 | break语句与continue语句的区别 |
第十三周 | 9h | 201行 | break语句与continue语句的区别,循环结构嵌套的执行顺序 | 无 |
第十四周 | 10h | 224行 | 穷举法的了解,局部变量和全局变量 | 关于各种新接触的数学知识 |
第十五周 | 11h | 298行 | 变量生存周期和静态局部变量 | 静态局部变量 |
3.2累积代码行和博客字数
3.3学习内容总结和感悟
3.3.1学习内容总结
3.3.2学习体会
1.这周在做PTA题目的时候,让我明白了,如果有些知识点不经常去使用去练习,很容易淡忘,所以自己合理的复习自己的知识点。
2.我发现我在上课的时候,关于老师讲知识概念的时候,老爱开小差,这个很不好,这会导致自己要在课后花多余的时间去弄懂,所以自己要努力将这种毛病客服