• C语言博客作业08


    一、本周教学内容&目标

    第4章 循环结构 4.1-4.2 熟悉使用while和do-while结构解决问题

    二、本周作业

    问题 答案
    这个作业属于哪个课程 C语言程序设计II
    这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/CST2019-2/homework/9977
    我在这个课程的目标是 掌握并熟练用代码解决实际问题
    这个作业在哪个具体方面帮助我实现目标 重复写代码,运用多种语句,例如lf-else语句,for语句,switch语句,while语句等
    参考文献 C语言程序设计I和习题实验指导书,QQ浏览器

    三、本周作业

    1.PTA实验作业

    请在此处列出自己的排名图片

    1.1 ```题目:7-1 求整数的位数及各位数字之和:对于给定的正整数N,求它的位数及其各位数字之和。

    输入格式:
    输入在一行中给出一个不超过10的9次方的正整数N。
    输出格式:
    在一行中输出N的位数及其各位数字之和,中间用一个空格隔开。```

    • 1.1.1数据处理
      数据表达:先分别定义整数、整数的位数及各位数字之和,即N,sum,figure.均为整型变量,由于题目中的N为正整数,所以再利用while语句,条件便是N!=0,最后输出。
      数据处理

    include<stdio.h> /编译预处理命令/

    int main( ) /定义主函数main/
    {
    int N,sum=0,figure; /定义三个整型变量N-正整数,sum-N的位数,figure-N的各位数字之和/

    scanf("%d",&N);   /*调用scanf()函数输入正整数N*/
    while(N != 0)   /*调用while()语句输入N不等于0的情况,即判断循环条件*/
    {
        sum += N%10;   /*求出各个位数之和*/
        N=N/10;   /*整除后减少一位个位数,组成一个新数*/
        figure++;   /*位数加一*/
    }
    printf("%d %d",figure,sum);   /*输出两个函数*/
    
    return 0;   /*结束函数调用,返回函数值0*/
    

    }

    • 1.1.2实验代码截图

    • 1.1.3造测试数据

    输入数据 输出数据 说明
    323 3 8 323的位数为3,各个数字之和为8
    41 2 5 41的位数为2,各个数字之和为5
    4444 4 16 4444的位数为4,各个数字之和为16
    8 1 8 8的位数为1,各个数字之和为8
    12345 5 15 12345的位数为5,各个数字之和为15
    • 1.1.4PTA提交列表及说明
      提交列表:

      说明:1.部分正确:输出部分的位数figure和各数字之和sum顺序搞反了 2.编译错误:while里面的条件!写成了中文版的!。

    1.2```题目:7-5 爬动的蠕虫 (15 分)

    一条蠕虫长1寸,在一口深为N寸的井的底部。已知蠕虫每1分钟可以向上爬U寸,但必须休息1分钟才能接着往上爬。在休息的过程中,蠕虫又下滑了D寸。就这样,上爬和下滑重复进行。请问,蠕虫需要多长时间才能爬出井?
    这里要求不足1分钟按1分钟计,并且假定只要在某次上爬过程中蠕虫的头部到达了井的顶部,那么蠕虫就完成任务了。初始时,蠕虫是趴在井底的(即高度为0)。
    输入格式:
    输入在一行中顺序给出3个正整数N、U、D,其中D<U,N不超过100。
    输出格式:
    在一行中输出蠕虫爬出井的时间,以分钟为单位。 ```

    • 1.2.1数据处理
      数据表达:先定义五个变量,分别是井口高度,上滑量,下滑量,蠕虫消耗时间,距离井底的距离,均为整型变量,再利用for语句和If-else语句输入条件,最后输出。
      数据处理

    include <stdio.h> /编译预处理命令/

    int main() /声明主函数/
    {
    int N,U,D,time,S=0; /定义变量:井口高度,上滑量,下滑量,蠕虫消耗时间,距离井底的距离/

    scanf("%d %d %d",&N,&U,&D);   /*调用scanf()语句,输入三个变量*/
    for(time=1; ;time++)   /*利用for语句将时间从一开始加,依次加一*/
    

    {
    if(time%2 > 0) /利用If语句判断时间除以2取的余数 与0的大小/
    {
    S += U; /总距离的计算/
    if(S>=N) /利用if语句输入距离井底的距离大于等于井口高度的情况/
    {
    break;
    }
    }
    else
    {
    S-=D; /距离井底总距离的计算,S=S-D/
    }
    }
    printf("%d",time); /输出输出蠕虫爬出井的时间/

    return 0;   /*结束函数调用,返回函数值0*/
    

    }

    • 1.2.2实验代码截图

    • 1.2.3造测试数据

    输入数据 输出数据 说明
    10 3 2 15 2<3,蠕虫爬出井的时间为15分钟
    11 4 3 15 3<4,蠕虫爬出井的时间为15分钟
    12 3 1 11 1<3,蠕虫爬出井的时间为11分钟
    12 3 3 无输出 3=3,不满足D<U
    12 3 4 无输出 4>3,不满足D<U
    13 4 2 11 2<4,蠕虫爬出井的时间为11分钟
    • 1.2.4PTA提交列表及说明

    说明:1.部分正确:该题目要求所说的时间不足1分钟按1分钟计,那应该最小为1,而我以为是0,从而导致部分错误。 2.编译错误:for语句中条件规定为三个,即使没有条件也应该打一个分号,而我没有打分号,以为没有必要。

    2.代码互评

    2.1模板一


    差异:1.该同学定义了多种变量,而我只定义了三个主要变量,即正整数N、位数figure、各个位数之和sum; 2.该同学运用的是do-while,而我是while语句,我觉得该同学的do-while语句更加严谨,先执行一次循环体,再进行N!=0的情况。 3.该同学是利用多设置的变量作为中间变量间接输出结果,而我是直接利用表达式得出结果,我的更快捷一点。

    2.2模板二


    差异:1.最明显的差异是该同学不仅运用了If语句,还运用了我们最近讲的while语句,而我运用的是for语句.虽然我的看起来简单,但该同学的代码更容易懂。 2.一开始我是以n=0作为for语句的条件1,而该同学首先定义的就是N=1。

    3.学习总结

    3.1 学习进度条

    周/日期 这周所花的时间 代码行 学到的知识点简介 目前比较迷惑的问题
    第一周 4/h 150 学会了输入输出字符 如何去定义和运用Markdown格式
    第二周 12/h 300 知道定义变量和表格的制作及Markdown格式的运用 运算符怎么输入
    第三周 15/h 396 学会了折线图的制作和lf-else语句的运用及多种运算符的使用 怎样才能使输入代码更加简便,有没有惯用的
    第四周 13/h 350 for的循环结构 各种情况下各种变量的灵活运用
    第五周 12/h 370 用代码输入生成乘方表和阶乘表 不知道该定义多少个量
    第六周 16/h 400 字符型数据类型和逻辑与关系运算符 做了PTA上面的几个编程题,感觉有的题目自己看不懂,不知道如何写表达式
    第七周 9/h 310 多支结构switch语句 不知道该对谁应用switch语句,题目意思转化成代码不知如何表达
    第八周 15/h 410 while与for语句使用的区别及do-while的使用 解决问题没有好的逻辑思维能力

    3.2 累积代码行和博客字数

    3.3 学习内容总结和感悟

    3.3.1学习内容总结

    3.3.2学习体会

    老师在课程讲的内容你可能以为都听懂了,实际并没有,因为你并不会用,或者说变了一个题目你就不会用之前的方法解决,所以在这门课上,我们必须做到课前预习,课上认真,课后复习并练习,特别是反复练习,绝对不可少,这也就是我们为什么和别人本来是同一个起跑线,到后来落后的原因之一。

    `

  • 相关阅读:
    Nginx详解
    MySQL数据库(未完)
    PXE自动装机
    Rsync数据同步服务
    NFS网络文件系统
    inotify事件监控工具
    scp ssh-key连接原理
    生产环境ssh登陆策略
    npm ERR! errno -4048
    js判断手机系统语言动态引入不同js文件
  • 原文地址:https://www.cnblogs.com/abcd123456/p/11846315.html
Copyright © 2020-2023  润新知