1.作业头
这个作业属于哪个课程 | 班级的链接 |
这个作业要求在哪里 | 作业要求链接 |
这个作业的目标 | 掌握自定义函数的各种用法 |
学号 | 20208945 |
1.PTA实验作业 | |
1.1 题目名1
PTA 6-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
", cnt);
return 0;
}
/* 你的代码将被嵌在这里 */
1.1.1数据处理
数据表达:让n=N,b=一个数字每位上的数,m=一个数开根号后的值,并且定义了一个int型的大小为10的数组p,同时该数组所有的元素均被初始化为0。
伪代码如下: int n=N;
int b;
int p[10]={0};
int m=sqrt(n);
数据处理:利用while循环将一个数的每位数字上的值求出来,并且相同的数值用数组p储存,然后用for镶套if语句判断,最后解决问题。
伪代码如下: if(m*m==n){
while(n!=0){
b=n%10;
p[b]++;
n/=10;
}
for(int i=0;i<=9;i++){
if(p[i]>1)
return 1;
}
}
1.1.2实验代码截图
1.1.3 造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
105 500 | cnt = 6 | 成功输出 |
138 354 | cnt=2 | 成功输出 |
1.1.4 PTA提交列表及说明
说明:1.答案错误:while语句判断条件弄错了,没有处理题目后面的要求。
2.答案正确:进行了改正。
1.2 题目2
PTA作业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.
", a);
if (is(b)) printf("%d is counted.
", b);
count_sum(a, b);
return 0;
}
/* 你的代码将被嵌在这里 */
1.2.1 数据处理
数据表达:int is(int number)中定义a为数的位数数值,s为各位数数值之和。
代码如下:int a,s=0;a=number%10;s=a+s;
数据处理:函数is判断number的各位数字之和是否等于5,是则返回1,否则返回0。函数count_sum利用函数is统计给定区间[a, b]内有多少个满足上述要求(即令is返回1)的整数,并计算这些整数的和。
代码如下:
int is(int number)
{
int a,s=0;
while(number!=0)
{
a=number%10;
number=number/10;
s=a+s;
}
if(s==5)
return 1;
else
return 0;
}
void count_sum(int a,int b)
{
int m=0,sum=0;
for(int i=a;i<=b;i++)
{
if(is(i)!=0)
{
m++;
sum=sum+i;
}
}
1.2.2 实验代码截图
1.2.3 造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
104 999 | 104 is counted. count = 15, sum = 3720 | 成功输出正确结果 |
399 480 | count = 2, sum = 811 | 成功输出正确结果 |
1.2.4 PTA提交列表及说明
说明:1.编译错误:定义了两个函数衔接有问题,int is(int number)中没有定义a,void count_sum(int a,int b)中调用int is(int number)错误。
2.答案正确:改正后正确。
2.代码互评
找2份同学代码,和自己代码比较,建议互评代码尽量找代码风格差异较大。
PTA作业6-1
同学代码截图
同学代码截图
自己代码截图
对比说明:同学的代码和我的代码都有共同之处都运用了for语句嵌套循环,都使用了数组计数的方法,虽然我做出来了,但我花费的时间非常多,我还是不能理解数组。
3.学习总结
3.1 学习进度条
周/日期 | 这周所花的时间 | 代码行 | 学到的知识点简介 | 目前比较迷惑的问题 |
---|---|---|---|---|
第八周10.19-10.25 | 8 | 5 | 如何打开编译器 | 我该怎么学习c语言 |
第九周10.26-11.1 | 10 | 54 | 学会如何提问 | c语言怎么才能学好 |
第十周11.2-11.7 | 48 | 138 | for语句,数据的类型 | 为什么作业这么麻烦 |
第十一周11.8-11.14 | 51 | 256 | for语句的应用,如何自己定义函数 | 怎样去理解题意,自己定义的函数如何符合题意去调用 |
第十二周11/15-11/21 | 49 | 528 | 学习了分支结构,switch语句,以及简单数组定义 | 如何正确的理解题目意思,怎样解读问题 |
第十三周11/22-11/28 | 50 | 656 | 学习了分支结构,switch语句,以及简单一维数组 | 怎样用所学的知识更简单的解决问题 |
第十四周11/29-12/5 | 56 | 689 | 学习了新的循环结构while语句 | 怎样用所学的知识更简单的解决问题 |
第十五周12/6-12/12 | 78 | 1026 | 学习了镶套循环break,continue | 为什么老师布置的作业这么难 |
第十五周12/13-12/19 | 80 | 1268 | 学习了函数的各种定义及其用法 | 为什么老师布置的作业这么难 |
3.2 累积代码行和博客字数
1.累积代码行:4973
2.博客字数:26405
3.3 学习内容总结和感悟
3.3.1 学习内容总结
3.3.2 学习体会
这一周的学习体会,这一周学习真的累,临近期末了,为什么作业这么难,考试这么难的话我真的不行了,平常作业还可以问问室友,查查资料,用时间慢慢把作业磨出来,可如果考试这样的话……唉,c语言学习全在于努力码代码呀,用时间去堆积才能得到提升,继续努力吧。