zoukankan      html  css  js  c++  java
  • C语言Ⅰ博客作业11

    这个作业属于那个课程 C语言程序设计II
    这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/CST2019-3/homework/10130
    我在这个课程的目标是 熟练掌握C语言基础
    这个作业在哪个具体方面帮助我实现目标 掌握C语言知识,有效的完成PTA作业
    参考文献 C语言程序设计,https://www.cnblogs.com/imhaiyang/articles/4809724.html

    1.PTA实验作业

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

    1.1.1数据处理

    数据表达:用了n,i,b,a[],m两个变量,i的值是通过不断循环加1得到,n的值是N的值,m的平方数是N,a[]是一个数组,都是整型变量。
    数据处理:
    伪代码:
    int b,a[10]←{0},m←sqrt(N),i,n←N; /*定义五个变量i,n,b,a[10],m*/
    IF m*m=n THEN                    /*判断n是否是完全平方数*/
    do while n                       /*在循环里判断平方数是否至少有两位数字相同*/
       do b←n%10
          a[b]←a[b]+1
          n←n/10
       for i←0 to 9
       do IF a[i]>1 THEN             /*通过数组判断相同数的个数*/
          do return 1
       return 0 
    

    1.1.2实验代码截图

    1.1.3 造测试数据

    输入数据 输出数据 说明
    105 500 cnt = 6 与题目输出样例一样,正确
    40 600 cnt = 7 随机取数,检验代码是否正确
    209 579 cnt = 4 随机取数,检验代码是否正确

    1.1.4 PTA提交列表及说明

    1.答案错误:把b=n%10中的n打成了N,改正过来后正确了
    2.答案正确。
    

    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.
    ", 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.2.1 数据处理

    数据表达:用了number,count,sum,a,b五个变量;a,b的值是通过输入得到;number的值代表a,b的值;count的值是通过for循环得到;sum是通过循环和式子sum+=a得到的;都是整型变量
    伪代码:
    int number;
    IF number%10+(number/10)%10+(number/100)%10+(number/1000)%10=5 THEN /*判断给定正整数的各位数字之和是否等于5*/
    do return 1
    else 
    return 0
    int a,b,count←0,sum←0;
    for a←a to b                                                        /*统计给定区间内有多少个满足上述要求的整数,并计算这些整数的和*/
    do IF is(a)=1 THEN
       do count←count+1
          sum←sum+a
    printf("count ← %d, sum ← %d",count,sum);
    

    1.2.2 实验代码截图

    1.2.3 造测试数据

    输入数据 输出数据 说明
    104 999 与题目输出样例一样,正确
    672 8092 取1-10000之间的数,输入的数各位数之和不等于5
    500 398 a>b,不符合题意

    1.2.4 PTA提交列表及说明

    1.答案正确。通过number%10+(number/10)%10+(number/100)%10+(number/1000)%10把正整数分成个位数相加判断是否之和等于5,用for循环得出count,sum。
    

    2.代码互评

    同学代码截图1 自己代码截图
    同学1在判断给定正整数的各位数字之和是否等于5时用了while循环和if语句判断,while循环中通过k=n%10,n/=10,h=k+h把n中的数分成个位数,然后相加在if语句里面判断。我只用了一个if语句判断,条件是number%10+(number/10)%10+(number/100)%10+(number/1000)%10==5,满足了就可以进行下一步了。
    
    同学代码截图2 自己代码截图
    同学2的代码没有用数组,先用if-else语句判断N的正负,然后在else语句里面嵌套了if语句,用来判断N是否是完全平方数,又用了for循环,while循环判断N是否至少有两位数字相同。同学2的代码比较长,不过没有用数组,易懂些。
    

    3.学习总结

    3.1 学习进度条

    周/日期 这周所花的时间 代码行 学到的知识点简介 目前比较迷惑的问题
    第15周/12.7 一天 131 自定义函数,局部变量,全局变量,变量生存周期,静态局部变量 数组使用起来不知道什么意思
    第14周/11.29 两天 130 读代码 continue语句怎么使用
    第13周/11.22 两天 99 循环嵌套,break语句,continue语句 伪代码的正确示范?打代码时什么时候要空格,什么时候不要
    第12周/11.14 两天 107 whlie语句,do-whlie语句的使用方法,伪代码 不太清楚字符型的使用方法
    第11周/11.9 一天 137 switch语句 scanf语句在int后面和在for或其他语句后面有什么区别吗
    第10周/11.4 一天 112 if语句的嵌套,字符型,逻辑运算符 怎么活用已学知识点做PTA
    第9周/10.25 一天半 88 函数的定义,调用 “/=”是什么意思
    第8周/10.18 两天左右 84 循环结构,for语句 在Dev-C++里面正确的代码到PTA上是答案错误怎么解决
    第7周/10.8-10.12 两天左右 49 scanf()函数,if-else语句,常用的数学函数,关系运算符... PTA作业怎么能好好的做完!

    3.2 累积代码行和博客字数

    3.3 学习内容总结和感悟

    3.3.1 学习内容总结

    3.3.2 学习体会

    这次写函数题的时候我都在想我之前是怎么做的,感觉有点模糊,但后面做了后又觉得我会做。不能那么早就被吓到了。读清题意,捋清思绪。虽然我有的是问同学的,哈哈。不过编程题我没怎么挑战,等有时候在做了。在写PTA前看了有关数组的知识,以为差不多懂了,可是用的时候,就懵逼了。还是要多实践的好!
  • 相关阅读:
    API---CreateIoCompletionPort
    Socket()与WSASocket()的区别
    HeapCreate
    WSAStartup()函数的使用
    makeword()
    WSAData是个什么结构体用什么用
    hostent结构体和wsadata结构体
    【C++11新特性】
    【C++11新特性】 auto关键字
    【C++11新特性】 nullptr关键字
  • 原文地址:https://www.cnblogs.com/dengjiamei/p/11992565.html
Copyright © 2011-2022 走看看