• C语言I博客作业11


    问题 答案
    这个作业属于那个课程 C语言程序设计II
    这个作业要求在哪里 C语言I博客作业11
    我在这个课程的目标是 熟练掌握C语言
    这个作业在哪个具体方面帮助我实现目标 进一步了解了自定义函数
    参考文献 Markdown基本语法

    一.PTA实验作业

    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
    ", cnt);
    
         return 0;
     }
    
     /* 你的代码将被嵌在这里 */
    
    输入样例:
     105 500
    
    输出样例:
     cnt = 6
    

    (1)数据处理

     数据表达:
         用了整形变量result,sum=0,i,m,flag=0,N
         N来放找完全平方数的范围内的每一个整数 
         result来存放N的二分之一次方
         sum用来判断是否至少有两位数字相同
         m用来区分开N的每一位数
         i用来控制循环次数
         flag用来判断是否符合完全平方数的条件
    
    数据处理:伪代码
         定义变量n1来,n2来存放找完全平方数的范围,i来放找完全平方数的范围内的每一个整数,cnt来放范围内完全平方数的个数 
         输入范围
      对cnt初始化为0 
         for n1 to n2
             if 自定义函数IsTheNumber(i)返回的值为1 then  cnt累加
         end for 
         输出cnt
    
     定义函数int IsTheNumber ( const 定义变量N来放找完全平方数的范围内的每一个整数 )
         定义变量result来存放N的二分之一次方,sum用来放数N中相同数字的个数,i用来放1~9的每一个数,m用来存放N的每一位数,flag用来存放1和0 
         将N赋值给m 
    
         if N<0 then 返回0 
         else
             将N的二分之一次方赋值给result 
             if pow(result,2)==N then       
                 for 0 to 9
                     while(!(m==0)) 
                         if m%10==i then sum累加 
                         将m除以10并赋值给m    
                     end while 
                     if sum>=2 then 将1赋值给flag
                     将m初始化为result的平方      
                     将sum初始化为0 
                 end for 
                 if flag==1 then 返回1       
             返回0 
    

    (2)实验代码截图

    (3)造测试数据

    输入数据 输出数据 说明
    144 144 cnt = 1 存在一个完全平方数
    144 225 cnt = 2 存在两个完全平方数
    100 200 cnt = 3 存在三个完全平方数
    1469 4638 cnt = 15 输入的都是四位数
    -120 -1 cnt = 0 输入的都是负数

    (4)PTA提交列表及说明

    提交列表说明

     1.部分正确:忘记考虑两位以上数字相同的也是完全平方数,将24行的if(sum==2)改为if(sum>=2)后答案正确。
     2.开始时在Dve-c++上输入题目的输入题目的输入样例后发现输出来的cnt为12不符合输出样例,然后不断讲输入的范围减小发现一个不符合条件的数169让cnt增加了一,然后进行调试,在自定义函数那里设置断点输入169 169,添加查看变量flag,i,cnt,不断点击下一步,发现当i=9的时候flag还是等于0,继续点击下一步发现在经过if(flag=1)后flag突然等于1然后进入了if语句内返回了1,然后发现if(flag=1)应改为if(flag==1),然后运行发现答案符合输出样例将代码复制在PTA上面
    

    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<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)数据处理

     数据表达:
         用了整形变量i,sum,cnt,n,m,s,i;
         i用来控制循环  
         sum用来保存要输出的和值
         cnt用来保存要求输出的数的个数
         n用来保存n/10后的每一位数
         m用来存放你的每一个位数
         s用来判断数是否是各位数字之和是5的数 
    
    数据处理:伪代码
     主函数:
           定义整形变量a,b来放输入的范围
           输入范围
           if 自定义函数is(a)返回来的值不为0 then 输出b is counted
     自定义函数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
     自定义函数is(定义整形变量numbe来接收主函数传入的值)
           定义整形变量n来存放number的值,m来存放n的每一个数字,s来存放每一个数字的和
           将number赋值给n
           while(n不等于0)
               将n除以10的余数赋值给m
               将n除以10后赋值给n
               将s加上m后赋值给s
           end for
           if s等于5 then 返回1
           else 返回0
    

    (2)实验代码截图

    (3)造测试数据

    输入数据 输出数据 说明
    104 104 a=b
    105 200 a,b都不是
    1 10000 最大区间
    104 203 a,b都是

    (4)PTA提交列表及说明

    提交列表说明

     1.一次性正确:没有用其他编译器,直接在PTA上面一次性正确。
    

    二.代码互评

    同学(柏朝晖)代码 同学(杨宇)代码 自己代码

    比较

     (1)从占用的空间上来说,第一份代码定义了7个变量,第二份定义了4个变量,而我定义了5个变量,第二份开辟的空间更少,从这个层面来说第二份的代码更好
     (2)从代码占用的内存来说,第一二份只用了28行,而我用了38行,从这个层面来说第一二份的代码更好
     (3)第一份在判断至少有两位数字相同这一点用的是先将数N的位数算出来储存在i,然后再按这个位数的范围进行循环;而第二份和我的一样,拿数N的每一位数按1~9数字的个数一个个进行统计,当存在1~9内的一个数有至少两个时返回1
    

    三.学习总结

    1.学习进度条

    周/日期 这周所花的时间 代码行 学到的知识点简介 目前比较迷惑的问题
    第四周 7小时 100行 在屏幕上显示Hello World! 暂无
    第五周 8小时 100行 求华氏温度对应的摄氏温度 暂无
    第六周 30小时 200行 如何用 MinGW-w64 来编译C程序 暂无
    第七周 24小时 300行 运用if语句完成各种数学程序 对于&&的用法不了解
    第八周 24小时 300行 学会了for循环语句 暂无
    第九周 24小时 300行 学会了如何去自定义一个函数 暂无
    第十周 30小时 400行 学会了if-else语句的嵌入 对“(Y%100)这个表达式意味着当Y不能整除4时(Y%100的余数不等于0时)表达式为真”这句话不是很懂
    第十一周 24小时 450行 学会了如何去使用switch语句来做编程题 暂无
    第十二周 24小时 450行 学会了如何去使用while循环来做编程题 对字符型的输入不太了解
    第十三周 26小时 372行 学会了如何去使用for嵌套来做编程题,学会了continue的使用方法 对字符型的输入和输出不太了解,对数组完全不了解
    第十四周 28小时 634行 学会了字符型的输入和输出 对数组完全不了解,对指针完全不了解
    第十五周 28小时 782行 进一步了解了如何去自定义一个函数 对数组完全不了解,对指针完全不了解,对于函数题不太熟练

    2. 累积代码行和博客字数

    时间 博客字数 代码行数
    第四周 510 100
    第五周 510 200
    第六周 1149 400
    第七周 2027 700
    第八周 3791 1000
    第九周 5294 1300
    第十周 6900 1700
    第十一周 8614 2150
    第十二周 10495 2600
    第十三周 13019 2972
    第十四周 15893 3606
    第十五周 18992 4388

    3 .学习内容总结和感悟

    (1)学习内容总结

    (2) 学习体会

     感觉最近心理出现了一些问题,而且感觉这一次的作业很难,有一种不想做作业的感觉。对于C语言的这个博客园作业,从第一次的随便应付到后面的努力去做好,为了提前交加分每次都会熬夜来做这个作业,每次做完都要重新看无数遍找出不够好的地方重新写,一次一次改,努力去做的更完美,但是我感觉无论怎么努力就是比不上别人。每次作业分数出来后我都会看那些分数高的作业,一个个反复看我哪里不足,可是有的时候我真的觉得别人写的也没有什么地方可以让我学的,有时候真的觉得我的作业也差不多,但是我扣的分就是比别人多。一次次的努力,每一次作业都想着每个小细节做的更好一点,扣的分却一次比一次多,真的让我有一种无力感。产生了一种以后这个作业不要浪费那么多时间去做的想法,这些时间用在这里毫无意义,那些修改细节的时间还不如多刷一些题目,甚至都产生了一种不想做这个作业了的想法。每次都想着要自学一下后面的内容,却总是没有时间,总是把时间用在不该用的地方。突然觉得自己好没用啊,真的不喜欢这样的自己呢·····
  • 相关阅读:
    IOC容器特性注入第六篇:利用MVC注入点,把容器启动
    IOC容器特性注入第五篇:查找(Attribute)特性注入
    以女朋友为例讲解 TCP/IP 三次握手与四次挥手
    Kali信息收集
    Python3 异常处理
    Python3 hasattr()、getattr()、setattr()、delattr()函数
    Python3 常用模块
    Python设计模式——外观模式
    Python设计模式——模版方法模式
    一个很神奇的类
  • 原文地址:https://www.cnblogs.com/sunmengjiaoing/p/11979547.html
Copyright © 2020-2023  润新知