C语言I博客作业11

一、本周教学内容&目标

第5章 函数 要求学生掌握各种类型函数的定义、调用和申明,熟悉变量的作用域、生存周期和存储类型。

二、本周作业头

题目 答案
这个作业属于那个课程 C语言程序设计II
这个作业要求在哪里 http://edu.cnblogs.com/campus/zswxy/CST2019-2/homework/10131
我在这个课程的目标是 能够熟练c语言,能够使用开发软件
这个作业在那个具体方面帮助我实现目标 每次作业的错误都能是我学到很多新的知识盲点
参考文献 百度,博客

三、本周作业

  • 1.PTA实验作业
  • 2.代码互评
  • 3.学习总结

四、作业格式

1.PTA实验作业(20分/题)

从PTA题目集中选出2个你最满意的题目完成以下内容,选择题目难度越大,分值越高,每题20分(每项5分),内容要求如下

统计各位数字之和是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.1.1数据处理

数据分析:

is:
用int定义a,b,number以及sum,number是实参,a用来接收number每个位上面的数,sum用来求和。

count_sum:
用int 定义了a,b,count,sum,其中a,b为实参,count用作计数器,sum用来求和。

伪代码:

 int is( int number )  定义统计各位数字之和是5的数的函数。
{
    int a,b,sum=0;
    while(number) {        统计各位数字之和。
        a=number%10;      取每个位上面的数
        number=number/10;      去掉最后一位
        sum+=a;         求和。
    }
    if(sum==5) 判断结果是否为5并提供输出接口
       return 1;
       else return 0;
}
void count_sum( int a, int b ) 定义函数。
{
    int count=0,sum=0;
    for(; a<=b; a++) {   判断一定范围内的数是否符合条件
        if(is(a)) {
            count++;   计数器,统计符合条件数的个数。
            sum+=a;    求和。
        }
    }
    printf("count = %d, sum = %d",count,sum);  输出结果。
}

1.1.2实验代码截图

1.1.3 造测试数据

输入数据 输出数据 说明
104 999 104 is counted.
count = 15, sum = 3720
题目输入
23 200 23 is counted.count=9,sum=756 随机数

1.1.4 PTA提交列表及说明:

  • 格式错误:等号没有空格。
    改正方法:在等号两边添加空格。

统计某类完全平方数

题目内容描述:
本题要求实现一个函数,判断任一给定整数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.2.1 数据处理

数据处理:

因为const定义N所以N的值不能被更改,所以我用了int定义n来接受N的值,用一个int的数组来统计每个数位上数字的个数,用一个整型的b来接收余数,用整型定义的m用来判断n是否是完全平方数,利用m*m==n,是因为m是整型,所以当√n不是整数时,该判断式就不会成立。用for循环统计每个数位数字的个数,再用if判断是否符合条件。

伪代码:

int IsTheNumber ( const int N )定义统计某类完全平方数的函数
{
  int n=N,b,p[10]={0},m=sqrt(n);
  if(m*m==n){判断N是否是完全平方数
    while(n){统计每个数字的个数
      b=n%10;取每个位上的数
      p[b]++;计数器
      n/=10;
    }
    for(int i=0;i<=9;i++){判断是否有重复数字。
      if(p[i]>1)如果有重复数字,返回1。
        return 1;
    }
  }
  return 0;
}

1.2.2 实验代码截图

1.2.3 造测试数据

输入数据 输出数据 说明
105 500 cnt = 6 题目数据
300 1000 cut=5 随机数

1.2.4 PTA提交列表及说明

  • 编译错误: 部分语句后面没有加分号。
    改正方法:在语句末尾添加分号。

2.代码互评

找2份同学代码,和自己代码比较,建议互评代码尽量找代码风格差异较大。

同学1 同学2 我的代码

区别:
同学1用了一个长度为100的数组,然后把每个位的数都放到数组里头,然后再判断是否有数字相同。都是用数组来判断有没有重复数字,2同学我和我代码有一点相似,就是用数组来统计每个数字的个数,然后看有没有1个以上的数字。我和同学2的思路相同,1同学的方法我觉得会有一点麻烦,从内存占用来看,我觉得1同学的方法还需要改进,但是这种思路非常的好。

3.学习总结(15分)

3.1 学习进度条(5分)

周 /日期 这周所花的时间 代码行 学到的知识点简介 目前比较迷惑的问题
第一周 3小时 60 学会输出字符
第二周 10小时 186 学到变量名称、运算、把变量的结果输出
第三周 7.5小时 245 学会if条件判断
第四周 5小时 120 学会使用for循环
第五周 6小时 80 学会定义函数,do while 等循环 一些复杂的函数看到不知道怎么定义,不了解一些新定义,比如const
第六周 7小时 140 数组的定义,break的用法 对于一些题目不知道到底用什么方法去解决
第七周 8.5小时 254 switch语句不加break;的用法。
第八周 10小时 360 字符串的使用 不会用字符串解决实际问题
第九周 8小时 400 利用循环嵌套来解决问题 有很多问题不知道如何下手,思路不是很清晰。
第十周 12小时 400 复杂的循环嵌套和字符的使用。 不会写伪代码
第十一周 8小时 325 掌握各种类型函数的定义、调用和申明,熟悉变量的作用域、生存周期和存储类型。 对于用double定义时,不太好理解负0的情况,也不知道怎么去处理

3.2 累积代码行和博客字数(5分)

时间 博客字数 代码行数
第一周 183 60
第二周 1774 186
第三周 2149 245
第四周 1585 120
第五周 1645 80
第六周 2139 140
第七周 1979 254
第八周 2010 360
第九周 1856 400
第十周 2014 400
第十一周 2154 325

3.3 学习内容总结和感悟(5分)

3.3.1 学习内容总结

请用思维导图的形式将到目前为止所学的内容进行整理。

3.3.2 学习体会

这一周忙着恋爱,再加上作业难度大,而且这个星期的事比较多,所以作业做得不是很好。这个星期还有有很多地方没有理解的地方,比如负零还不是很了解。期末考试逼近,我也要抓紧复习,我计划这学期把C语言学完。从现在开始我也要学会挑战自己的极限,有时候感觉自己很累的时候,其实还能坚持。在这个学校可能学习氛围不是很好,我们其实可以和别人不一样。我们的人生可以是一个不平凡的人生。我们每天都在抱怨世界的不公平,却永远不知道背地里别人是多么努力。所以我决定以后严格要求自己,每天坚持比别人多花10%去学习。每周没课常去图书馆,因为为了追一个比我优秀女生,我必须和她现在同一个高度。当我听说了她在学校的事,我才知道原来自己做的事在她面前根本不算多,我们有时候只在乎今天游戏有什么活动、哪个电视剧更好看,但是别人还是在努力的学习。要想拥有一个不平凡的人生,我建议大家从此刻就要开始努力。而不是注意身边的人在干什么。我现在才知道原来自己连一个女生都不如。我们再做任何的事情都不要抱怨,因为现实就是这么残酷,你必须适应它。而且总会有比你更优秀的人、比你更努力的人。
忽然才明白的一个道理,大学如果什么都不做,那就真的荒废了自己。本来我们就在一个三本院校,如果我们不努力,我们拿什么跟其他人比,开学前一段时间我感觉我很累,但是逐渐我感觉每天渐渐的不是那么累。这几天我一直在思考,之前的我真的很累吗?现在自己不感觉那么累了是不是自己懈怠了。仔细一想,还真是那么回事。当发现熬夜写代码变成熬夜打游戏的时候,放上课我倒在一头睡觉时,我才知道,我真的懈怠了。我高中同学跟我说她每天都要一两点才睡,而且晚上随时可能接到通知,每天都有做不完的工作。我问她那你怎么不把那个职位退了。她说了一句令我深思的话:“我不像拥有一个平庸的生活”,作为211大学的大学生都这么努力,为什么我们却还是这样。虽然有很多人都是懒懒散散,但是为什么我们不过做特殊的那一个。社会很残酷,你不努力就会被淘汰。 我真的很希望大家能够有一个这样的氛围。
# **五、评价标准** C语言作业评价标准 本次作业特别注意: + **1.提交列表没内容,或者太简单,每题得分0分。注意选择提交列表长的题目介绍。** + **2.代码格式不规范,0分。** + **3.代码互评,内容简单,0分。** + **4.学习内容总结无思维导图,0分。** + **5.完成挑战题的同学,加20分。**
原文地址:https://www.cnblogs.com/szy5201314/p/11994621.html