c语言编程练习题:7-83 币值转换
作者:yunjinqi   类别:    日期:2023-05-31 10:00:29    阅读:431 次   消耗积分:0 分    

image.png

#include<stdio.h>
#include<string.h>
 
int main()
{
	char price[10];
	if (scanf("%s", price)!=EOF){
        int cnt = strlen(price); // 字符串长度即输入位数 
        int i; 
        char dig, bit;
        for( i=0; i<cnt ; i++){
            dig = price[i]-'0'+'a'; // 数字转换 
            switch( cnt-i ){ // 位数转换 
                case 9: bit = 'Y'; break;
                case 8: bit = 'Q'; break; 
                case 7: bit = 'B'; break; 
                case 6: bit = 'S'; break; 
                case 5: bit = 'W'; break; 
                case 4: bit = 'Q'; break; 
                case 3: bit = 'B'; break; 
                case 2: bit = 'S'; break; 
                case 1: bit = '\n'; break; 
            }
            // 汉语说话习惯:0后不加位,在中间段有相连0只读出1个0,末尾段相连0直接忽略,注意万的位数一定要读 
            price[-1] = '1';
            if( price[i]!='0' ){
                printf("%c%c", dig, bit); 
            } else { // 0位 
                if( cnt==1 ){
                    printf("%c\n", dig); // 最小个位数0 
                }
                if( cnt-i==5 ){ // 万位一定需要输出 
                    printf("%c", bit);
                } 
                if( price[i-1]!='0' ){ // 本位为第一个0开始的位置
                    int j;
                    int cnt0 = 0; // 记录从i位起向后0的位数 
                    for( j=i; j<cnt; j++){
                        if( price[j]=='0' ){
                            cnt0 ++; 
                        }
                    } 
                    if( cnt0!=cnt-i ){ // 从i位起并非都是0,则输出第一个0位 
                        printf("%c", dig);
                    }
                } 
            }
        }
    }else{
        printf("input wrong");
    }
	return 0; 
}


版权所有,转载本站文章请注明出处:云子量化, http://www.woniunote.com/article/208
上一篇:c语言编程练习题:7-82 打印沙漏
下一篇:c语言编程练习题:7-84 连续因子