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<ab≤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  阅读(237)  评论(0编辑  收藏  举报