5.10-快手实习笔试编程题1

题目:
将输入的数字表示出大写数字[0,99999],零十百千万-LSBQW。如100-1B;12001-1W2QL1;11对应1S1而不是S1
代码如下:

#include<stdio.h>
int main(){
    int num;  //输入数字
    int digit[5];  //每位数字
    char dying[5] = {'L','S','B','Q','W'};  //对应表
    int ct=0;
    int flag=0;
    int p=0;
    while(scanf("%d",&num)!=EOF){
        if(num<0 || num>99999)
            break;
        if(num==0)
            printf("L");
        while(num>0){
            digit[ct]=num%10;
            num/=10;
            ct++;
        }
        for(int i=ct-1;i>=0;i--){
            if(digit[i]==1 && i==1 && ct==2)
                printf("1S");
            else if(digit[i]>0 && i>0)
            {
                printf("%d%c",digit[i],dying[i]);
                flag=0;
            }
            else if(i==0 && digit[i]!=0){
                printf("%d",digit[i]);
            }
            else if(i>0 && flag==0){
                for(int j=0;j<i;j++){
                    if(digit[j]>0){
                        p=1;
                        break;
                    }
                }
                if(p){
                    printf("%c",dying[0]);
                    flag=1;
                }
            }
        }
        printf("\n");
    }
    return 0;
}
点赞