2012-03-30 27 views
0

我想要做的是讓用戶輸入一個數字,然後程序以字的形式讀回每個數字。例如:整數從輸入到英文

Input: 517 

Output: Five One Seven 

這是一個簡單的命令行工具,使用NSLogs和scanf得到輸入,並提供輸出,沒有什麼太先進。我有它的JIST,但它只是一個位數的工作:以多位數的工作

#import <Foundation/Foundation.h> 

int main (int argc, const char * argv[]) { 
    @autoreleasepool { 

     int number; 

     NSLog(@"Type your number."); 
     scanf("%i", &number); 


     if (number == 0) { 
      NSLog(@"Zero"); 
     } else if (number == 1){ 
      NSLog(@"One"); 
     } else if (number == 2) { 
      NSLog(@"Two"); 
     } else if (number == 3) { 
      NSLog(@"Three"); 
     } else if (number == 4) { 
      NSLog(@"Four"); 
     } else if (number == 5) { 
      NSLog(@"Five"); 
     } else if (number == 6) { 
      NSLog(@"Six"); 
     } else if (number == 7) { 
      NSLog(@"Seven"); 
     } else if (number == 8) { 
      NSLog(@"Eight"); 
     } else if (number == 9) { 
      NSLog(@"Nine"); 
     } 

    } 
    return 0; 
} 

不過,我有問題。我正在考慮使用類似這樣的東西來分割它們:

  right_digit = number % 10; 
     NSLog(@"%i", right_digit); 
     number /= 10; 

但是會輸出倒退。

有什麼建議嗎?

感謝

+2

這個功課? – 2012-03-30 02:10:07

+0

不,我正在閱讀一本自己的教科書,試圖在Objective-C語言中使用iOS應用程序中的應用程序。 – JTApps 2012-03-30 02:13:39

+0

這是一個比這更多的有趣工具: https:// helloacm。 com/tools/convert-arabic-numerals-to-english-words/ – 2017-05-07 02:45:34

回答

1

使用遞歸

void printNumber(int a){ 
    if(a/10 > 0){ 
    printNumber(a/10); 
    } 

    int digit = a%10; 
    switch(digit){ 
    { 
    case 0: 
     NSLog(@"Zero "); 
     break; 
    case 1: 
     NSLog(@"One "); 
     break; 
    case 2: 
     NSLog("Two "); 
     break; 
    .... 
    } 

} 
0

所以你向後創建一個列表,然後扭轉它,並讀取用戶的數量。

用戶不會看到任何性能差異。

要使用數組,你可以看看這個問題,做到這一點:

How can I reverse a NSArray in Objective-C?

+0

沒有工作..未能打印任何東西 – JTApps 2012-03-30 02:24:26

+0

我能夠得到它打印數字..但倒退。 – JTApps 2012-03-30 02:38:20

+0

反轉數組,然後從索引0讀到最後的數字。 – 2012-03-30 13:48:12

0

NSNumberFormatter有一個造型器,可以幫助爲您處理。

NSNumberFormatter *numberFormatter = [[NumberFormatter alloc] init]; 
numberFormatter.numberStyle = NSNumberFormatterSpellOutStyle;