1002. 写出这个数(PAT Basic)

本文介绍了一种计算整数位数的方法,并通过C语言实现了一个程序,该程序不仅可以计算输入数字的位数,还能将计算结果转换成中文拼音进行输出。

主要学习了计算一个整数位数的方法

1.对数法,这是我觉得最简洁的方法

digits = log10(num)+1;
2.整除法,利用c里整数除法的性质,除以10直到被除数等于0

digits = 1;
tmp = num;
while ( tmp/=10 )
      digits++;

完成程序如下:

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

const char pinyin[10][5] = {"ling", "yi", "er", "san", "si",
                            "wu", "liu", "qi", "ba", "jiu"};

int main()
{
    char ch;
    int i, tmp, den;
    int sum = 0, digits;
    
    /* calculate the sum of the input */
    while ((ch = getchar()) != '\n')
        sum += atoi(&ch);
    
    /* get the digits of result */
    digits = log10(sum)+1;
    
    /* output */
    den = pow(10,digits-1);
    tmp = sum;
    for (i = 1; i <= digits; i++) {
        printf("%s%c", pinyin[tmp/den], (i == digits) ? '\n' : ' ');
        tmp %= den;
        den /= 10;
    }

    return 0;
}



                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值