• C语言|博客作业11


    问题 回答
    这个作业属于那个课程 C语言程序设计II
    这个作业要求在哪里 作业要求
    我在这个课程的目标是 快速的敲代码,制作出能使用的小软件
    这个作业在那个具体方面帮助我实现目标 学习各种类型函数的定义、调用和申明,熟悉变量的作用域、生存周期和存储类型
    参考文献 百度,《C语言程序设计》

    1.PTA实验作业

    1.1题目1

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

    数据表达:用int定义了整形变量x,y,i,sum,count,其中x,y用来在is函数内判断给定正整数的各位数字之和是否等于5,i用来在count_sum函数内进行循环结构的运算,sum,count,分别用来统计的满足题目条件的数的数量与这些数量的和
    数据处理:

    while(number!=0)
    {
        用式子x=number%10求出个位的数值
        y=y+x对每次求出的x值进行累加
        每循环一次number去掉最后一位数
    }
    if(y==5)判断number各位数字之和是否等于5
    若是则返回1
    不是则返回0
    for(i=a;i<=b;i++)
    {
       if(is(i))对输入范围内的每个整数进行is函数内的运算
       {
           如果返回值为1则
           count=count+1
           用式子sum=sum+i对满足条件的值进行累加
       }
    输出count与sum的值
    }
    
    1.1.2实验代码截图

    1.1.3 造测试数据
    输入 输出 说明
    1 999 count = 21,sum = 3885 1到999之间有21个各位数字之和是否等于5的数,且这些数的和为3885
    325 818 count = 3,sum = 1311 325到818之间有3个各位数字之和是否等于5的数,且这些数的和为1311
    100 10000 count = 50,sum = 77605 100到10000之间有50个各位数字之和是否等于5的数,且这些数的和为77605
    1.1.4 PTA提交列表及说明


    说明
    我是在Dev-c++上完成的这道题,这道题目相对来说比较简单,我只出现了一个错误,就是在第二个函数中嵌套is函数时,括号内应用i,而我用的是number,后来发现在第二个函数内是要循环对i进行判断,而number是第一个函数内的

    1.2 题目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;
    

    }

    /* 你的代码将被嵌在这里 */

    输入样例:
    105 500

    输出样例:
    cnt = 6

    1.2.1 数据处理

    数据表达:用int定义了整型变量n,m,i,其中n代表根号N,m代表n的平方,i用来进行数组的运算
    数据处理:

    n=sqrt(N*1.0)
    m=n*n
    if(N==m)判断N是否为完全平方数
    {
       使数组a[10]起始为0个
       while(m>0)
       {
           i=m%10用i代表m的个位数
           每循环一次数组a[i]内的数量加1
           if(a[i]==2)判断数组内数的数量
           若为两个则返回值1
           每次循环后的m值去掉最后一位
       } 
    }
    
    1.2.2 实验代码截图

    1.2.3 造测试数据
    输入 输出 说明
    1 500 cnt = 7 1到500之间满足题目条件的数有7个
    325 818 cnt = 4 325到818之间满足题目条件的数有4个
    100 10000 cnt = 42 100到10000之间满足题目条件的数有42个
    1.2.4 PTA提交列表及说明


    说明
    编译错误:刚开始做这道题时我没有想到要用数组去做,因为数组我们还没学,我用的是逻辑运算符对有两位数字相同这一条件进行判断,然后出现了编译错误,在机课上纠结了很久也做不出,后来问了助教才知道需要用到数组,我就去看了一下书上关于数组的内容,感觉现在也还是似懂非懂,我还是参考了同学的代码才能做出来,但还是读懂了这个代码

    2.代码互评

    同学代码截图


    自己代码截图

    该同学多次运用了for的循环结构,定义了i与j进行辅助判断和输出,他的for循环的作用我还是有几处不明白,而我的代码看起来就比较简便,而且容易读懂
    同学代码截图


    自己代码截图

    该同学代码与我的比较类似,只是他用的是do-while语句,而我用的是while语句

    3.1 学习进度条

    周/日期 这周所花时间 代码行 学到的知识点简介 目前比较迷惑的问题
    第一周 5h 20 学会了怎样用PTA进行写代码作业,了解了一些关于软件工程专业的知识 不知道代码有什么用,对markdowm语法不怎么了解
    第二周 5h 20 基本学会了markdowm语法,知道以后要怎样向别提问 对许多学过了的代码还是不知道怎么用
    第三周 10h 60 学会了编写复杂一点的代码,开始懂得去阅读别人的代码 写代码时总是会出现编译错误,而且自己找不到错在哪里
    第四周 6h 68 学会了怎样使用for语句进行代码的循环运算 不能快速的想出表达式子的代码
    第五周 20h 178 学会了如何使用调用函数,如何制作思维导图 不能使用代码做比较困难的作业, 比如此次的哥德巴赫题目
    第六周 20h 187 初步了解字符型变量,学习了镶嵌结构 字符型变量的运算不是很会
    第七周 15h 148 多分支结构switch语句的使用 对switch语句的用法还是不熟悉
    第八周 15h 143 学会了如何使用while和do-while结构解决问题 for语句和while语句区别和使用范围
    第九周 10h 128 学会了break、continue的使用和使用循环的嵌套解决问题 使用循环的嵌套时还是不熟悉循环截止的条件和执行语句的输出
    第十周 10h 94 怎样判断素数,熟悉循环的嵌套
    第十一周 15h 88 学习了各种类型函数的定义、调用和申明,熟悉变量的作用域、生存周期和存储类型 怎样进行数组的使用

    3.2 累积代码行和博客字数

    3.3 学习内容总结和感悟

    3.3.1 学习内容总结

    3.3.2 学习体会

    1.这周的pta练习比较难,题目量也比较多,导致我这周的作业完成的很慢,本来有时间可以做的,但是看到这些难题目瞬间就不行动脑了,主要还是由于自己不够用心
    2.理论课上学习了新的知识,但这次作业好像又和那些知识没太大关系,反倒让我运用到了数组的知识,虽然有点难,但至少让我在考试之前略微了解了数组的用法

  • 相关阅读:
    JAVA理解逻辑程序的书上全部重要的习题
    体检套餐管理系统的综合版
    一路奔跑,一路寻找
    员工考勤信息管理小程序
    枚举的独特强大之处
    C#中HashTable的用法
    项目经理评分
    若想成功,请记住!
    数组的经典例子
    S1的小成果:MyKTV系统
  • 原文地址:https://www.cnblogs.com/wangwenzhi/p/11993824.html
Copyright © 2020-2023  润新知