编程题A+B Format的总结(第二次作业<一>)
Github链接地址:https://github.com/Startup-try/object-oriented
这个题目现在想想没有那么难,其实还挺简单的,但是中午花了好长的时间还不懂得怎么做,感觉要做出内伤。晚饭吃后,又查了一遍下午查资料没搞懂的"03d"——输出一个数,不足3位在前面补0,后面就比较顺利地将这个题目解出来。
这个题目主要的难点是在输出a+b的和的格式上,题目要求用标准形式输出即当和值为4位及4位以上,从右边往左每隔3位数要加个逗号,这是我在之前都没做过的。最开始是以为C语言中有以标准形式输出的函数,找了找,发现没有。后面不知道怎么下手就去网上看有没有什么方法,看到了班级同学是怎么做的,大致看一下,没有很细致地去看,明白了用"%d,%d"这样的形式就能按照题目的要求输出标准形式,知道了是这样子做后就自己动手去打代码。一开始的思路是第一个逗号前的数用c除以某个确切的数来得到,第一个逗号后的数用a除以某个确切的数+b除以某个确切的数得到,算得差点没出内伤:一直错,一直改,改了还是错。敲得代码真的是又臭又长,总结原因,是自己算法出了大问题。一开始写的代码:
include<stdio.h>
int main()
{
int a,b,c,i=0,temp,a0,a1,a2,b0,b1,b2,t=0;
scanf("%d %d",&a,&b);
c=a+b;
if((c>0&&c<1000)||(c<0&&c>-1000))
printf("%d",c);
else if((c>1000&&c<1000000)||(c>-1000000&&c<-1000)){
c=c/1000;
a=a%1000;
b=b%1000;
if((a+b)%1000==0)
printf("%d,%d%d%d",c,t,t,t);
else if((a+b)%1000<100)
printf("%d,%d%d",c,t,(a+b)%1000);
else
printf("%d,%d",c,(a+b)%1000);
}
if((c>1000000&&c<3000000)||(c<-1000000&&c>-2000000)){
c=c/1000000;
a0=a;
a=a%1000;
a1=a;
a0=a0/1000;
a0=a0%1000;
a2=a0;
b0=b;
b=b%1000;
b1=b;
b0=b0/1000;
b0=b0%1000;
b2=b0;
if(((a2+b2)%1000==0)&&((a1+b1)%1000==0))
printf("%d,%d%d%d,%d%d%d",c,t,t,t,t,t,t);
else if(((a2+b2)%1000==0)&&((a1+b1)%1000<100))
printf("%d,%d%d%d,%d%d",c,t,t,t,t,(a1+b1)%1000);
else if(((a2+b2)%1000==0)&&((a1+b1)%1000>100))
printf("%d,%d%d%d,%d",c,t,t,t,(a1+b1)%1000);
else if(((a2+b2)%1000<100)&&((a1+b1)%1000>100))
printf("%d,%d%d,%d",c,t,(a2+b2)%1000,(a1+b1)%1000);
else if(((a2+b2)%1000<100)&&((a1+b1)%1000==0))
printf("%d,%d%d,%d%d%d",c,t,(a2+b2)%1000,t,t,t);
else if(((a2+b2)%1000<100)&&((a1+b1)%1000<100))
printf("%d,%d%d,%d%d",c,t,(a2+b2)%1000,t,(a1+b1)%1000);
else if(((a2+b2)%1000>100)&&((a1+b1)%1000==0))
printf("%d,%d,%d%d%d",c,(a2+b2)%1000,t,t,t);
else if(((a2+b2)%1000>100)&&((a1+b1)%1000<100))
printf("%d,%d,%d%d",c,(a2+b2)%1000,t,(a1+b1)%1000);
else
printf("%d,%d,%d",c,(a2+b2)%1000,(a1+b1)%1000);
}
return 0;
}
拿去裁判,一直是5分,6分。 
饭后自己去查了资料,不知道怎么就懂得用c除以某个确切的数来得到逗号前后各个数,而且很快就写好了代码。但并不是一下子就全部正确,这中间也经历了两次提交的时候忘了把自己用于测试的代码删掉,导致全部错误,最严重的是把可能为负数的情况忘了考虑。写好了对于整数可行的代码,拿上去裁判,发现才得5分,觉得想不通,后面把示例拿去测试一下才发现忘了考虑结果为负数的情况,然后就去补上,拿去裁判,发现全部正确。好开心、好开心、好开心。忘了将测试代码删了导致全部错误:
全部正确的:
正确的代码:
include<stdio.h>
int main()
{
int a,b,c,t,i,j,m;
scanf("%d %d",&a,&b);
c=a+b;
t=i=j=m=c;
if((c>=0&&c<1000)||(c<=0&&c>-1000))
printf("%d",c);
else if((c>=1000&&c<1000000)||(c>-1000000&&c<=-1000)){
c/=1000;
t=t%1000;
if(t<0)
t=-t;
printf("%d,%03d",c,t);
}
else if((c>=1000000&&c<=2000000)||(c<=-1000000&&c>=-2000000)){
c/=1000000;
m%=1000000;
j=m/1000;
i%=1000;
if(j<0)
j=-j;
if(i<0)
i=-i;
printf("%d,%03d,%03d",c,j,i);
}
return 0;
}
总结:一开始还没注意到a,b是整数,定义了double类型的a,b。这个考的知识点主要是“/”,“%”的用法。整数类型的a,/10^几次方(小于a)就是干掉后面几位,%10^几次方,就是保留后面几位。 做完了这个题目觉得自己收获还是蛮大的,不可否认,吃完晚饭后,头脑有想过不懂得怎么做就算了,后面自己还能做出来,感觉挺不错的。还有,我想,可能并不是晚饭后就莫名其妙地知道怎么做, 更有可能还是与中午大半天的琢磨有很大关系——就像吃前9个馒头没感觉饱等到第10个才觉得一样,所以还是得多练!
编程题A+B Format的总结(第二次作业<一>)的更多相关文章
- Java程序设计(2021春)——第二章课后题(选择题+编程题)答案与详解
Java程序设计(2021春)--第二章课后题(选择题+编程题)答案与详解 目录 Java程序设计(2021春)--第二章课后题(选择题+编程题)答案与详解 第二章选择题 2.1 面向对象方法的特性 ...
- 面向对象程序设计--Java语言第二周编程题:有秒计时的数字时钟
有秒计时的数字时钟 题目内容: 这一周的编程题是需要你在课程所给的时钟程序的基础上修改而成.但是我们并不直接给你时钟程序的代码,请根据视频自己输入时钟程序的Display和Clock类的代码,然后来做 ...
- 算法是什么我记不住,But i do it my way. 解一道滴滴出行秋招编程题。
只因在今日头条刷到一篇文章,我就这样伤害我自己,手贱. 刷头条看到一篇文章写的滴滴出行2017秋招编程题,后来发现原文在这里http://www.cnblogs.com/SHERO-Vae/p/588 ...
- C算法编程题(七)购物
前言 上一篇<C算法编程题(六)串的处理> 有些朋友看过我写的这个算法编程题系列,都说你写的不是什么算法,也不是什么C++,大家也给我提出用一些C++特性去实现问题更方便些,在这里谢谢大家 ...
- C算法编程题(六)串的处理
前言 上一篇<C算法编程题(五)“E”的变换> 连续写了几篇有关图形输出的编程题,今天说下有关字符串的处理. 程序描述 在实际的开发工作中,对字符串的处理是最常见的编程任务.本题目即是要求 ...
- C算法编程题(五)“E”的变换
前言 上一篇<C算法编程题(四)上三角> 插几句话,说说最近自己的状态,人家都说程序员经常失眠什么的,但是这几个月来,我从没有失眠过,当然是过了分手那段时期.每天的工作很忙,一个任务接一个 ...
- C算法编程题(四)上三角
前言 上一篇<C算法编程题(三)画表格> 上几篇说的都是根据要求输出一些字符.图案等,今天就再说一个“上三角”,有点类似于第二篇说的正螺旋,输出的字符少了,但是逻辑稍微复杂了点. 程序描述 ...
- C算法编程题(二)正螺旋
前言 上一篇<C算法编程题(一)扑克牌发牌> 写东西前总是喜欢吐槽一些东西,还是多啰嗦几句吧,早上看了一篇博文<谈谈外企涨工资那些事>,里面楼主讲到外企公司包含的五类人,其实不 ...
- C语言程序设计进阶 第1周编程题
第1周编程题 查看帮助 返回 依照学术诚信条款,我保证此作业是本人独立完成的. 温馨提示: 1.本次作业属于Online Judge题目,提交后由系统即时判分. 2.学生可以在作业截止时间之前不限次数 ...
随机推荐
- cordova程序加载pdf文件的2种方法(ios/android)
前言 公司目前的前端架构是微信端由vue全家桶负责h5网站的单页应用,android端和ios端则选择cordova打包成apk和app.其中,有一个业务逻辑是点击某个链接进入pdf的展示,h5的方案 ...
- JavaScript插入节点小结
JS原生API插入节点的方式大致有innerHTML.outerHTML.appendChild.insertBefore.insertAdjacentHTML.applyElement这6种. 这里 ...
- js获取网页上选中的部分,包含html代码
function getSelectedContents(){ if (window.getSelection) { //chrome,firefox,opera var ra ...
- JSONObject与null
前言 今天在写代码的时候发现在 JSON 中 由于put了key对应的value为null,结果这个JSON键值对没有输出 org.json.JSONObject 在orgJSON 中,如果直接put ...
- [LeetCode]Combination Sum题解(DFS)
Combination Sum Given a set of candidate numbers (C) (without duplicates) and a target number (T), f ...
- python 实现websocket
python中websocket需要我们自己实现握手代码,流程是这样:服务端启动websocket服务,并监听.当客户端连接过来时,(需要我们自己实现)服务端就接收客户端的请求数据,拿到请求头,根据请 ...
- python中字符串格式化%与.format
Python的字符串格式化有两种方式: 百分号方式.format方式 百分号的方式相对来说比较老,而format方式则是比较先进的方式,企图替换古老的方式,目前两者并存.[PEP-3101] This ...
- canvas toDataURL() 方法如何生成部分画布内容的图片
HTMLCanvasElement.toDataURL() 方法返回一个包含图片展示的 data URI .可以使用 type参数其类型,默认为 PNG 格式.图片的分辨率为96dpi. 如果画布的高 ...
- 关系型数据库——主键&外键的
一.什么是主键.外键: 关系型数据库中的一条记录中有若干个属性,若其中某一个属性组(注意是组)能唯一标识一条记录,该属性组就可以成为一个主键 比如 学生表(学号,姓名,性别,班级) 其中每个学 ...
- 开博缘由 , 可点下看看 http://www.cnblogs.com/jshare
记录日常用中用到.遇到的问题 实现过程,仅供参考 不定时更新 ------------------- 之前看过一个文章,大概说的是开发和用到的过的代码,可以提取出一些代码片段,长时间下来,你会发现部分 ...