C语言I博客作业11

这个作业属于那个课程
这个作业要求在哪里
我在这个课程的目标是
这个作业在那个具体方面帮助我实现目标
参考文献

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
", cnt);

    return 0;
}
/* 你的代码将被嵌在这里 */

输入样例:

105 500

输出样例:

cnt = 6

1.1.1数据处理

数据表达

主函数:
定义了整型变量n1,n2,i,cnt;其中n1,n2位输入的取值范围,i用于控制循环,cnt用于记录满足条件的数有多少。

自定义函数:
定义整型变量number, n, a ,定义数组num[9],number用于判断传入的数是不是完全平方数,n用于while循环算出完全平方数的各位数是多少,a用于计算完全平方数有几位,数组用于记录完全平方数的各位数。

数据处理

主函数

	定义了整型变量n1,n2,i,cnt;其中n1,n2位输入的取值范围,i用于控制循环,cnt用于记录满足条件的数有多少。

	输入n1,n2
	cnt = 0;
	for (i = n1; i <= n2; i++) 
		if 调用函数IsTheNumber(i)  then
			cnt++;
	end for
	输出cnt


自定义函数IsTheNumber

定义整型变量number, n, a ,定义数组num[9],number用于判断传入的数是不是完全平方数,n用于while循环算出完全平方数的各位数是多少,a用于计算完全平方数有几位,数组用于记录完全平方数的各位数。N为给入的参数
	把N赋值给n
	number = 根号N
	if number * number == N  then
	{
		while (n)
		{
			num[a] = n除以10的余数
			n自除10
			a++
		}
		for (int i = 0; i < a; i++)
		{
			for (int j = i + 1; j < a; j++)
			{
				if num[i] == num[j]  then
				{
					返回 1;
				}
			}
		}
	}
	返回 0;

1.1.2实验代码截图

1.1.3 造测试数据

输入数据 输出数据 说明
105 500 cnt = 6 105~400内有6个类完全平方数
1 100 cnt = 1 1~100内有1个类完全平方数
100 500 cnt = 7 100~500内有7个类完全平方数

1.1.4 PTA提交列表及说明

提交列表说明:
部分正确:少了个返回值,没有加return 0,加上后就对了。

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.
", a);
    if (is(b)) printf("%d is counted.
", b);
    count_sum(a, b);

    return 0;
}

/* 你的代码将被嵌在这里 */

输入样例:

104 999

输出样例:

104 is counted.
count = 15, sum = 3720

1.2.1数据处理

数据表达

主函数:
定义整型变量a,b为输入的范围

自定义函数is:
定义整型变量n,sum,n用于while循环计算出给如参数number的各位数之和为sum。

自定义函数count_sum:
定义整型变量count,sum,count为满足条件的整数个数, sum为这些整数的和。

数据处理

主函数
定义整型变量a,b为输入的范围


	输入a,b
	if 自定义函数is返回来的值不为0 then 输出a is counted
                if 自定义函数is返回来的值不为0 then 输出b is counted
	自定义函数 count_sum(a, b);


自定义函数is
定义整型变量n,sum,n用于while循环计算出给如参数number的各位数之和为sum。

	把number赋值给n
	while (n)
	{
		sum等于自身加上 n除以10的余数
		n自除10
	}
	if sum=5 then 返回 1
	
	返回 0

自定义函数count_sum
定义整型变量count,sum,count为满足条件的整数个数, sum为这些整数的和。

	for (int i = a; i <= b; i++)
	{
		if 自定义函数is返回值为1 then
		{
			count++;
			sum等于自身加i
		}
	}
	输出count,sum

1.2.2实验代码截图

1.2.3 造测试数据

输入数据 输出数据 说明
104 999 104 is counted.
count = 15, sum = 3720
104~999内有15个各位数字之和是5的数,且他们的和为3720
1 50 50 is counted.
count = 6, sum = 165
1~50内有6个各位数字之和是5的数,且他们的和为165
997 1998 count = 15, sum = 17220 997~1998内有15个各位数字之和是5的数,且他们的和为17220

1.2.4 PTA提交列表及说明

提交列表说明:
部分正确:函数count_sum计算范围内各位数之和是5的数的和的条件写错了,最后改了if的条件。

2.代码互评

同学代码截图

自己代码截图

1.他的代码明显写的要比我的巧妙好多,我是把各位数都存下来,他是直接用一个数字,计算相同的数出现了几次,如果出现2次就跳出。
2.大体思路都差不多,开根号,然后平方,看是不是完全平方数。

同学代码截图

自己代码截图

1.我跟他的is函数不一样,count_sum函数是一样的。
2.is函数我用的时while,他用的是do-while,我是用一个变量来存储计算的各位数,他是中间多了个中间变量。

3.学习总结

3.1 学习进度条

周/日期 这周所花的时间 代码行 学到的知识点简介 目前比较迷惑的问题
第四周 10 50 学会了简单输出
第五周 20 100 学会了输入
第六周 10 150 学会了if-else
第七周 5 80 学会了for
第八周 30 300 学会了switch语句r 对char的用法还不怎么会
第九周 20 335 简单的了解了函数的使用 自定义函数还不太会
第十周 20 343 学习了指针 还不知道指针具体的用处
第十一周 25 503 学习指针 感觉指针好难啊
第十二周 30 489 学习了结构体 指针还是不会
第十三周 30 265 学习了预处理 预处理的套用比较多,多层套用不会
第十四周 35 639 学习了python的基础 看着还是看不懂
第十五周 35 259 学习linux 命令记不住

3.2 累积代码行和博客字数

时间 博客字数 代码行数
第四周 633 50
第五周 1565 150
第六周 1565 300
第七周 2227 380
第八周 3027 680
第九周 4111 1015
第十周 5322 1358
第十一周 6817 1861
第十二周 8617 2350
第十三周 10562 2615
第十四周 12387 3254
第十五周 14637 3513

3.3 学习内容总结和感悟

3.3.1 学习内容总结

3.3.2 学习体会

1.之前的的代码很久没去看,突然打开看下,发现不知道写的是什么意思,这让我知道,在代码里写注释很重要,我需要养成好习惯,在每段代码比较重要的地方加个注释,这是个好习惯。以后工作写代码都是一起合作写,要是写的代码别人看不懂那就会有很多不必要的麻烦,别人都喜欢简单易懂且功能强大的代码。
2.这次pta作业比较难,一直没写出来,这写题目还只要if和for就行,都没涉及算法,但是就是写不出,我还得加强自身的学习,不能被题目给难到了。最近一直在学新的东西,没有去刷题,在写题目时找不到那种状态,我需要在学习新东西的时候也不放下之前学的东西。

原文地址:https://www.cnblogs.com/laotun/p/11988539.html