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

    问题 答案
    这个作业属于那个课程 C语言程序设计II
    这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/CST2019-4/homework/10129
    我在这个课程的目标是 精通c语言,深入了解C语言的编程,学会自己编写程序
    这个作业在那个具体方面帮助我实现目标 进一步的的认识函数,学习函数的定义、调用和申明,并学习变量的作用域、生存周期和存储类型
    参考文献 C语言程序设计Ⅰ

    1.PTA实验作业

    1.1 统计各位数字之和是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;
    }
    /* 你的代码将被嵌在这里 */
    

    1.1.1数据处理

    数据表达:定义了整形变量sum,n;并把sum初始化为0;
    
    数据处理:
    is()函数:
    int sum=0,n;//定义变量
    while number!=0 
    do n←number%10;
    sum←sum+n;
    number←number/10;
    if(sum==5)then[返回1]
    else 返回0           
    end
    
    count_sum()函数:
    int i,count=0,sum=0;//定义变量
    for i ←a to b;
    do if(is(i))
    then[count++;sum←sum+i;] 
    end
    

    1.1.2实验代码截图


    1.1.3造测试数据

    输入数据 输出数据 说明
    104 999 从104到999之间各位数字之和是5的数的个数有15个
    1 999 从1到999之间各位数字之和是5的数的个数有21个

    1.1.4PTA提交列表及说明

    提交列表说明
    * 1.运行超时:做题目是把number=number/10写成了n=number/10.
    * 2.编译错误:这个是很低级的错误,我把number写成了numble。
    

    1.2统计某类完全平方数

    本题要求实现一个函数,判断任一给定整数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.2.1数据处理

    数据表达:定义了整形变量d,n,x,j,a[10]={0}
    数据处理:
    
    int d,n,x,j,a[10]={0};//定义变量
    d←N;
    n←sqrt(d);
    if(n*n==d)
    then[while(d!=0) x←d%10;a[x]++;d←d/10;do]
    for j 1 to n;
    flag←1;
    sum←pow(2,i)-1;
    for j 0 to 9;
    if(a[j]>1)
    then[返回1]
    end
    if(flag==1)
    then[输出sum;count++;]
    end
    

    1.2.2实验代码截图

    1.2.3造测试数据

    输入数据 输出数据 说明
    105 500 cnt = 6 有6个完全平方数
    55 100 cnt = 1 有1个完全平方数
    25 600 cnt = 7 有7个完全平方数

    1.2.4PTA提交列表及说明

    提交列表说明
    

    1.编译错误:我直接用了变量N,错误提示是我没有定义这个变量。
    

    2代码互评

    同学代码截图
    


    自己代码截图
    


    我和同学1的代码就是在判断是否至少有两位数字相同这里不同,同学的代码在这里是直接当a[d]等于2的时候判断是,而我的是当a[j]>1的时候判断是,我觉得把a[d]等于2改成a[d]>=2可能会更好。但是同学2的代码对于我们现在没有学数组来说可能更好,想法很好,用了我们学习的循环的嵌套。

    3.学习总结

    3.1学习进度条

    周/日期 这周所花时间 代码行 学到的知识点简介 此前比较迷茫的问题
    第一周 1天 24行 学会了一点printf()语句,知道主函数 的用法
    第二周 4天 23行 学会计算摄氏温度与华氏温度的转化 =两边打空格
    第三周 2天 62行 学会一点scanf()语句,定义变量,if-else结构 很多地方不知道为什么要打空格
    第四周 1天 145行 学会了for()语句 目前没有
    第五周 1天 142行 对函数的定义和调用有初步的认识 在函数的定义中是否可以输入形参的值
    第六周 2天 132行 加深对if-else分支结构的认识,字符型变量和常量的定义以及字符型输入输出函数 字符型数据的输出和输入不懂
    第七周 1天 206行 学会switch语句,用switch语句处理多分支选择问题 在编译器上打代码时,编译器没有提示错误,但是答案错了。后来才知道case后面要打空格再打常数表达式
    第八周 1天 125行 学习了while( )循环语句和do{ }while( )循环结构 相对于for()循环和while( )循环,do{ }while()还是运用的不太熟练
    第九周 1天 198行 学习了for( )语句的嵌套以及break语句和continue语句 运用不是很熟练,还需要多练
    第十周 1天 208行 复习了字符常数的定义,字符型函数的输出和输入以及循环结构 对于字符的输出和输入有待提高
    第十一周 1天 226行 学习了变量的作用域、生存周期和存储类型并进一步的的认识函数,学习函数的定义、调用和申明。 对于变量的作用域、生存周期和存储类型还不太理解,做选择题还是比较费力

    3.2累积代码行和博客字数

    3.3学习内容总结和感悟

    3.3.1学习内容总结

    3.3.2学习体会

    * 1.这周学习了各种类型函数的定义、调用和申明,以及变量的作用域、生存周期和存储类型。但是对于动态储存和静态储存还是不太了解。就像这次的选择题做起来还是比较费力。还是要多去看相关的资料。
    * 2.这周的作业还是比较让人奔溃的,相对于上几次,感觉这次作业的难度提高了不少。
    * 3.要多复习,不要让我们以前知道的知识忘记,不让以前就白费力了。
  • 相关阅读:
    TIF转JPG
    跨线程取出控件的值的写法(不是跨线程赋予控件值)
    oracle根据正则表达式查找对应的字段
    oracle数据库连接字符串
    access检测表没有的字段,添加之
    解决 Unable to load DLL 'OraOps9.dll': 找不到指定的模块。 (Exception from HRESULT: 0x8007007E)
    oracle关键字使用
    to_number,Extract oracle的关键字
    OracleCommand.CommandText 无效
    调用带参数的线程两种方法
  • 原文地址:https://www.cnblogs.com/deng9/p/11994240.html
Copyright © 2011-2022 走看看