C语言I博客作业11

问题 回答
这个作业属于哪个课程 C语言程序设计II
这个作业要求在哪里 作业要求
我在这个课程的目标是 能够自主开发出一个软件,拥有用户并能够维护程序运行
这个作业在那个具体方面帮助我实现目标
参考文献 百度百科,CSDN技术社区

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

数据表达:

使用了变量a,b,flag,都定义为整型,其中flag为数组,并初始化都为0

数据处理:

Begin
给a赋值为需要判断的数开根号
判断开方数的平方是否等于需要判断的数
利用while语句判断是否整数含有相同数字
数组用于标记和返回数值
End

1.1.2实验代码贴图

1.1.3造测试数据

数据输入 数据输出 说明
0 99 cnt = 0 在0到99内无这样的整数
500 1000 cnt = 2 在500到1000内有两个这样的整数

1.1.4PTA提交列表及说明

说明:

对于数组的使用,在前期我对他的理解是根据余数判断是否出现重复,后来我发现自己的理解不太对,然后想了很久没想明白,再跟李清溪学长讨论后突然醒悟,我给数组初始化为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.\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数据处理

数据表达:

使用了digital,sum1,count,sum变量,都定义为整型

数据处理:

这道题需要写两个函数,is()函数用来判断各位数之和是否等于5,count_sum()函数用于统计和计算
Begin
int is(int number)
{
	使用do-while语句来判断整数各位数和,sum1用于接收结果
	如果sum1等于5,则返回1
	否则返回0
}
void count_sum(int a,int b)
{
	用for语句对于给定的范围进行循环判断
	用if语句判断is函数返回的值
	count累加整数个数
	sum累加整数和
}

1.2.2实验代码贴图

1.2.3造测试数据

数据输入 数据输出 说明
1000 1999 count = 15, sum = 17220 在1000到1999内有这样的整数15个,且和为17220
0 10000 count = 56, sum = 77770 给定最大范围得到结果

1.2.4PTA提交列表及说明

说明:

这题在老师布置作业之前在PTA固定题目集上做过,之前因为有一段时间没接触过自定义函数了,有点生疏。所以又看书重新复习了一下

代码互评

c1

c2

myself

  • 1.我的代码使用的do-while语句,其他两位同学使用的是while语句,并且他们while的判断条件与我不同,他们的是number大于0,而我的是number不等于0
  • 2.c1在while语句中使用两个表达式进行了各位数求和,而我使用了三个,这个是一个可以优化代码的地方

学习总结

3.1学习进度条

周 这周所花时间 代码行 学到的知识简介 目前比较迷惑的问题
第五周 8h 56行 常量,变量和数据类型 无
第六周 12h 89行 格式化输入函数scanf(),for循环 无
第七周 19h 286行 分支结构 无
第八周 15h 238行 函数的定义和调用 函数的定义和调用的基本用法
第九周 10h 173行 while语句,函数的定义和调用强化 被调函数返回值
第十周 20h 312行 逻辑运算符优先级,定义和访问数组 逻辑表达式的运算
第十一周 11h 189行 switch语句,ASCⅡ码的了解 进制转换
第十二周 9h 279行 continue语句,循环结构的嵌套,do-while语句,条件运算符 break语句与continue语句的区别
第十三周 9h 201行 break语句与continue语句的区别,循环结构嵌套的执行顺序 无
第十四周 10h 224行 穷举法的了解,局部变量和全局变量 关于各种新接触的数学知识
第十五周 11h 298行 变量生存周期和静态局部变量 静态局部变量

3.2累积代码行和博客字数

3.3学习内容总结和感悟

3.3.1学习内容总结

3.3.2学习体会

1.这周在做PTA题目的时候,让我明白了,如果有些知识点不经常去使用去练习,很容易淡忘,所以自己合理的复习自己的知识点。

2.我发现我在上课的时候,关于老师讲知识概念的时候,老爱开小差,这个很不好,这会导致自己要在课后花多余的时间去弄懂,所以自己要努力将这种毛病客服

posted @ 2019-12-04 23:55  blackman6  阅读(255)  评论(0)    收藏  举报