• 第二次作业(1001.A+B Format (20))


    代码文件及题目描写已放至此

    一开始看题目的时候有点没看懂,要求把数分组是什么意思。如果只是单纯的a+b的话是不可能的,所以关于这一点犹豫了很久。本来以为是指把a,b,以及它们的和c各建一个数组,但只输入一次的话,建数组根本没意义。后来才终反应过来,是指每三位用逗号隔开。

    于是就先尝试将a和b相加后的值,取除1000后的余数,依次存入一个数组中,然后再按顺序输出。
    输入1000000和9,跳出来的是“9,1,0,9”。看起来非常的有问题。
    把原先的“%d”改为“%03d”后,输出变成“009,001,000,009”了。从结果来看应该是多循环了一次。
    于是就改了改循环,修改后显示的是“001,000,009”。
    要把第一组的0去掉,于是重新讨论分类。
    终于正常了,现在是“1,000,009”。

    但是突然发现自己忘记考虑负数了。
    尝试带入-1000000和-9,得出的是“-1,000,-09”。看来除了第一部分,其余都不用保留符号。
    再在原代码上改下去的话会越来越复杂,就决定重新开始。

    这次把-1000~1000之间的数先单独提出来,这是可以直接输出的。
    因为除了第一部分其他都不需要符号,所以引入abs函数。
    意识到数字范围在-1000000~1000000之间,也就是说最多不超过三组,既然之前的数组用起来太费劲,那这次就直接按大小分好了。
    一共分成了绝对值小于1000,小于1000000,大于1000000三组。
    因为最多也只有两个逗号,所以直接用i,j,r来代表三块的数字。

    输入-1000000和-9,这回是“-1,000,009”了。
    又输入32和-32,得出“0”。
    输入-10000和81,得出“-9,919”。
    似乎没有问题了,去提交代码。

    但是代码提交后,却显示返回非零。非常困扰。
    原来是编译器选错了。
    改成C后提交就好啦。

    这是代码。

    提交列表。

    因为学长提出了把abs放在前面,所以也就做了尝试。但究竟是否有提高代码效率没有看出来……这该怎么看呢?

    当初没有把abs放在前面是因为想当然的觉得如果先设了绝对值,后面每次输出时就都得重新讨论正负。但这次想了想后,觉得既然已经用了直接分三类讨论这种偏投机取巧的方法,那不妨更干脆点,直接在开头就判断正负,如果是负数,就直接先输出一个负号。

    原先的代码是很久以前打的了,导致当时随手设的变量名现在看得晕乎乎的,所以这次是重新编了一遍。设置变量名时,三块内容分别用st,nd,rd表示,感觉清楚多了。中途又出现了“%d"中没有加03的错误,还出现了输出时加了&的低级错误,真是很不应该。

    编完后又拿去测了测,通过了。

    以下是代码。

    #include<stdio.h>
    #include<math.h>
    
    int main()
    {
        int a,b,c,d;
        int st,nd,rd;
        scanf("%d %d",&a,&b);
        c=a+b;
        d=abs(c);   
        if(c<0) printf("-");
        if(d<1000) printf("%d",d);
        else if(d<1000000) 
        {
    	    st=d%1000;
    	    nd=d/1000;
    	    printf("%d,%03d",nd,st);
        }
        else
        {
    	    st=d%1000;
    	    d=d/1000;
    	    nd=d%1000;
    	    rd=d/1000;
    	    printf("%d,%03d,%03d",rd,nd,st);
        }
        return 0;
    }
    

    以下是提交列表。

  • 相关阅读:
    软件的命名方式
    游戏软件的发展和特点
    第一章 【概论】练习与讨论 第二题
    进行博客博文管理的设计
    可视化编程是否会慢慢取代目前的主流编程
    第二次作业(软件工作量的估记方法)
    第一次作业
    string字符串格式化成time_t,并计算2个time_t的时间差
    CSV简单解析与排序输出
    jqchart总结
  • 原文地址:https://www.cnblogs.com/shadeinblue/p/5177171.html
Copyright © 2020-2023  润新知