编写一个程序,用于接受从终端输入的证书,提取并采用英语现实这个数的每一个数字。如输入932 应显示:
nine
three
two
下面是我的代码,不知道为什么输出的时候,只能输出一位,比如输入932,输出nine。
求大神指导~
int main(int argc, const char * argv[]) {
@autoreleasepool {
// insert code here...
int x,y,n,i,number;
NSLog(@"please input a number:");
scanf("%i",&x);
n=1;
i=1;
y=x;
while (y/10!=0)
{
y/=10;
n*=10;
i++;
}
while(i!=0)
{
number=x/n;
switch (number) {
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(@"nigh");
break;
}
n/=10;
i--;
}
}
return 0;
}
你这个写的真的槽点多多,分类是iOS不是ISO,另外这个主要是一个语法问题,扯不上iOS,变量名惨不忍睹,这个题给你个思路,拿到的数据放入数组,每次拿出来一个Switch就好了
你最后好歹把x剪一下。除了第一次是9。后面就93了。在想什么.而且这个和iOS有半毛钱关系
大概,用个数组就行了。
原理是用数字去对应数组下标
。
Obj-C的语法不会。
写个JAVA,大致是一样的。
public static void main(String args[]) {
String str = "932";
//将接收来的证书直接分割为一个一个字符,然后循环
for (char num : str.toCharArray()) {
System.out.println(numToEn(num));
}
}
private static String numToEn(char num){
String[] arr = {"one","two","three","four","five","six","seven","eight","nine","ten"};
return arr[Integer.parseInt(String.valueOf(num))-1];
}
输出:
nine
three
two
仅供参考。
Ps. 能不用switch的,尽量不用吧,还有变量命名尽量有意义,不要xyznmi这种东西。
#include <stdio.h>
int main(int argc, const char * argv[]) {
int x = 0,length = 0,y;
printf("Please input a number:");
scanf("%d",&x);
y=x;
while (y/10 != 0) {
length++;
y = y/10;
}
for (int i=length; i >= 0; i--) {
int tmp = 1;
for (int j = 0; j < i; j++) {
tmp *= 10;
}
switch (x / tmp) {
case 1:
printf("one\n");
break;
case 2:
printf("two\n");
break;
case 3:
printf("three\n");
break;
case 4:
printf("for\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;
case 0:
printf("zore\n");
break;
}
x = x%tmp;
}
return 0;
}
取余操作不是更简单!