1.PTA实验作业
1.1 统计各位数字之和是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.
", a);
if (is(b)) printf("%d is counted.
", b);
count_sum(a, b);
return 0;
}
/* 你的代码将被嵌在这里 */
1.1.1数据处理
数据表达:定义了整形变量sum,n;并把sum初始化为0;
数据处理:
is()函数:
int sum=0,n;//定义变量
while number!=0
do n←number%10;
sum←sum+n;
number←number/10;
if(sum==5)then[返回1]
else 返回0
end
count_sum()函数:
int i,count=0,sum=0;//定义变量
for i ←a to b;
do if(is(i))
then[count++;sum←sum+i;]
end
1.1.2实验代码截图
1.1.3造测试数据
输入数据 |
输出数据 |
说明 |
104 999 |
|
从104到999之间各位数字之和是5的数的个数有15个 |
1 999 |
|
从1到999之间各位数字之和是5的数的个数有21个 |
1.1.4PTA提交列表及说明
提交列表说明
* 1.运行超时:做题目是把number=number/10写成了n=number/10.
* 2.编译错误:这个是很低级的错误,我把number写成了numble。
1.2统计某类完全平方数
本题要求实现一个函数,判断任一给定整数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
", cnt);
return 0;
}
/* 你的代码将被嵌在这里 */
1.2.1数据处理
数据表达:定义了整形变量d,n,x,j,a[10]={0}
数据处理:
int d,n,x,j,a[10]={0};//定义变量
d←N;
n←sqrt(d);
if(n*n==d)
then[while(d!=0) x←d%10;a[x]++;d←d/10;do]
for j 1 to n;
flag←1;
sum←pow(2,i)-1;
for j 0 to 9;
if(a[j]>1)
then[返回1]
end
if(flag==1)
then[输出sum;count++;]
end
1.2.2实验代码截图
1.2.3造测试数据
输入数据 |
输出数据 |
说明 |
105 500 |
cnt = 6 |
有6个完全平方数 |
55 100 |
cnt = 1 |
有1个完全平方数 |
25 600 |
cnt = 7 |
有7个完全平方数 |
1.2.4PTA提交列表及说明
提交列表说明
1.编译错误:我直接用了变量N,错误提示是我没有定义这个变量。
2代码互评
同学代码截图
自己代码截图
我和同学1的代码就是在判断是否至少有两位数字相同这里不同,同学的代码在这里是直接当a[d]等于2的时候判断是,而我的是当a[j]>1的时候判断是,我觉得把a[d]等于2改成a[d]>=2可能会更好。但是同学2的代码对于我们现在没有学数组来说可能更好,想法很好,用了我们学习的循环的嵌套。
3.学习总结
3.1学习进度条
周/日期 |
这周所花时间 |
代码行 |
学到的知识点简介 |
此前比较迷茫的问题 |
第一周 |
1天 |
24行 |
学会了一点printf()语句,知道主函数 |
的用法 |
第二周 |
4天 |
23行 |
学会计算摄氏温度与华氏温度的转化 |
=两边打空格 |
第三周 |
2天 |
62行 |
学会一点scanf()语句,定义变量,if-else结构 |
很多地方不知道为什么要打空格 |
第四周 |
1天 |
145行 |
学会了for()语句 |
目前没有 |
第五周 |
1天 |
142行 |
对函数的定义和调用有初步的认识 |
在函数的定义中是否可以输入形参的值 |
第六周 |
2天 |
132行 |
加深对if-else分支结构的认识,字符型变量和常量的定义以及字符型输入输出函数 |
字符型数据的输出和输入不懂 |
第七周 |
1天 |
206行 |
学会switch语句,用switch语句处理多分支选择问题 |
在编译器上打代码时,编译器没有提示错误,但是答案错了。后来才知道case后面要打空格再打常数表达式 |
第八周 |
1天 |
125行 |
学习了while( )循环语句和do{ }while( )循环结构 |
相对于for()循环和while( )循环,do{ }while()还是运用的不太熟练 |
第九周 |
1天 |
198行 |
学习了for( )语句的嵌套以及break语句和continue语句 |
运用不是很熟练,还需要多练 |
第十周 |
1天 |
208行 |
复习了字符常数的定义,字符型函数的输出和输入以及循环结构 |
对于字符的输出和输入有待提高 |
第十一周 |
1天 |
226行 |
学习了变量的作用域、生存周期和存储类型并进一步的的认识函数,学习函数的定义、调用和申明。 |
对于变量的作用域、生存周期和存储类型还不太理解,做选择题还是比较费力 |
3.2累积代码行和博客字数
3.3学习内容总结和感悟
3.3.1学习内容总结
3.3.2学习体会
* 1.这周学习了各种类型函数的定义、调用和申明,以及变量的作用域、生存周期和存储类型。但是对于动态储存和静态储存还是不太了解。就像这次的选择题做起来还是比较费力。还是要多去看相关的资料。
* 2.这周的作业还是比较让人奔溃的,相对于上几次,感觉这次作业的难度提高了不少。
* 3.要多复习,不要让我们以前知道的知识忘记,不让以前就白费力了。