• C语言I作业08


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

    1.PTA实验作业(20分/题)

    从PTA题目集中选出2个你最满意的题目完成以下内容,选择题目难度越大,分值越高,每题20分(每项5分),内容要求如下:

    1.1 题目名1

    7-3 jmu-c-二进制转10进制 (20 分)
    输入一组二进制字符,输出其对应的十进制数。当输入回车键时,输入结束。若输入非二进制字符,输出error input!

    输入样例1:
    11111111
    输出样例1:
    255
    输入样例2:
    34
    输出样例2:
    error input!

    1.1.1数据处理

        #include<stdio.h>
     int main(){
    
       声明变量用于计算进制 s = 0;
    
        声明字符 n;
        死循环while(1){
    	输入字符 n;
    	if(按下回车)
    	跳出循环;
    	else
    	  if( 输入字符为'1'、 '0')
    	  	s = s*2 + (n - '0');//计算二进制到十进制的公式
    	  else
         	 跳出循环;
        } 
          if(按下回车)
          输出结果 s;
          else
         输出"error input!";
          return 0;
    
    }
    

    1.1.2实验代码截图

    1.1.3 造测试数据

    输入数据 输出数据 说明
    -1 error input! 负值
    1 1 1
    11111111 255 题目所给

    1.1.4 PTA提交列表及说明

    部分正确:由于我一开始的解题方向就错了,用的是没有字符的方法,所以总有一个测试点没过(但是代码可以解决问题)
    解决方法:改用字符
    如果不用字符的解法如下(但题目要求字符,所以测试点有字符存在,因此会有一给测试点报错):
    

    1.2 题目2

    7-6 整除光棍 (20 分)
    这里所谓的“光棍”,并不是指单身汪啦~ 说的是全部由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)。

    输出格式:
    在一行中输出相应的最小的s和n,其间以1个空格分隔。

    输入样例:
    31
    输出样例:
    3584229390681 15

    1.2.1 数据处理

    #include<stdio.h>
    int main()
    {
        声明变量 x, s = 1, n = 1;
        给x赋值
        while (s < x)//为了使下面不在答案前输出0
        {
    	    s = s * 10 + 1;
    	    n++;
        }
        while(1)
        {
    	    if (s % x 整除了)
    	    {
    		    printf("%d", s / x);
    		    break;
    	    }
    	    else
    	    {
    		    输出s / x;              //没有上面的while (s < x)部分会出现因s < x而打印出0
    		    s = s % x或s - x;             //加不加while (s < x)部分虽然答案数值大小没影响
    		    s = s * 10 + 1;      //但题目要求数值前面没有0
    		    n++(计数有几根光棍);
    	    }
        }
        输出光棍个数 n;
        return 0;
    }
    

    ps:送大家一张能豁然开朗的图= ̄ω ̄=

    1.2.2实验代码截图

    1.2.3 造测试数据

    输入数据 输出数据 说明
    31 3584229390681 15 题目所给
    1 1 1 x=1
    111 1 3 x为光棍

    1.2.4 PTA提交列表及说明

    部分正确:就如我上面数据处理说的一样,我的答案前多输出了0
    编译错误:改代码时少打了个“;”
    解决方法:加上我在数据处理中的while (s < x)部分即可
    

    2.代码互评(5分)

    找2份同学代码,和自己代码比较,建议互评代码尽量找代码风格差异较大。

    同学代码截图

    同学1

    同学2

    自己代码截图

    1.第一位同学用的是while循环加if else结构,并且设置了数组,但其实可以不用数组
    2.第二位同学有两个return 0;可以将两种情况分开结束
    3.我的代码运用while(1)死循环,并将按回车作为跳出循环的条件
    

    3.学习总结(15分)

    3.1 学习进度条(5分)

    周/日期 这周所花的时间 代码行 学到的知识点简介 目前比较迷惑的问题
    第一周 2h 72 输出 对于输出的符号还不熟
    第二周 3.5h 57 计算 算法陌生
    第三周 3.5h 81 分支结构 分支的逻辑理不清
    第四周 1.5h 180 for循环,+= 终止条件理不清
    第五周 2h 600 函数结构 对于算法的处理比较迷惑
    第六周 2h 1000 嵌套 对于嵌套的结构过多会解读的很吃力
    第七周 2h 1246 switch结构 switch结构里的case最后若是不加break会怎么样
    第八周 3h 1102 while结构 字符的运用不熟

    3.2 累积代码行和博客字数(5分)

    3.3 学习内容总结和感悟(5分)

    3.3.1 学习内容总结

    3.3.2 学习体会

    这周我在写pta上的感觉就是吃力,真的非常吃力,但也痛并快乐着吧,那种将一道道难题搞懂的感觉真的很不错
    但同时我也发现自己的思维不够灵活,并且对于字符的运用还十分陌生,之后还需多加练习,不过我感觉我的伪代码
    写的比之前好些了,我还会继续加油的!(。・∀・)ノ
  • 相关阅读:
    Linux下新磁盘挂载
    Centos6.5下Haproxy负载均衡搭建
    Linux下redis搭建与配置
    iptables-nat实现反向代理功能
    iptables防火墙规则的添加、删除、保存
    [Python]-tools
    [Python]-Game
    .[Linux]-部署Nagios监控
    [HTML]-web前端
    [Linux]-部署Zabbix监控
  • 原文地址:https://www.cnblogs.com/czynb/p/11864251.html
Copyright © 2020-2023  润新知