C语言I博客作业11

问题 答案
这个作业属于那个课程 C语言程序设计IIIII
这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/CST2019-2/homework/10131
我在这个课程的目标是 熟练掌握各大语句,运算符,函数,尝试用简单的代码解决复杂的问题
这个作业在那个具体方面帮助我实现目标 掌握各种类型函数的定义、调用和申明,熟悉变量的作用域、生存周期和存储类型
参考文献 《C语言程序设计》

一、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;
}

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

1.1.1 数据处理

数据表达:定义了整型变量n。n指输入的整数。sqrt 函数返回的值是double型,强制类型转换为int型。定义一个有10个整型元素的数组num,并对第一个元素赋初值0。

伪代码

1.1.2实验代码截图

1.1.3 造测试数据

输入数据 输出数据 说明
10 90 cnt=0 不存在两位数字相同的完全平方数
50 130 cnt=2 满足条件的整数较少
105 500 cnt = 6 题目示例
90 950 cnt=9 满足条件的整数较多

1.1.4 PTA提交列表及说明

  • Q1:部分正确说明大体思路是对的,可能是某种需要考虑的情况被漏掉或有部分不正确。
  • A1:当输入的数不是完全平方数需要返回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;
}

1.2.1数据处理

数据表达:在定义函数is时,定义了两个整型变量sum,a。sum表示number各位数字之和,a表示区间内的最小值。在定义函数count_sum时,定义了四个整型变量b,c,sum,count。b和c分别表示区间的最大值和最小值,sum表示满足条件的正整数之和,count表示满足条件的正整数的个数。

伪代码

1.2.2 实验代码截图

1.2.3 造测试数据

输入数据 输出数据 说明
5 30 5 is counted.
count = 3, sum = 42
区间较小
104 999 104 is counted.
count = 15, sum = 3720
题目示例
233 2333 count = 31, sum = 40574 区间较大

1.2.4 PTA提交列表及说明

  • Q1:格式错误可能是输入或输出时的格式不符合题目要求。
  • A1:题目要求输出两个数时=两边都要有一个空格,打上空格之后就正确了。

二、代码互评

2.1.1统计某类完全平方数

2.1.2代码截图(左边和中间的分别为第一位同学和第二位同学的代码,右边的是自己代码)

  • 第一位同学比我多定义了一个变量b。在判断输入的n是否为完全平方数时,她用整型变量b来存sqrt(n),然后运用if语句判断b^2是否与n相等。我是直接将sqrt 函数返回的值是double型,强制类型转换为int型。
  • 第一位同学运用if语句进行判断,当n为完全平方数时再嵌套其他语句判断是否n至少有两位数字相同。我是运用if语句进行判断,如果n不是完全平方数直接返回0.
  • 第二位同学定义了一个有100个整型元素的数组a,用来存放i的余数。我定义了一个有10个整型元素的数组num。

三、学习总结

3.1 学习进度条

这周所花的时间 代码行 学到的知识点简介 目前比较迷惑的问题
第一周 6小时 29行 对C语言、markdown语法,编程有了初步的认识 对编程一窍不通,只会照着书上打
第二周 8小时 19行 学会如何提问,安装MinGW-w64并用它编译C程序 markdown语法掌握不熟练
第三周 10小时 96行 关系运算、if-else语句、格式化输入语句scanf(),以及常用的数学库函数 对编程中各大语句的运用不熟悉
第四周 13小时 93行 for循环语句实现指定次数的循环程序设计 运用for语句时经常犯很多错误
第五周 10小时 161行 用C语言编写程序 对编写函数和调用函数还有很多不熟悉
第六周 12小时 168行 多分支结构、字符型数据类型和逻辑运算符 对各运算符的优先级和结合性,多分支结构不熟悉
第七周 10小时 185行 熟悉多分支结构switch语句的使用 面对比较复杂的题时难以解决
第八周 8小时 159行 使用while和do-while结构解决问题 不知道如何写伪代码
第九周 8小时 158行 熟悉break、continue的使用,熟悉使用循环的嵌套解决问题 对复杂的嵌套循环还是有些难理解
第十周 11小时 140行 根据实际情况,选择合适的算法、合理的循环结构,熟练的编写程序 逻辑思维能力不够,做题太吃力
第十一周 10小时 194行 掌握各种类型函数的定义、调用和申明,熟悉变量的作用域、生存周期和存储类型 不太理解函数的类型区分,定义等

3.2 累积代码行和博客字数

3.3 学习内容总结和感悟

3.3.1 学习内容总结

3.3.2 学习体会

  • 函数作为能够完成特定任务的独立程序代码单元,毫无疑问是编写代码时非常便利的工具。不仅可以省去重复的代码,还提高了代码的可读性。但它学起来也是非常头疼的。首先是函数的分类,有无参数,有无返回值,其次是如何定义函数,如何调用函数和如何声明函数,还有变量的作用域和存储方式。好像都有点一知半解的样子。
posted @ 2019-12-06 21:40  沈星楼  阅读(286)  评论(0编辑  收藏  举报