C语言I博客作业11

||
--|:--:
这个作业属于那个课程|C语言程序设计II
这个作业要求在哪里|作业
我在这个课程的目标是|了解并在一定程度上掌握新的知识
这个作业在那个具体方面帮助我实现目标|我学习到了函数有关的知识
参考文献|C语言程序设计(第3版),百度

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

    return 0;
}

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

输入样例:

105 500

输出样例:

cnt = 6

1.1.1 数据处理

数据表达:

主函数:定义了n1, n2, i, cnt;n1, n2是用户输入的,i是确定循环所用;n1, n2, i, cnt都是整形变量。
自定义函数:定义了i, b, c, e, flag,a[10];i是确定循环所用,b是某数开平方的值,c是数的某个位数,e是判断是否有数字相同,flag是根据题目意思直接赋值,a[10]是存放数的位数;i, b, c, e, flag,a[10]都是整形变量

数据处理:

主函数:
    定义n1, n2, i, cnt;n1和n2确定输入范围,i用于for循环,cnt用于存放类完全平方数的数量
    输入n1,n2
    for ( 判断循环的次数并将n1,n2中的每个值赋给i ) {
        if ( 判断i是否类完全平方数 )
            cnt++;
    }
    输出cnt的数量

    return 0;
}
自定义函数:
        定义i, b, c, e, flag,其中i用于判断循环次数,b是为了判断该数是否为某个整数的平方,c是为了判断数中是否至少有两位数字相同,e是判断是否有数字相同,flag是为了方便跳出循环和返回数字
	c = N;
	b = (int)sqrt(N);
	if N是某位整数的平方
	{
		定义十个数组,并赋第一个数组为0,
		while 判断循环次数
		{
			将c的余数赋给e
			for (i = 0; i < 10; i++) 
			{
				if 数字相等 then a[i]++;
				if 至少有两个数字相等{flag = 1;break;}
			}

			if flag是否为1  break;
			逐渐消减数字的位数
		}
	}

	返回flag的值
}

1.1.2实验代码截图

1.1.3 造测试数据

输入数据 输出数据 说明
200 300 cnt = 1 200 300之间有1个类完全平方数
200 400 cnt = 2 200 400之间有2个类完全平方数
200 500 cnt = 4 200 500之间有4个类完全平方数

1.1.4 PTA提交列表及说明

我在vs上运行无误后复制粘贴

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.\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 数据处理

数据表达:

主函数:定义了变量a, b;a,b分别代表了数的范围;a, b都是整形变量

自定义函数:定义了s,t,a,b,count,sum;s是各位数字之和,t是用于存放数的位数,a,b用于接收实数的传递,count是满足条件的整数个数,sum是这些整数的和;s,t,count,sum是整形变量,a,b是参数

数据处理:

主函数:
    定义输入范围
    输入范围
    if (判断给定正整数的各位数字之和是否等于5) 输出数字
    if (判断给定正整数的各位数字之和是否等于5) 输出数字
    统计给定区间内有多少个满足要求的整数

    return 0;
}     
自定义函数:
	定义变量s,t,s用于存放数的各位数字之和,t用于存放数的位数
	while 位数不为0 {
		逐渐把数的位数给t
		累加数的位数
	}
	if 数的位数是5
		返回1
	else
		返回0
}
定义了a,b,count,sum,其中a,b用于接收实数的传递,count是满足条件的整数个数,sum是这些整数的和
	for 确定循环次数 {
		if (判断给定正整数的各位数字之和是否等于5) {
			count累加
                        sum累加
		}
	}
	输出count, sum
}

1.2.2实验代码截图

1.2.3 造测试数据

输入数据 输出数据 说明
134 834 count = 11, sum = 3250 134~834之间有11个满足条件的整数个数,这些整数的和为3250
34 734 count = 17, sum = 3811 34~734之间有17个满足条件的整数个数,这些整数的和为3811
82 882 count = 15, sum = 3720 82~882之间有15个满足条件的整数个数,这些整数的和为3720

1.2.4 PTA提交列表及说明


格式错误:我在输出的时候忘记在sum前面加个空格;改正:在sum前面加个空格然后运行正确。

2.代码互评

同学代码截图:

同学代码截图:

自己代码截图:

1.第一个同学:该同学的代码中n是两个根号下N相乘,这样稍微简化了一下代码,其他的代码行大致相同;
2.第二位同学:该同学的代码和我的代码思路大致相同,但他的代码比较简单,比如定义数组那部分,他没有赋值,直接在while循环里面用,这样比较方便;
3.总体来说:我们能用最简单的代码解决问题是最好的,自己先把自己的代码写出来,然后再回顾一下思路,把该改进的地方进行改进。

3.学习总结

3.1 学习进度条

周/日期 这周所花的时间 代码行 学到的知识点简介 目前比较迷惑的问题
第四周 4h 9 makedown语法 对于C语言知识不太了解
第五周 11h 121 输入和输出 一些基本的格式
第六周 16h 187 ig-else语句 对于一些格式不是不懂
第七周 17h 342 markdown语法和if-else语句 对于变量还是不能很好的掌握
第八周 17h 121 定义两个变量,对for循环有更进一步的了解 对于基本知识还是不够扎实
第九周 20h 178 while循环,定义和调用函数 对于定义和调用函数还是不怎么了解
第十周 18h 143 for循环和if-else语句之间嵌套 读完题目后大脑里面没有相应的代码
第十一周 17h 193 switch可以处理多分支问题 对于编程题不能很快的写出代码
第十二周 15h 156 新学了do-while循环,了解了for,while,do-while循环之间的区别,并对在相应环境用最合适的循环有了初步认识 题目做的比较慢,一些基本知识还是不够扎实
第十三周 16h 183 学到了嵌套循环和break,continue语句 不能很好的把所学的东西交叉运用
第十四周 19h 213 对以前所学的东西进行了一定程度上的复习 对以前所学的东西不能灵活应用
第十五周 18h 203 全局变量,局部变量 对新学的函数部分不太熟悉

3.2 累积代码行和博客字数

时间 博客字数 代码行数
第四周 323 76
第五周 783 154
第六周 1542 204
第七周 2131 293
第八周 2831 387
第九周 4017 429
第十周 5066 463
第十一周 6145 573
第十二周 7260 683
第十三周 8434 813
第十四周 9603 932
第十五周 10932 1093

3.3 学习内容总结和感悟

3.3.1 学习内容总结

3.3.2 学习体会

在这次作业中我的积极性不是很高,可能是不太熟悉题型的原因,也有可能是我在前面的放假时间里多学了PR,好不任意学会了一点的PR,然后又接着写PTA,可能是不太适应,也有可能是最近的一些作业比较多,然后不太适应,我觉得这可能又是一个机会,暗示着我要把这些东西融合起来学习,以后的学习可能都是这样,我得适应这样的环境,我得改进自己的一些内部因素。努力吧~追梦少年。

posted @ 2019-12-06 19:24  -追梦少年-  阅读(189)  评论(0编辑  收藏  举报