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

    这个作业属于那个课程
    这个作业要求在哪里
    我在这个课程的目标是
    这个作业在那个具体方面帮助我实现目标
    参考文献

    1.PTA实验作业

    jmu-c-二进制转10进制

    输入一组二进制字符,输出其对应的十进制数。当输入回车键时,输入结束。若输入非二进制字符,输出error input!

    输入样例

    11111111
    

    输出样例

    255
    

    输入样例

    34
    

    输出样例

    error input!
    

    1.1.1数据处理

    数据表达:

    我用了整形变量sum,flag,字符型变量number,sum为转换之后的和,flag用于判断输入的是不是1或0,number为输入的字符型1或0,来储存二进制
    

    数据处理:

    定义变量sum来放转化后的值,flag来判断是不是二进制的数1或0,number用来放每个字符
    while  (number!='
    ')
    {
        输入number对应的字符
        if   number=='
    '   then  end    while
        if   number!='0'或者'1'  then   flag=0   end  while
        else   sum=sum*2+number-'0'
    end while
    }
    if   flag=0   then   输出error input!
    else   输出sum
    
    

    1.1.2实验代码截图

    1.1.3 造测试数据

    输入数据 输出数据 说明
    11111 31 二进制11111转换成十进制为31
    1010101 85 二进制1010101转换成十进制为85
    3355 error input! 3355不是二进制

    1.1.4 PTA提交列表及说明

    提交列表说明
    在dev c++上我出现过一下错误

    答案错误:将输出error input!写在了循环内并且直接return结束了,使得每次输出都是error input!,后来将其移到循环外才得以正确
    

    1.2爬动的蠕虫

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

    输入格式

    输入在一行中顺序给出3个正整数N、U、D,其中D<U,N不超过100。

    输出格式

    在一行中输出蠕虫爬出井的时间,以分钟为单位。

    输入样例

    12 3 1
    

    输出样例

    11
    

    1.2.1 数据处理

    数据表达:

    我定义了整形变量n,u,d,time,sum,n为井的深度,u为蠕虫一分钟爬的距离,d为休息时下滑的距离,time为爬出井的总时间,sum为蠕虫爬行的距离。
    

    数据处理:

    定义n,u,d,来分别代表井深,蠕虫每分钟爬行的距离和休息时下滑的距离,time用来统计时间,sum用来判断蠕虫爬行距离的变化
    分别输入井深,蠕虫每分钟爬行的距离和休息时下滑的距离
    while(1)
    {
        sum+=u
        time++
        if    sum>n-1  then  end while
        sum-=d
        time++
    }
    end while
    输出时间time
    

    1.2.2 实验代码截图

    1.2.3 造测试数据

    输入数据 输出数据 说明
    15 4 3 23 如果井深为15寸,蠕虫每分钟爬行4寸,休息时下降3寸,则需要23分钟才能爬上去
    10 5 2 5 如果井深为10寸,蠕虫每分钟爬行5寸,休息时下降2寸,则需要5分钟才能爬上去
    9 5 4 9 如果井深为9寸,蠕虫每分钟爬行5寸,休息时下降4寸,则需要9分钟才能爬上去

    1.2.4 PTA提交列表及说明


    提交列表说明

    部分正确:在while的后面写了一个终止条件,导致和循环体有矛盾,导致一部分错了,后来将其改为1才正确
    

    1.3 整除光棍

    这里所谓的“光棍”,并不是指单身汪啦~ 说的是全部由1组成的数字,比如1、11、111、1111等。传说任何一个光棍都能被一个不以5结尾的奇数整除。比如,111111就可以被13整除。 现在,你的程序要读入一个整数x,这个整数一定是奇数并且不以5结尾。然后,经过计算,输出两个数字:第一个数字s,表示x乘以s是一个光棍,第二个数字n是这个光棍的位数。这样的解当然不是唯一的,题目要求你输出最小的解。
    提示:一个显然的办法是逐渐增加光棍的位数,直到可以整除x为止。但难点在于,s可能是个非常大的数 —— 比如,程序输入31,那么就输出3584229390681和15,因为31乘以3584229390681的结果是111111111111111,一共15个1。

    输入格式

    输入在一行中给出一个不以5结尾的正奇数x(<1000)。

    输出格式

    在一行中输出相应的最小的sn,其间以1个空格分隔。

    输入样例

    31
    

    输出样例

    3584229390681 15
    

    1.3.1数据处理

    数据表达:

    我用了整形变量x,d,i,n,字符型数组s[100],x为输入的数字,d为光棍数,i累计光棍的个数,n为数组的下标,s[1000]用于累计d/x的每一个位
    

    数据处理:

    定义x为输入的值,d为光棍数,i为光棍的个数,n为数组的下标,数组s[1000]用于收集光棍数除以x的值
    输入x的值
    while(1)
    {
        i++
        if  n!=0或者d/x!=0  then  s[n++]='0'+d/x
        d=d%x
        if  d=0  then   s[n]=''    输出字符串s和i   end  while
        d=d*10+1
    }
    end  while
    

    1.3.2实验代码截图

    1.3.3 造测试数据

    输入数据 输出数据 说明
    43 2583979328165374677 21 所得的光棍数除以43为2583979328165374677且光棍的个数为21
    21 5291 6 所得的光棍数除以21为5291且光棍的个数为6

    1.3.4 PTA提交列表及说明

    提交列表说明

    部分正确:前面想着先将光棍数计算出来在来计算除后的数和光棍的个数,发现循环的次数太多了,使得运行超时,后来逆向思维从前面除起,一边除一遍记录,才得以解决
    

    2.代码互评

    (彭杰)同学的代码

    我的代码

    1.他的代码是先判断距井口的距离是否大于零来判断循环是否结束,在后面判断距离井口的距离和一分钟内爬的距离的大小,如果能爬上去则只加一分钟,不能则再加上休息的时间,后面来判断是否需要加上休息的距离,最后输出时间
    2.我的代码是用一个sum变量来记录爬行的距离,如果sum加一分钟爬行的距离大于井口到其头部的距离则跳出循环,否则爬行的距离减去休息下降的距离,时间再加一分钟
    3.相比之下,他的代码比我跟通俗易懂一些,他是整体思想,而我是一步一步来写的,下次写代码可以利用他的这种想法
    

    (孙梦姣)同学的代码

    我的代码

    1.她的代码是按从左到右开始计算的,每次输出一个位的商,每次除完就将s赋值s/x的余数再将其乘十加1,相对于我们算除法的时候调下一位下来,直到s/x等于0为止,如果s%x=0了说明除尽了,再将光棍的个数输出出来,刚开始我是看不懂她i的作用是干嘛的,但是我认为没有必要用变量i,后来将她的代码敲出来再将i去除掉,发现是一样的,证明我的想法是正确的。
    2.我的代码是按照平时计算除法的那种方式来计算的,i是每次循环调用的1的个数,每次除出一个数就记录一个数放在s数组内,随后将d赋值d/x的余数再将其乘十加1,相对于我们算除法的时候调下一位下来最后当d=0的时候就将数组最后一个数赋值字符串的终止符号,再输出字符串便是所要的商,和光棍的个数i。
    3.总的来说他的代码和我的代码思路是相同的,但是她的数据无法储存起来,只能依次输出,但是我的可以,相比之下我的代码更好一些,
    

    3.学习总结

    3.1学习进度条

    周/日期 这周所花的时间 代码行 学到的知识点简介 目前比较迷惑的问题
    第六周 25小时 434行 常用的数学函数,if-else语句,for语句,自定义函数 自定义函数不会用一个算法来运算多个式子
    第七周 8小时 142行 二分支结构和用char输入字符 对于字符型的代码有点看不懂,getchar与putchar还不明白怎么运用
    第八周 12小时 343行 多分支结构,switch语句 switch语句用得有点混乱,搞不清什么时候该结束
    第九周 14个半小时 503行 自定义函数的用法,怎样用一个算法来运算多个式子 if语句的嵌套不明白是怎样分支的
    第十周 8个半小时 181 do-while,while循环语句和continue语句 continue不知道怎么去运
    第十一周 28个小时 1246 一维数组和二维数组的基本运用 数组用的不够熟练,老是犯错
    第十二周 10个小时 391 学会了整形数组字,浮点型数组和符型数组,学会了结构体struct的运用 struct的嵌套容易搞混变量

    3.2 累积代码行和博客字数

    时间 博客字数 代码行数
    第四周 645 0
    第五周 645 0
    第六周 1275 434
    第七周 2523 576
    第八周 3371 938
    第九周 5414 1441
    第十周 6930 1622
    第十一周 9584 2868
    第十二周 13222 3259

    3.3 学习内容总结和感悟

    3.3.1 学习内容总结

    3.3.2 学习体会

    1.这周自己学习了数组和结构体,数组是基本会用了,但是结构体还只是会最基本的而已,敲书上的结构体嵌套的时候不明白代码的意思,看的不是很懂,不过在刷题的过程中将结构体数组和混合结构体学会了。
    2.越到后面问问题的人就几乎没有了,我不知道是我的原因还是他们已经会了,我也不知道这是好事还是坏事,我有点困扰,因为我觉得可能是我自己的问题,可能是我自己哪里出了问题。
    3.我觉得重点要转移到掌握编程的思路和基本算法上来,我发现在刷题的时候有好多题目都是看懂了之后没有思路,想不到要我怎样去写这个题目,我觉得现在我应该去找一些经典例子,想到一个思路,就要按自己思路把它写完,让自己了解为什么我要这样写。

  • 相关阅读:
    Vsftpd 3.0.2 正式版发布
    Putdb WebBuilder 6.5 正式版本发布
    SoaBox 1.1.6 GA 发布,SOA 模拟环境
    pynag 0.4.6 发布,Nagios配置和插件管理
    Percona Playback 0.4,MySQL 负荷回放工具
    xombrero 1.3.1 发布,微型 Web 浏览器
    Hypertable 0.9.6.4 发布,分布式数据库
    libmemcached 1.0.11 发布
    CryptoHeaven 3.7 发布,安全邮件解决方案
    Android Activity生命周期
  • 原文地址:https://www.cnblogs.com/b1356436060/p/11852924.html
Copyright © 2011-2022 走看看