0

我需要知道如何以正确的顺序将整数拆分为数字,例如 1234 显示为 1 2 3 4。我希望它拆分整数并将数字显示为单词,所以 1234 = 1 2 3 4 = 一二三四。这就是我到目前为止所得到的。它拆分一个整数并将数字显示为单词,但它们的顺序相反。对不起,如果它有点乱。另外我才刚刚开始学习目标 c,所以我还不知道数组和所有这些东西。

 int number, right_digit, counter;

    counter = 1;

    NSLog(@"Enter your number");

    while (counter != 0) {
    scanf("%i", &number);


    do {

  right_digit = number % 10;
  number /= 10;



    if (right_digit == 1)
        NSLog(@"one");

    else if (right_digit == 2)
        NSLog(@"two");

    else if (right_digit == 3)
        NSLog(@"three");

    else if (right_digit == 4)
        NSLog(@"four");

    else if (right_digit == 5)
        NSLog(@"five");

    else if (right_digit == 6)
        NSLog(@"six");

    else if (right_digit == 7)
        NSLog(@"seven");

    else if (right_digit == 8)
        NSLog(@"eight");

    else if (right_digit == 9)
        NSLog(@"nine");

    else if (right_digit == 0)
        NSLog(@"zero"); 

    }
    while (number != 0);

    }
}
return 0;
}
4

3 回答 3

4
NSInteger num=1234;
NSInteger temp=num;

NSMutableArray *digits=[NSMutableArray new];
while(temp >0){
    NSInteger digit=temp%10; //4
    temp/=10;//123
    digits[digits.count]=@(digit);
}

for(NSNumber *d in [digits reverseObjectEnumerator]){
    switch([d integerValue]){
         case 0: NSLog(@"Zero"); break;
         case 1: NSLog(@"One"); break;
         case 2: NSLog(@"Two"); break;
         case 3: NSLog(@"Three"); break;
         case 4: NSLog(@"Four"); break;
         case 5: NSLog(@"Five"); break;
         case 6: NSLog(@"Six"); break;
         case 7: NSLog(@"Seven"); break;
         case 8: NSLog(@"Eight"); break;
         case 9: NSLog(@"Nine"); break;
    }
}
于 2013-03-31T11:23:08.383 回答
3

你这样做基本上是正确的,除了你应该在浏览原始号码时存储单词(或数字),然后在打印它们时“向后播放”。完成此操作的最简单方法是使用NSMutableArray: 在查看号码时向其中添加单词,然后以相反的顺序迭代数组以进行打印。

一个注意事项是关于您对switch: 的使用,如果您在所有情况下都执行相同的操作,并且只有您的数据不同,您应该使用数组或字典进行查找,如下所示:

NSString *digitWords[] = {@"zero", @"one", @"two", @"three", ...};

有了这个数组,你可以调用

NSLog("%@", digitWords[digit]);

并摆脱switch声明。

于 2013-03-31T11:19:48.763 回答
2

刚刚将 Anoop Vaidya 的答案修改为准确的答案

NSInteger num=1234567890;
NSInteger temp=num;

NSMutableArray *digits=[NSMutableArray new];
while(temp >0){
    NSInteger digit=temp%10; //4
    temp/=10;//123
    [digits addObject:[NSString stringWithFormat:@"%d",digit]];

}

NSMutableArray *show = [NSMutableArray new];

for(NSNumber *d in [digits reverseObjectEnumerator]){
    switch([d integerValue]){
        case 0:[show addObject:@"Zero"];    break;
        case 1:[show addObject:@"One"];     break;
        case 2:[show addObject:@"Two"];     break;
        case 3:[show addObject:@"Three"];   break;
        case 4:[show addObject:@"Four"];    break;
        case 5:[show addObject:@"Five"];    break;
        case 6:[show addObject:@"Six"];     break;
        case 7:[show addObject:@"Seven"];   break;
        case 8:[show addObject:@"Eight"];   break;
        case 9:[show addObject:@"Nine"];    break;
    }
}
NSLog(@"%d=%@",num,[show componentsJoinedByString:@", "]);
于 2013-04-01T13:58:07.220 回答