面向对象程序设计 ——第二次作业(1)

A+B Format

解题的思路过程

由于题目的输出加入了逗号的要求,所以所写程序的重点就是对运算的结果进行判断并修改成符合题目要求再进行输出。因为规范输出是每三个数字就有一个逗号,并且根据最多只会出现两个逗号,所以对输出结果进行判断,并且每三位分成一组。

第一次的程序

#include <stdio.h>
int main()
{
  int a,b,c,x1,x2,x3;
  scanf("%d%d",&a,&b);
  c=a+b;
  while(c<0)
  {
    printf("-");
    c=c*(-1);
  }
  if(c<1000) 
  {
    printf("%d",c);
  }
  else if(c<1000000&&c>=1000)
  {
    x1=c/1000;
    x2=c-x1*1000;
    printf("%d,%d",x1,x2);
  }
  else if(c>=1000000)
  {
    x1=c/1000000;
    x2=(c-x1*1000000)/1000;
    x3=(c-x1*1000000-x2*1000);
    printf("%d,%d,%d",x1,x2,x3);
  }
  return 0; 
} 

但由于只是单纯的3个数字3个数字分开,没有考虑到单组出现全是0的情况,例如:输入1000 1000 要求输出结果为2,000 ,但会出现2,0 的结果所以大部分测试点都出现了错误.重新考虑后将应输出的部分改为'%03d',最终得到了正确的结果。

第二次的程序

#include <stdio.h>
int main()
{
  int a,b,c,x1,x2,x3;
  scanf("%d%d",&a,&b);
  c=a+b;
  while(c<0)
  {
    printf("-");
    c=c*(-1);
  }
  if(c<1000) 
  {
    printf("%d",c);
  }
  else if(c<1000000&&c>=1000)
  {
    x1=c/1000;
    x2=c-x1*1000;
    printf("%d,%03d",x1,x2);
  }
  else if(c>=1000000)
  {
    x1=c/1000000;
    x2=(c-x1*1000000)/1000;
    x3=(c-x1*1000000-x2*1000);
    printf("%d,%03d,%03d",x1,x2,x3);
  }
  return 0; 
} 

在PAT上的提交记录列表截图

总结

做完后,看了一部分同学的博客,大家的误区都差不多。总的来说,题目难度不大,侧重点是放在解题的细心和对细节的考虑上,

在学习使用markdown比较有帮助的两个网站

Markdown简易入门
Markdown在线转换器

posted @ 2016-02-01 17:11  magnesium  阅读(155)  评论(1编辑  收藏  举报