最新消息: USBMI致力于为网友们分享Windows、安卓、IOS等主流手机系统相关的资讯以及评测、同时提供相关教程、应用、软件下载等服务。

1002 写出这个数 (C语言实现)

互联网 admin 3浏览 0评论

1002 写出这个数 (C语言实现)

题目描述:

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

输入格式:

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

输出格式:

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

输入样例:

1234567890987654321123456789

输出样例:

yi san wu

思路:

(1)关于数据类型:n的数值过大不能定义为int型整数或数组(元素过多)直接输入,比较好的思路是定义一个char型的数组str储存输入的数字;
(2)关于输入:10^100的大小为

即1后面有100个0共101位数字,故str元素个数应大于或等于101,在标准输入中无法事先知道输入的长度,必须手动输入一个字符,表示到达EOF,储存读入的字符用到了以下常用做法:

while(scanf("%s",str) != EOF);

(3)关于字符串的转化:字符串转化为整数数值可以采用以下方式

int num=str[i]-'0';

(4)关于求整数各进制位上的数字:

n=num%10;
num=num/10;

(5)关于输出格式:注意最后一个拼音后无空格
(6)可以借鉴的地方:用二维数组pinyin存放了0到9对应的拼音名称,同时将之前求得的各进制位上的数字组成的数组weishu当成数组pinyin的元素大大节省了空间和时间。

AC的代码

//   Date:2020/4/29
//   Author:xiezhg5
#include <stdio.h>
#include <string.h>
int main(void) {int i,num,sum=0,count=0;int weishu[5];char pinyin[][5]= {"ling","yi","er","san","si","wu","liu","qi","ba","jiu"};char str[101];//读入字符并转化为整数数值 while(scanf("%s",str) != EOF);for(int i=0; i<strlen(str); i++) {sum=sum+str[i]-'0';}//求进制位上的数字 while(sum!=0) {weishu[count]=sum%10;sum=sum/10;count++;}//格式输出(最后一个拼音后无空格) for(int i=count-1; i>0; i--)printf("%s ",pinyin[weishu[i]]);printf("%s",pinyin[weishu[0]]);return 0;
}

1002 写出这个数 (C语言实现)

题目描述:

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

输入格式:

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

输出格式:

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

输入样例:

1234567890987654321123456789

输出样例:

yi san wu

思路:

(1)关于数据类型:n的数值过大不能定义为int型整数或数组(元素过多)直接输入,比较好的思路是定义一个char型的数组str储存输入的数字;
(2)关于输入:10^100的大小为

即1后面有100个0共101位数字,故str元素个数应大于或等于101,在标准输入中无法事先知道输入的长度,必须手动输入一个字符,表示到达EOF,储存读入的字符用到了以下常用做法:

while(scanf("%s",str) != EOF);

(3)关于字符串的转化:字符串转化为整数数值可以采用以下方式

int num=str[i]-'0';

(4)关于求整数各进制位上的数字:

n=num%10;
num=num/10;

(5)关于输出格式:注意最后一个拼音后无空格
(6)可以借鉴的地方:用二维数组pinyin存放了0到9对应的拼音名称,同时将之前求得的各进制位上的数字组成的数组weishu当成数组pinyin的元素大大节省了空间和时间。

AC的代码

//   Date:2020/4/29
//   Author:xiezhg5
#include <stdio.h>
#include <string.h>
int main(void) {int i,num,sum=0,count=0;int weishu[5];char pinyin[][5]= {"ling","yi","er","san","si","wu","liu","qi","ba","jiu"};char str[101];//读入字符并转化为整数数值 while(scanf("%s",str) != EOF);for(int i=0; i<strlen(str); i++) {sum=sum+str[i]-'0';}//求进制位上的数字 while(sum!=0) {weishu[count]=sum%10;sum=sum/10;count++;}//格式输出(最后一个拼音后无空格) for(int i=count-1; i>0; i--)printf("%s ",pinyin[weishu[i]]);printf("%s",pinyin[weishu[0]]);return 0;
}

与本文相关的文章

发布评论

评论列表 (0)

  1. 暂无评论