1 2 Fork me on GitHub 6

C语言I博客作业09

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\n", 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.\n", a);
    if (is(b)) printf("%d is counted.\n", 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语言学习全在于努力码代码呀,用时间去堆积才能得到提升,继续努力吧。

posted @ 2020-12-20 11:33  Drgg  阅读(138)  评论(9编辑  收藏  举报
1