我试图反转用户输入的数字,以便我可以按正确的顺序打印出来。假设用户输入957,程序应该打印出来 九 五 七 但是,我不明白我应该如何实际翻转这个数字。这就是我到目前为止所拥有的:
int num;
int revNum;
int rem;
printf("Input a number:");
scanf("%i", &num);
while(num!=0)
{
rem = num%10;
revNum = revNum*10+rem;
num/=10;
switch(rem)
{
case 0:
printf("zero\n");
break;
case 1:
printf("one\n");
break;
case 2:
printf("two\n");
break;
case 3:
printf("three\n");
break;
case 4:
printf("four\n");
break;
case 5:
printf("five\n");
break;
case 6:
printf("six\n");
break;
case 7:
printf("seven\n");
break;
case 8:
printf("eight\n");
break;
case 9:
printf("nine\n");
break;
}
}
其中rem是余数,revNum是反转的数字,num是数字。请帮助,并提前感谢!
答案 0 :(得分:0)
编辑我在问题标题中错过了“没有数组”,我会在这里留下答案......
如果您的问题正在扭转数字,那么look at this answer。您必须先撤消该号码,然后将您的算法与switch/case
一起打印,或使用NSNumberFormatter
,如下所述。
您已经标记了您的问题Objective-C,但您的代码是纯粹的C.让我们首先通过实际使用Objective-C使其更清洁:
使用NSNumberFormatter
代替您的switch语句:
NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
numberFormatter.numberStyle = NSNumberFormatterSpellOutStyle;
您现在可以将数字转换为[numberFormatter stringFromNumber:@(rem)]
的字符串,它也适用于不同的区域设置。
现在我们有NSString
个对象,我们可以把它们放在一个数组中:
NSMutableArray *strings = [[NSMutableArray alloc] init];
while(num!=0) {
int rem = num%10;
num/=10;
[strings addObject:[numberFormatter stringFromNumber:@(rem)]];
}
现在可以反向迭代字符串:
(for NSString *s in strings.reverseObjectEnumerator) {
NSLog(@"%@", s);
}
或者简单地在没有循环的情况下反转数组:
NSArray *result = strings.reverseObjectEnumerator.allObjects