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

    这个作业属于那个课程 C语言程序设计II
    这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/CST2019-1/homework/10132
    我在这个课程的目标是 熟练地掌握运用C语言,锻炼思维逻辑能力,为以后其他语言的学习打好基础.
    这个作业在那个具体方面帮助我实现目标 学会定义函数,调用函数,区分定义函数和声明函数的区别,掌握全局变量和局部变量的定义,作用域,
    参考文献 《C语言程序设计》《C Primer Plus》百度百科 伪代码基本写法 C语言实数的负零问题和误差问题

    1.PTA实验作业

    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;
    }
    

    1.1.1数据处理

    数据表达:用了变量a,b,n,c[10];数据全为整型,通过赋值得到.
    数据处理:a表示N的平方根,b表示余数,n替代N,因为N定义时是const int N,是恒定不变的.const与int可以互换位置,二者等价.
    所用表达式:a=sqrt(N);n=N;a*a==N;b=n%10;c[b]++;n/=10;.
    流程结构:

    Begin
    int IsTheNumber ( const int N )
    定义变量与数组
    n←N
    if(a*a==N)
    {
       while n!=0
       do b←n%10
          c[b]←c[b]+1
          if(c[b]==2)
          {
             return 1
             break
          }
          n/=10
    }
    

    1.1.2实验代码截图

    1.1.3 造测试数据

    输入数据 输出数据 说明
    105 500 cnt = 6 使用题目数据,全是三位数
    1000 2500 cnt = 10 全是四位数
    -100 -50 cnt = 0 全是负数
    -100 100 cnt = 1 一正一负

    1.1.4 PTA提交列表及说明


    1.编译错误:题目N的定义为const int N,表示恒定不变,而我有N去取余.编译错误,定义一个n,令n=N,解决问题.

    1.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)的整数,并计算这些整数的和。最后按照格式进行输出。题目保证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;
    }
    

    1.2.1数据处理

    数据表达:自定义函数(1)定义了变量sum,item,类型全为整型,通过赋值得到.自定义函数(2)定义了变量i,sum,count,t.类型全为整型,通过赋值得到.
    数据处理:(1)中sum表示各位数字之和,item表示各位数字的大小.(2)中sum表示满足条件的整数和,i是循环控制变量,t是转化系数,count表示满足条件的整数的个数.
    所用表达式:(1):sum=0;item=number%10;number=number/10;sum=sum+item;(2):sum=0;count=0;t=a;a=b;b=t;count++;sum=sum+i;
    流程结构:

    Begin
    int is( int number )
    {
        定义变量
        sum←0;
        while number!=0 do
        item←number%10;number←number/10;sum←sum+item;
        if sum==5  then return 1;
        else return 0;
    }
    void count_sum( int a, int b )
    {
        定义变量与赋值
        if a>b then t=a;a=b;b=t;
        else for i←a to b
             if is(i) then count←count+1;sum←sum+i;
        输出count和sum
    }
    

    1.2.2试验代码截图

    1.2.3造测试数据

    输入数据 输出数据 说明
    104 999 104 is counted. count = 15, sum = 3720 使用题目数据
    5 14 5 is counted. 14 is counted. count = 2, sum = 19 a和b都是,但之间没有
    6 13 count = 0, sum = 0 区间内完全没有
    1 1 count = 0, sum = 0 最小区间
    1 10000 count = 56, sum = 77770 最大区间

    1.2.4PTA提交列表及说明

    2.代码互评

    我的代码:

    同学(1)的代码:

    代码差异:
    1.变量命名不同,而且都没有做到"见名知义",同学(1)的变量都是单独分开定义的,比较杂乱.
    2.在判定数组中的值是否为2时,同学(1)用了for语句去判定,而我用的if语句.
    我的代码:

    同学(2)的代码:

    代码差异:
    1.在求每个数的各位数时,我用的while语句,而同学(2)用的for语句.
    2.我的代码表示出现重复数据的语句是if(c[b]==2);而同学(2)是if(temp[i%10]!=0).

    3.学习总结

    3.1学习进度条

    周数/日期 这周所花的时间 代码行 学到的知识点简介 目前比较疑惑的问题
    第三周(10/08--10/12) 12个小时 300行左右 定义函数,if-else,for循环语句 输入与输出格式,空语句
    第四周(10/14--10/18) 15个小时 250行左右 for循环语句,基础的循环程序设计,数据的输出宽度 数据的输出宽度概念不太清晰,表达式的定义,空语句的定义
    第五周(10/23--10/26) 12个小时 350行左右 自定义函数的声明与调用,break跳出循环,while()循环语句 自定义函数的应用
    第六周(10/30--11/01) 18个小时 500行左右 if-else的嵌套,学习逻辑运算,条件语句,字符类型以及字符型数据的输入与输出 对字符型数据的输入与输出了解太少,缺乏练习,没有理解到getchar()字符输入函数与putchar()字符输出函数以及它们的运用
    第七周(11/05--11/07) 24个小时 720行左右 使用switch语句的三种情况,在switch语句中使用break语句,数组的定义与使用 continue语句的使用,for语句的嵌套循环
    第八周(11/12--11/15) 19个小时 810行左右 学习使用while和do-while语句实现次数不确定的循环,使用break语句处理多循环条件,以及了解while,do-while,for三种语句的差异 ASCII码和char类型和int类型的转换,进制数转化的多种方式
    第九周(11/19--11/21) 16个小时 600行左右 学习了for循环的嵌套以及了解break语句和continue语句的用法和区别 静态数组和动态数组的区别
    第十周(11/26--11/28) 17个小时 680行左右 使用穷举法解决问题 当存在数据溢出情况时,数据的定义与取值范围选取
    第十一周(12/3--12/5) 12个小时 800行左右 函数的定义与调用,局部变量和全局变量的区别 实数的负零问题和误差问题

    3.2累积代码行和博客字数

    3.3学习内容总结和感悟

    3.3.1学习内容总结

    3.3.2学习体会

    在本次学习中,上课有点吃力,对于自定义函数没有足够深入地了解,存在着许多问题,需要不断改进与努力.在作业中也遇见了一些之前没见过的问题,例如const int N,我并不知道const是什么意思,经过百度之后才明白const的基本意义, const 定义的变量的值是不允许改变的,即不允许给它重新赋值,用 const 修饰的变量,无论是全局变量还是局部变量,生存周期都是程序运行的整个过程。也初步了解到了实数的负零问题和误差问题,实数不能直接与0区比较,会存在一定误差,第一次使用了宏定义#define EPS 0.000001,也无法深入与使用,只能通过百度去查看最基础的使用.

  • 相关阅读:
    学习小结(8)
    内置函数补充(zip map filter)
    网络编程(爬虫,接口和requests的模块应用)及网络测接口
    Selenium彩蛋篇-Css Selector使用方法
    Selenium彩蛋篇-Xpath使用方法
    Selenium-WebDriverApi接口详解
    Selenium-Switch与SelectApi接口详解
    Selenium-常问面试题
    下拉框处理(select)
    Selenium之前世今生
  • 原文地址:https://www.cnblogs.com/wllrky/p/11985782.html
Copyright © 2011-2022 走看看