PAT乙级 读入一个正整数 n, 计算其各位数字之和, 用汉语拼音写出和的每一位数字 输入格式: 每个测试输入包含 1 个测试用例,即给出自然数 n 的值。这里保证 n 小于 10的100方 输出格式: 在一行内输出 n的各位数字之和的每一位,拼音数字间有1 空格,但一行中最后一个拼音数字后没有空格。
读入一个正整数 n, 计算其各位数字之和, 用汉语拼音写出和的每一位数字
输入格式:
每个测试输入包含 1 个测试用例,即给出自然数 n 的值。这里保证 n 小于 10的100方
输出格式:
在一行内输出 n的各位数字之和的每一位,拼音数字间有1 空格,但一行中最后一个拼音数字后没有空格。)
#include<stdio.h>
int main()
{
int m=0,i=0,n=0,x=0;
int a[3];
//指针数组存放数字对应的拼音
char*b[10]={"ling","yi","er","san","si","wu","liu","qi","ba","jiu"};
//使用getchar获得输入的数字的每一位并计算和,直到遇到换行符结束
char ch;
while(ch!='\n'){
ch=getchar();
if(ch=='\n'){
break;
}
m+=(ch-'0');
}
//将和的每一位存到数组a中,10的100次方最大为3位数
for(i=0;m!=0;i++){
a[i]=m%10;
m/=10;
}
// 将数组a每一位转换为拼音输出,其中最后一位不输出空格
for(i-=1;i>=0;i--){
x=a[i];
b[x];
printf("%s",b[x]);
if(i!=0){
printf(" ");
}
}
return 0;
}
运行结果如下:
其中主要使用指针数组char *b,char *b定义了一个char型的指针,它只知道所指向的内存单元,可用%s输出所指字符串。
菜鸟教程讲解:https://www.runoob.com/cprogramming/c-array-of-pointers.html