读入一个正整数 n,计算其各位数字之和,用汉语拼音写出和的每一位数字。
输入格式:
每个测试输入包含 1 个测试用例,即给出自然数 n 的值。这里保证 n 小于 10(100)次方。
输出格式:
在一行内输出 n 的各位数字之和的每一位,拼音数字间有 1 空格,但一行中最后一个拼音数字后没有空格。
输入样例:
1234567890987654321123456789
输出样例:
yi san wu
分析:简单题
1,测试用例很大,必须用字符,要么用字符数组进行储存,也可以一个一个读入字符,直接相加,不设立数组,代码更加简洁快速
2,求出每一位的和之后,要用拼音表示,建议用switch语句
代码如下:
#include<stdio.h>
void print(int k)//引用函数,将数字以拼音打印
{
switch (k)
{
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;
}
}
int main()
{
//输入
char a;//一个一个读入字符
int sum = 0;//每一位的和
a = getchar();
while (a != '\n')
{
sum = sum + a - '0';//注意读入的是字符不要直接相加,减去字符0,就是对应的数字
a = getchar();//更新字符a
}
//求和
int arr[1000] = { 0 };//把sum就是 求得的和 的每一位存起来
int i = 0;
for (i = 0; sum != 0; i++)
{
arr[i] = sum % 10;
sum /= 10;
}
//输出打印
//注意是从最高位开始打印滴
for (i--; i > 0; i--)//i--是为了抵消上个for循环的结束是加上的1
{
//print(arr, j);输出
print(arr[i]);//函数-》打印
//看上面的两种方法,显然第二种会更好!!
printf(" ");
}
print(arr[0]);
return 0;
}
这个题代码的思路是很清晰的,然后一步一步来就好了