C语言I博客作业11

一、本周教学内容&目标

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

二、本周作业头

这个作业属于那个课程|C语言程序设计II
---|:--😐:--😐---|
这个作业要求在哪里|https://edu.cnblogs.com/campus/zswxy/CST2019-4/homework/10129
我在这个课程的目标是|掌握各种函数的用法和编译
这个作业在那个具体方面帮助我实现目标|通过本次作业以及本周教学内容
参考文献 |《c语言程序设计》

三、本周作业

1.PTA实验作业

2.代码互评

3.学习总结

四、作业格式

1.PTA实验作业

请再此处列出自己的排名图片,如

1.1 题目名1

题目内容描述:

本题要求实现一个函数,判断任一给定整数N是否满足条件:它是完全平方数,又至少有两位数字相同,如144、676等。
函数接口定义:
int IsTheNumber ( const int N );
其中N是用户传入的参数。如果N满足条件,则该函数必须返回1,否则返回0。

1.1.1数据处理

介绍实现本题过程中,你的数据表达、数据处理是怎么做的。注意:请务必按照以下方式书写。

数据表达:输入int整型n=N;b,p[10]={0}表示初始值为零,m=sprt(n)表示完全平方数的表达
数据处理:输入变量n=N正整数;b,p[10]={0}表示初始值为零,m=sprt(n)表示完全平方数的表达
if(m*m==n)//判断是否满足条件
运用while(n)//n的函数
{
   b=n%10;
   p[b]++;
   n/=10;
}  //判断是否有俩个相同的数
for(int i=0;i<=9;i++)
    {
      if(p[i]>1)
      return 1;
    } //判断是否满足条件,能否进行运算
return 0;最后运行结束

1.1.2实验代码截图

1.1.3 造测试数据

输入数据|输出数据|说明|
---|:--😐:--😐:--😐---|
105 500||如图所示
110 600||如图所示
100 500||如图所示

1.1.4 PTA提交列表及说明

根据PTA提交列表,简要描述调试程序碰到的问题及解决办法。

编译错误:没有考虑的初始值的问题,导致错误
解决方法:重新考虑初始值都问题,使用m=[10]={0}来控制初始值的问题
编译错误:for循环当中的范围没有处理好
解决方法:在for循环当中从0开始到9结束,运用int整型来定义

1.2 题目2
本题要求实现两个函数:一个函数判断给定正整数的各位数字之和是否等于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;
}

/* 你的代码将被嵌在这里 */
1.2.1 数据处理
数据表达:运用int整型,运用s=0;表示正整数的个数,t=0;表示正整数的和,运用了while语句,for,if循环结构
数据处理:输入变量s,t,number
while(number!=0){  //判断是否满足条件
   t=number%10;
   number/=10;
   s+=t;
   }  //求给定的正整数的各位数字之和
   if(s==5)
   return 1; //各位数之和为5
   else
   return 0; //各位数之和不为5
}
void count_sum( int a, int b )
{
   int sum=0,i;//正整数的和
   int count=0;//求各位数字之和
   for(i=a;i<=b;i++){
   if(is(i)){
    count++;
    sum+=i;
    }  //在此范围的正整数符合条件的有哪些
} 
printf("count = %d, sum = %d\n",count,sum);
}
1.2.2 实验代码截图

1.2.3 造测试数据

输入数据|输出数据|说明|
---|:--😐:--😐:--😐---|
104 999|104 is counted count = 10,sum = 3720|说明这个数有15个,和为3720
5 60|5 is counted count = 6,sum = 165|说明这个数有5个,和为165|
156 896|15 is counted count = 10,sum = 3110|说明有10个,和为3110

1.2.4 PTA提交列表及说明


编译错误:没有考虑到判断在此范围内的各个数字的累加,正整数的和如何用一个if语句来判断
解决方法:重新阅读题目发现我应该运用is(i)函数了表达
编译错误:字母表达怕不记得,我就将字母改成了number来表示,字母打错了
解决方法:仔细观察,发现number被我写成了nunber,改过来就行了。

2.代码互评

同学代码截图|自己代码截图
---|:--😐:--😐---|
|
这个同学和我的代码是一样的思路,但是他的有一点就是他写上了每一个部分的想法后面,我的代码除了变量不同之外,其他都是一样,我之所以拿出这个和我一样的代码是因为他的优点展现在哪里,这才是我想法,把自己的想法写在后面,有利于其他人阅读,能够快速看出代码想表达的意思
同学代码截图:

自己代码截图:

这个代码运用的是do-while循环语句,我用的是while语句,和我的不一样,但是我们的思路都是一样的,都选择了先判断正整数的各个数字,在判断各个数字的和以及正整数的之和。

3.学习总结

3.1 学习进度条

周/日期 这周所花的时间 代码行 学到的知识点简介 目前比较迷惑的问题
等一周9.19-9.27 7天 28行 学会了如何开始进行编辑和简单的程序 为什么在编辑时要这么严厉,错一个符号都会是编译错误
第二周9.25-910.4 5天 20行 学会了如何用已学知识举一反三 为什么有时候用一个字母代表不行,有时候又可以
第三周10.8-10.12 4天 136行 难度加大的编程 不知道如何简写编程
第四周10.15-10.18 3天 120 指定次数的循环程序设计 不知道如何将分子和分母都是变量的情况下编写程序
第五周10.23-10.26 4天 89 学习函数的运用和表达 不知道运用那种流程正确表达函数运用较为正确
第六周10.28-11.2 3天 130 学习分支结构多次if-else循环 不知道在哪里打上中括号同时满足条件
第七周11.5-11.8 2天 140 学习switch语句的运用 不知道如何表达switch语句的表达式,还不是很熟练
第八周11.12-11.15 2天 130 学习while和do-while的运用 条件在while语句中不知道如何表达才是正确的
第九周11.19-11.22 2天 120 学习了嵌套循环的运用
第十周11.26-11.28 2天 135 复习了循环语句以及如何读题目 嵌套循环还不是很会用
第十一周12.4-12.6 1天 125 学习了函数类型,定义,说明等等 不知道如何将所学内容串联起来
3.2 累积代码行和博客字数

3.3 学习内容总结和感悟
3.3.1 学习内容总结

3.3.2 学习体会

1.这周的情况不是很好,可能是因为新知识点还没有完全掌握,这周PTA做的也是非常的艰难,很多东西我都无法串联起来,因此这次作业我有观看其他人的代码才能做出来。
2.新知识点还是要多多运用才行,否则我真不知道如何办才好,还得要继续努力才行。
3.总的来说,学习c语言也要结束了,突然感觉时间过的很快,我都来不及准备,就要结束了。希望我能够越来越好。

posted on 2019-12-06 17:46  夏日之秋  阅读(326)  评论(5编辑  收藏  举报