C语言I博客作业11
2019-12-06 18:26 李茹萱 阅读(214) 评论(0) 编辑 收藏 举报一、本周教学内容&目标
- 第5章 函数 要求学生掌握各种类型函数的定义、调用和申明,熟悉变量的作用域、生存周期和存储类型。
二、本周作业头
问题 | 答案 |
---|---|
这个作业属于那个课程 | C语言程序设计II |
这个作业要求在哪里 | https://edu.cnblogs.com/campus/zswxy/CST2019-3/homework/10130 |
我在这个课程的目标是 | 熟练地运用C语言进行编程 |
这个作业在那个具体方面帮助我实现目标 | 多写代码 |
参考文献 | 《PTA常见问题解答》伪代码的写法:https://www.cnblogs.com/huipengkankan/archive/2011/07/28/2120416.html,《c语言程序设计》 |
三、本周作业
1.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数据处理
数据表达:先在主函数中定义了两个整型变量m和n,并将n转换成int后赋值给sqrt(N),m赋值为n*n
数据处理:
伪代码:
int m,n;
n←(int)sqrt(N);
m←n*n;
if(m=n)
{
int num[10]←{0};
int i;
while(m>0)
do
for(i←0 to 9)
if(m mod 10=1)
{
num[i]←num[i]+1;
if(num[i]=2)
返回 1 ;
}
repeat
m←m/10;
end
}
end
1.1.2实验代码截图
1.1.3造测试数据
输入 | 输出 | 说明 |
---|---|---|
105 500 | cnt=6 | 满足条件的数有6个 |
400 800 | cnt=4 | 满足条件的数有4个 |
250 600 | cnt=3 | 满足条件的数有3个 |
1.1.4PTA提交列表及说明
开始的时候把前面的那段主函数也复制上去了,导致一直编译错误,后面就返回去看了之前的函数题,把前面那段主函数删除了就对了。
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数据处理
数据表达:在主函数里面定义了两个整型变量m和i,并将其赋值为0,在被调函数里定义了sum和count两个整型变量,都赋值为0;
数据处理:
伪代码:
int m←0, i←0;
while (number ≠ 0)
do
sum ←number Mod 10;
number ←number/10;
m ←m+i;
repeat
if (sum = 5)
返回 1
else
返回 0
end
int sum ←0, count ←0, c;
for(c ←a to b)
{
if(is(c))
{
count ←count+1;
sum ←sum+c;
}
}
输出 count, sum
end
1.2.2实验代码截图
1.2.3造测试数据
输入 | 输出 | 说明 |
---|---|---|
104 999 | 104 is counted.count = 15, sum = 3720 | 在104和999之间有15个满足条件的数,他们的和为3720 |
560 745 | count = 0, sum = 0 | 在560和745之间没有满足条件的数 |
123 888 | count = 12, sum = 3381 | 在123和888之间有12个满足条件的数,他们的和为3381 |
1.2.4PTA提交列表及说明
编译错误:在写代码的时候不小心删除了一个花括号,后来根据PTA的错误提示找到了问题所在。
部分正确:卡在部分正确,我也找不出哪里有问题,后面我就换了一条思路写。
四、代码互评
-
同学代码
-
我的代码
1、我只定义了两个变量,同学定义了三个,他的整体看起来更好理解一些;
2、我们都运用了数组的知识,思路大致的差不多的,但是他的代码整体比我的更好理解一些。 -
同学代码
-
我的代码
1、同学的代码开始的while条件句为number>0,我的是number!=0;
2、我还用了if-else语句对其进行判别,我感觉我的代码比同学的更好理解一些,但是他的代码更为简洁。
五、学习总结
学习进度条
周/日期 | 这周所花时间 | 博客字数 | 代码行 | 学到的知识点 | 此前比较迷茫的问题 |
---|---|---|---|---|---|
第一周 | 两天 | 619 | 32 | 学会简单地编写代码 | 什么时候该空格或者打分号 |
第二周 | 三天 | 828 | 18 | 学会计算摄氏温度与华氏温度的转化 | 不太会转化的表达式 |
第三周 | 三天 | 1128 | 90 | 学习scanf语句,if-else语句 | 不是很清楚输入符号标点所表示的意思 |
第四周 | 四天 | 1425 | 75 | 初步了解for循环语句 | 对其运用的条件还不是很清楚 |
第五周 | 三天 | 1408 | 83 | 对自定义函数的定义和调用有初步的认识和了解 | 不是很明白如何调用以及形参和实参的定义 |
第六周 | 四天 | 1523 | 144 | 对分支结构有进一步的了解,学习了运算符号的输入输出 | 字符型的输入输出 |
第七周 | 两天 | 1688 | 133 | 对switch语句有了一定的了解 | switch语句使用的具体条件还不是很清楚 |
第八周 | 一天半 | 1438 | 84 | do while循环结构和while循环结构 | 对循环结构的使用还不是很熟练 |
第九周 | 一天半 | 1729 | 82 | break和continue语句的使用方法 | 对continue的使用条件和作用还不是很清楚 |
第十周 | 一天 | 1588 | 79 | 对for循环嵌套语句有了更进一步的了解 | 对嵌套的关系还不是很理解 |
第十一周 | 一天 | 1756 | 93 | 各种类型函数的定义、调用和申明,熟悉变量的作用域、生存周期和存储类型 | 对函数的变量的生存周期和存储类型都不太熟悉 |
3.2累积代码行和博客字数
3.3学习内容总结和感悟
3.3.1 学习内容总结
3.3.2 学习体会
- 这周的课我是真的没怎么听懂,太难了,还得去靠课后自学,感觉老师讲的我似懂非懂,做题目一塌糊涂,而且这次的题目我觉得是真的难,
反正我是没有做完,后面的挑战题能看懂,就是不会写,我已经放弃治疗了,代码使我头秃,我太难了。