1002. 写出这个数 (20)

来源:互联网 发布:java技术培训哪好 编辑:程序博客网 时间:2024/06/05 08:07

读入一个自然数n,计算其各位数字之和,用汉语拼音写出和的每一位数字。

输入格式:每个测试输入包含1个测试用例,即给出自然数n的值。这里保证n小于10100

输出格式:在一行内输出n的各位数字之和的每一位,拼音数字间有1 空格,但一行中最后一个拼音数字后没有空格。

输入样例:
1234567890987654321123456789
输出样例:

yi san wu

-------------------------

#include <stdio.h>#include <stdlib.h>int main(){    char a[100];    scanf("%s",a); //这里参考了搜索的结果    int i=0;    int sum=0;    while(a[i]>='0'&&a[i]<='9')//若第n+1位字符也在此区间内,可能会出错,应该怎么做呢?不解。    {        a[i]=a[i]-'0'; //将字符转化为数并相加        sum+=a[i];        i++;    }    int bei=sum;//声明变量bei防止sum变化    int k=1;    while(bei>9)//获得与sum位数相同的10^n    {        bei=bei/10;        k*=10;    }    int j;//使用上文的i也可以,    while(k>0)    {        j=sum/k;        sum%=k;        k/=10;        switch(j)        {            case 0:printf("ling");break;            case 1:printf("yi");break;            case 2:printf("er");break;            case 3:printf("san");break;            case 4:printf("si");break;            case 5:printf("wu");break;            case 6:printf("liu");break;            case 7:printf("qi");break;            case 8:printf("ba");break;            case 9:printf("jiu");break;        }        if(k!=0)printf(" ");//判断是否输出空格        //printf("j=%d,sum=%d,k=%d\n",j,sum,k);        //测试代码    }    return 0;}


scanf("%s",&a);与scanf("%s",a);的区别是什么

原创粉丝点击