这个作业要求在哪里 |
C语言I作业11 |
我在这个课程的目标是 |
将本学期所学好好复习汇总,期末考试争取不挂科 |
这个作业在那个具体方面帮助我实现目标 |
理解老师上课讲的变量的作用域和生存期,弄懂存储类型 |
参考文献 |
C语言 |
1.PTA实验作业
1.1 题目名1:6-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.1.1数据处理
- 数据表达:定义变量N,其中N是用户传入的参数。如果N满足条件,则该函数必须返回1,否则返回0。定义变量i,k,m,temp用于辅助判断累加。
- 数据处理:伪代码
开始
调用数学函数
int 定义变量IsTheNumber,N
{
int 定义变量n1, n2, i, cnt;
scanf(输入显示 n1,n2);
将cnt赋值为0;
for循环语句( i累加条件,i累加 ) {
if条件语句( IsTheNumber(i) )
cnt累加;
}
输出显示;
结束
}
题目要求函数接口定义
{
int定义变量i,k,m,temp
int 定义一个有100个元素的数组a并将其所有值初始化为0
int 定义一个有10个元素的数组b并将其所有值初始化为0
令temp=N
while条件语句(当temp/10>0) {
将k赋值;
temp = temp除以10;
}
if语句(N==(int)sqrt(N)*(int)sqrt(N))
{
for语句(将i赋值0;当i小于k;i累加)
{
数组a的第i+1个元素=N/m%10;
m*=10
if(数组b的第a数组的第i+1个元素个元素+1等于1) 返回1;
如果不等于1 数组b的第a数组的第i+1个元素个元素+1赋值为1;
}
返回0;
}
如果不是 返回0;
}
1.1.2实验代码截图
1.1.3 造测试数据
105 500 |
cnt = 6 |
有六个完全平方数 |
100 400 |
cnt = 4 |
有四个完全平方数 |
50 100 |
cnt = 1 |
有一个完全平方数 |
1.1.4 PTA提交列表及说明
- 编译错误:第四行,第五行后面没有打{}
- 编译错误:第七行while语句后条件判断错误,写成了temp/100>0
- 编译错误:第十八行将b[a[i]]=1打成了b[i]=1
1.2 题目2:6-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 = 这些整数的和
裁判测试程序样例:
#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数据处理
- 数据表达:①定义变量x,y,并将y初赋值为0,当y除以5等于0时,返回1,反之返回0②定义变量a,b,sum,count,a,b用于for语句辅助判断,sum,count用于累加,最后输出sum,count。
- 数据处理:伪代码
开始
int 定义is函数( int 定义变量number );
void count_sum( int 定义变量a,b );
int main()
{
int 定义变量a,b
scanf(显示输入两个数a,b);
if语句 is函数 printf(输出a);
if语句 is函数 printf(输出 b);
范围由a到b
返回 0;
}
int 定义is函数( int 定义变量number )
{
int 定义变量x,y并将y初赋值0;
do
{
x为number除以10的余数;
number为number/10所得结果;
y最后为x加y;
}
while(number不等于0);
如果(y等于5)
返回 1;
否则
返回 0;
}
void count_sum( 定义变量a,b )
{
int 依题意定义变量count,sum0并初赋值为0
int 定义变量i;
for玄幻语句(i等于a;i小于等于b;i累加)
{
if条件语句(is函数))
{
count累加;
sum等于sum+i;
}
}
printf(显示输出count和sum);
}
1.2.2实验代码截图
1.2.3 造测试数据
1 2 |
count=0,sum=0 |
满足条件的整数个数为0,这些整数的和为0 |
5 10 |
5 is counted.count=1,sum=5 |
5的各个位数之和等于5,满足条件的整数个数为1,这些整数的和为5 |
10 20 |
count=1,sum=14 |
满足条件的整数个数为1,这些整数的和为14 |
1.2.4 PTA提交列表及说明
- 编译错误:第七行将 number=number/10打成了 number=number%10;
- 编译错误:第11行中将if(y==5)打成了number(y==5)
- 编译错误:第16行一开始没有按题目要求写上函数接口定义void count_sum( int a, int b ),而是按我自己平常的定义打的。
- 编译错误:第18行没有将count,sum,初赋值
- 编译错误:将22行if(is(i))打成if(is)
- 编译错误:将25行sum=sum+i;打成了sum++
2.代码互评
比较
- 1.他的代码比我要简洁很多,而且变量定义的更少,占的空间也小,显然思路比我清晰很多。
- 2.在判断N是否满足条件上,我的判断语句是(b[a[i]]==1),而他的判断语句是满足s[i]==2,返回1,满足n/=10,返回0。
- 3.相比两份代码,毫无疑问他的代码更好,更简洁,思路更清晰,我的代码很混乱,定义的变量也多,判断语句也不简洁,我要向他学习的地方很多。
同学代码(袁思凡)
自己代码
比较
- 1.他的代码也比我的简洁很多,我定义的变量很多,而且用了两组数组,他不但变量定义的少,而且只用了一组数组
- 2.在if语句输出判定条件上,他的语句为如果p[i]>1,返回1,否则返回0。
- 3.我的格式很乱,语句很复杂,他直接用一个for循环语句和一个if条件语句判断输出,而我用了两个if条件语句,一个for循环语句判断输出,把思路理很乱。
- 4.相比之下,我认为他的思路非常值得我学习,还有他处理问题的语句和方法,我还要在格式上加以改进,以后把思路理清楚在打代码。
3.学习总结
3.1 学习进度条
第四周 |
8小时 |
50行 |
简单输出 |
无 |
第五周 |
10小时 |
70行 |
学习输入 |
无 |
第六周 |
20小时 |
150行 |
用WinGW-w64来编译C程序 |
无 |
第七周 |
24小时 |
150行 |
运用if,else语句 |
对符号的意思不太理解 |
第八周 |
18小时 |
200行 |
运用for循环语句 |
无 |
第九周/10.25 |
8小时 |
200行 |
学习了自定义函数 |
符号容易弄混 |
第十周/11.1 |
26小时 |
250行 |
熟悉并掌握了多分支结构 |
各个运算符的意思还不太理解 |
第十一周/11.8 |
24小时 |
300行 |
熟悉唱我多分支结构switch语句 |
对空格的使用还比较疑惑 |
第十二周/11.15 |
20小时 |
300行 |
熟悉whlie和do-whlie结构 |
无 |
第十三周/11.21 |
16小时 |
280行 |
学会了break、continue的使用和循环的嵌套解决问题 |
对循环的嵌套还不怎么懂 |
第十四周/11.28 |
24小时 |
350行 |
对pow函数有了更深的理解,对循环嵌套语句的不懂得地方都弄懂了 |
不会将自己的语句用C语言表达出来 |
第十五周/12.4 |
24小时 |
300行 |
自学了一点数组的知识 |
对数组不完全了解,对自定义函数也不太懂 |
3.2 累积代码行和博客字数
第四周 |
450 |
70 |
第五周 |
450 |
140 |
第六周 |
1200 |
290 |
第七周 |
2400 |
490 |
第八周 |
3600 |
740 |
第九周 |
4800 |
990 |
第十周 |
6000 |
1240 |
第十一周 |
7300 |
1740 |
第十二周 |
8700 |
2120 |
第十三周 |
10800 |
2800 |
第十四周 |
12500 |
3200 |
第十五周 |
14000 |
3500 |
3.3 学习内容总结和感悟
3.3.1 学习内容总结
3.3.2 学习体会
- 本周题目很难,难到自己有些题目已经无法解决,然后写多了难题会慢慢发现以前的难题根本不算什么,我认为这应该也算是一种进步吧
- 对于自定义函数还不太熟练,还有很多不懂的地方,马上就要考试了,得赶紧补知识漏洞了
- 刚认识数组,还没完全懂,现在老师也没教,走在老师教学进度前面的感觉很棒,可是又没有完全弄懂又觉得有点遗憾,不管怎么说,感觉进步已经很大了,继续加油吧!