C语言作业11

这个作业属于那个课程|C语言程序设计II
--|:--😐--:
这个作业要求在哪里|https://edu.cnblogs.com/campus/zswxy/SE2019-4/homework/9832
我在这个课程的目标是|<开发小游戏>
这个作业在那个具体方面帮助我实现目标|<学会switch语句,还有定义新函数>
参考文献|<c语言第二版,【美】布莱恩著>

一.PTA实验作业

1.1题目名: 6-1 统计某类完全平方数 (20分)

本题要求实现一个函数,判断任一给定整数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【】,
定义变量值i,k,m,temp,
搬出了while进行循环体,
用到if语句进行判断,
还用到了sqrt进行二分之一的求解。
数据处理:
对a数组进行一百的选,
对b数组进行十的选,最后都赋值为零,
用i进行累加后,用数组进行判断余数是否为零。

伪代码

   定义变量n1来,n2来存放找完全平方数的范围,i来放找完全平方数的范围内的每一个整数,cnt来放范围内完全平方数的个数 
   输入范围
   对cnt初始化为0 
   for n1 to n2
   if 自定义函数IsTheNumber(i)返回的值为1 then  cnt累加
   end for 
   输出cnt

   定义函数int IsTheNumber ( const 定义变量N来放找完全平方数的范围内的每一个整数 )
     定义变量temp来存放N的二分之一次方,用数组a,数组b存放一百,十的数
     将N赋值给temp

     while循环条件为temp的十分之一是否大于零
     k累加一
     temp继续求十分之一
     if判断N二次方根
     i累加
     将N除以m后求的余数赋值给数组a
     m进行累成10的计算
     判断b[a[i]]等不等于一,满足返回函数值为一 
     否则b[a[i]]==1
     返回主函数零

1.1.2实验代码截图

1.1.3造测试数据

输入数据 输入数据 说明
787 989 存在一个完全平方数
557 669 存在零个完全平方数
333 888 存在四个完全平方数

1.1.4PTA提交列表及说明

编译错误:该空格的没空格,编写过程中没注意。

1.2题目名: 6-2 统计各位数字之和是5的数 (20分)

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

数据表达:定义新函数
定义变量a,b
如果是a输出a
如果是b输出b
对于新函数定义了x,y
用到了do-while循环体
x用来存放number的余数
count用来计数
数据处理:伪代码
主函数:
       定义整形变量a,b来放输入的范围
       输入范围
       if 自定义函数is(a)返回来的值不为0 then 输出b is counted
 自定义函数is(定义整形变量numbe来接收主函数传入的值)
       x来存放number的每一个数字,y来存放每一个数字的和
       将number赋值给n
       while(n不等于0)
           将number除以10的余数赋值给x
           将number除以10后赋值给number
           将y加上x后赋值给y
       end for
       if y等于5 then 返回1
       else 返回0
自定义函数void count_sum(定义整形变量a,b来接收主函数传入的值)
       定义整形变量i来存放[a,b]内的每一个整数,sum来放要求输出的所有符合条件的数的和值,cnt来放符合条件的数的个数
       for a to b
           if is(i)返回来的值为1 then cnt累加;将sum加i的值赋值给sum
       end for
       输出cnt和sum

1.2.2实验代码截图

1.2.3造测试数据

输入数据 输入数据 说明
345 567 a,b都不是
123 999 a,b都不是
104 777 a是,b不是

1.2.4 PTA提交列表及说明

1.编译错误:没有输入正确的代码,没有了解到此题的意思,导致乱投医。

二.代码互评

2.1

同学代码截图

自己代码截图

代码的比较

1.她没用到数组的方法,只是使用了if镶嵌的方法,她还用到powhan函数。
2.相比我用了没学过的数组而言她的要简单,清晰,易懂,定义i累加量的时候也明确给出了累加此数,是先想好了才会有此结果的,我需要好好学习她。

2.2

同学代码截图

自己代码截图

代码的比较

1.她只用了一个数组,用到while循环体直接进行计算。
2.其余方法基本相同,都应该向没有数组的同学也学习学习,数组简单是简单但是属于不易懂的一个方法。

三.学习总结

3.1学习进条度

周/日 这周所花时间 代码行 学到的知识简介 比较迷惑的问题
第四周 10 60 在屏幕上显示Hello World!
第五周 15 70 求华氏温度对应的摄氏温度
第六周 20 100 如何用 MinGW-w64 来编译C程序
第七周 25 130 运用if语句完成各种数学程序 不知道if用于何时
第八周 30 150 学会打累加 有时候打到的知识简介
第九周 35 180 学习了定义新函数 对于新函数的定义不是很理解
第十周 15 256 学了if-else语句 不会灵活应用if-else语句
第十一周 8 342 学了switch语句 不会运用switch语句
第十二周 7 435 学会了do-while语句 对于do-while语句的灵活运用
第十三周 5 324 学会了怎样使用穿插的循坏语句 对于题目的信息分解不行
第十四周 6 333 巩固了循环语句 对于难度大的循环语句还是不能快速掌握
第十五周 9 454 学习了全局变量,局部变量,怎么定义新函数 对数组完全不了解,对指针完全不了解,对于函数题不太熟练

3.2学习内容总结和感悟

3.2.1内容总结

3.2.2感悟

自我感觉越来越熟悉代码的结构与基础了,能够自己打出难度不是很大的代码了。
这让我信心大增,不在是个什么都不会的人了,所以我对以前七八九个小时的敲代码取得如今的一点点小进步而感到值得。
作业虽多但是真的很快乐。
作业量越来越多且难度越来越大,但现在效率有明显的提升。
我希望学习到更多的语句,以及很好玩的代码,我很喜欢打代码的感觉。
我相信自己以后会成功的开发出小游戏程序。
再次对自己说声加油。


posted @ 2019-12-06 10:23  最损之友  阅读(379)  评论(1编辑  收藏  举报