【无标题】pat b1002

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

 

输入格式:

每个测试输入包含 1 个测试用例,即给出自然数 n 的值。这里保证 n 小于 10 的100次方 。

 

输出格式:

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

 

输入样例:

1234567890987654321123456789

输出样例:

yi san wu

 

 

 

 

#include<stdio.h>

#include<string.h>

void solve(int *a,int n) 进行倒序输出操作

{

 int i,s;

 for(i=n;i>=0;i--){

  s=a[i];

  switch (s) {

    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;

    case 0:

     printf("ling");

     break;

   }

   if(i!=0)

   printf(" "); 按照题目要求,每个拼音后有空格, 但是最后一个没有

}

}

int main()

{

 char str[100]; 通过一个字符串数组存放一个比较大的整数,因为涉及到数中的每个数,所以考虑用数组方便对每位数进行加和,

 

 int m=0,a[100],n=0;     a数组存放的是加和后的数的每位数字,但由于是经过取余操作实现的,为了正向输出,又构造了一个solve函数

 

 scanf("%s",str);

 for(size_t i=0;i<strlen(str);i++) strlen 与size_t 相匹配

  m=m+str[i]-'0'; 得到加和后的数字m

 while(m)

 {

  a[n++]=m%10; 进行取余操作

  m=m/10;

 }

 solve(a,n-1);

 return 0;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值