1002. 写出这个数 (20)

2018-01-27 11:52:47

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

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

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

输入样例:

1234567890987654321123456789

输出样例:

yi san wu

路:
1、<string.h>是字符串头文件,比如说用strlen()就得是在<string.h>库中包含。

2、一维数组char n[3]指的是n是无数据的,n是一个可以存储3个字符的一维字符数组

3、二维数组:二维数组优先按行存储
比如:a[2][3]:a[0][0] a[0][1] a[0][2]
a[1][0] a[1][1] a[1][2]
那么按行排列的结果是a[0][0] a[0][1] a[0][2] a[1][0] a[1][1] a[1][2]

4、字符'0':char c = '0';   它的ASCII码实际上是48。内存中存放表示:00110000
这里面字符'0'的作用一般是将字符型的转化为整数型,比如说char n[1]='1' int i=n[1]-'0' 这样i为1

字符'\0' : ASCII码为0,表示一个字符串结束的标志。这是转义字符。

整数0 :ASCII码为0,字符表示为空字符,NULL;数值表示为0;内存中表示为:00000000

5、scanf和gets区别:
(1)scanf()可以同时接受多个字符串,而gets()一次只能接受一个字符串
(2)scanf()可以不能接受带空格的字符串,而gets()能接受带空格的字符串。
(3)scanf()不能接受长度为0的字符串,会自动忽略开头的所有空格,并且以空格、换行符、回车结束输入。而gets()能接受长度为0的字符串,
不会自动忽略开头的所有空格或回车,并以回车结束。

6、如果要让输出带空格的话,在“%d ”引号里面呢加入空格
#include<stdio.h>
#include<string.h>
int main()
{
    char n[101];
//     能容纳101个字符,因为包含\0 
    int i,s,sum=0,j=0;
    int result[3];  
//    即使每位字符的数值都是最大数9,那么相加的总和最多也就是900,所以result最多只有三位 
    char py[10][5]={"ling", "yi", "er", "san", "si", "wu", "liu", "qi", "ba", "jiu"};
    scanf("%s",&n);
    //gets(n);
//    因为一维数组无数据,所以要取得,这里面scanf和gets看上面 
//第一步:算出每个字符数值的总和 
    for(i=0;i<strlen(n);i++){
        sum+=n[i]-'0';
    } 
//    printf("%d",sum);
//第二部:找出总和的每个字符数值 
    while(sum){
//        要想循环的条件是sum不为0 
       result[j++]=sum%10;
       sum/=10;
    }
//第三步:循环输出result
    for(s=j-1;s>0;s--){
        printf("%s ",py[result[s]]);
    }
    printf("%s",py[result[0]]);
    return 0;
}
 
 

 

 

转载于:https://www.cnblogs.com/zzzz07/p/8322224.html

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值