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.我觉得重点要转移到掌握编程的思路和基本算法上来,我发现在刷题的时候有好多题目都是看懂了之后没有思路,想不到要我怎样去写这个题目,我觉得现在我应该去找一些经典例子,想到一个思路,就要按自己思路把它写完,让自己了解为什么我要这样写。

  • 相关阅读:
    对计算机科学与技术专业的认识及未来的规划
    秋季学期学习总结
    自我介绍
    Leetcode每日一题 83. 删除排序链表中的重复元素
    Leetcode每日一题 82. 删除排序链表中的重复元素 II
    Leetcode每日一题 456.132 模式
    Leetcode每日一题 341. 扁平化嵌套列表迭代器
    Leetcode每日一题 191. 位1的个数
    Leetcode每日一题 73. 矩阵置零
    Leetcode每日一题 150. 逆波兰表达式求值
  • 原文地址:https://www.cnblogs.com/b1356436060/p/11852924.html
Copyright © 2011-2022 走看看