1. 程式人生 > >PAT程式設計練習——甲級1001(標準格式化數字)

PAT程式設計練習——甲級1001(標準格式化數字)

翻譯題目要求:

計算出兩個整數的和並將結果標準化——以三位數為單位用,逗號分割,如不超過三位,則無逗號分隔。仿照國際化的數字顯示標準。

輸入:-1000000 9
輸出:-999,991

目前想到一個辦法(C++程式碼):

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

char cResult[10] = {0};
int  pos = 0;

char* add(long a, long b)
{
 long result = a + b;
 if( result < 0 )
 {
  strcat( cResult, "-");
  pos = 1;
 }
 result = abs(result);                                                 // 對負數保留符號後,就轉為絕對值使用
 int top = result / 1000000;
 if( top > 0 )
 {
  sprintf( cResult + pos, "%d,", top );
  pos = strlen(cResult);
 }
 top = result % 1000000;
 top = top / 1000;
 if( top > 0 || pos > 1 )
 {
  if ( pos > 1 )                                                        // 存在高位,就要補0,佔滿位數
   sprintf( cResult + pos, "%03d,", top );
  else                                                                  // 不存在高位,不需要補0
   sprintf( cResult + pos, "%d,", top );
  pos = strlen(cResult);
 }
 top = result % 1000;
 if( top > 0 || pos > 1 )
 {
  if( pos > 1 )                                                         // 高位補0同理
   sprintf( cResult + pos, "%03d", top );
  else
   sprintf( cResult + pos, "%d", top );
  pos = strlen(cResult);
 }
 if( pos == 0 )                                                         //如果結果為0,需要特殊補0,否則結果為空
  strcat( cResult, "0");
 return cResult;
}

int main ()
{
 printf("Please input 2 digits:\n");
 long a, b;
 scanf("%ld %ld",&a,&b);
 printf("the result is :%s\n",add(a, b));
 return 0;
}

Python程式碼實現如下:

def _main():
 a,b = raw_input("please input the digit a and b\n").split(' ')
 a=int(a)
 b=int(b)
 print("the input",a,b)
 calc(a,b)

def calc(a,b):
 str_result = ""
 pos = 0
 result = a+b
 
 if( result < 0 ):
  str_result += '-'
  pos = 1
 result = abs(result) 
 top = result / 1000000
 if( top > 0 ):
  str_result += str(top)
  str_result += ','
  pos = len(str_result)
 top = result % 1000000
 top = top / 1000
 if( top > 0 or pos > 1 ):
  str_result += str(top)
  str_result += ','
  pos = len(str_result)
 top = result % 1000
 if( top > 0 or pos > 1 ):
  str_result += str(top)
  pos = len(str_result)
 if( pos is 0 ):
  str_result += '0'
 print("result:",str_result)

_main()


正在思考是否有更好的方法