我要做的是让用户输入一个数字,然后程序以单词形式读回每个数字。例如:
Input: 517
Output: Five One Seven
这是一个简单的命令行工具,使用NSLogs和scanf来获取输入并提供输出,没有太高级。我有它的主旨,但它只适用于一位数字:
#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;
但这会向后输出。
有什么建议吗?
由于
答案 0 :(得分: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;
....
}
}
答案 1 :(得分:0)
因此,您向后创建一个列表然后将其反转,并将该数字读给用户。
用户在性能方面不会有任何差异。
要使用数组执行此操作,您可以查看以下问题:
答案 2 :(得分:0)
NSNumberFormatter
有一个样式,可以帮助你处理它。
NSNumberFormatter *numberFormatter = [[NumberFormatter alloc] init];
numberFormatter.numberStyle = NSNumberFormatterSpellOutStyle;