ios简单问题,求大神回答。。

 kk1049057 发布于 2022-10-29 14:22

编写一个程序,用于接受从终端输入的证书,提取并采用英语现实这个数的每一个数字。如输入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;

}

5 个回答
  • 取余操作不是更简单!

    2022-10-30 15:29 回答
  • 大概,用个数组就行了。
    原理是用数字去对应数组下标
    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这种东西。

    2022-10-30 15:42 回答
  • 你最后好歹把x剪一下。除了第一次是9。后面就93了。在想什么.而且这个和iOS有半毛钱关系

    2022-10-30 15:43 回答
  • 你这个写的真的槽点多多,分类是iOS不是ISO,另外这个主要是一个语法问题,扯不上iOS,变量名惨不忍睹,这个题给你个思路,拿到的数据放入数组,每次拿出来一个Switch就好了

    2022-10-30 15:45 回答
  • #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;
    }
    2022-10-30 15:47 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有