PAT Basic 1002. 写出这个数
PAT Basic 1002. 写出这个数
1. 题目描述:
读入一个正整数 n,计算其各位数字之和,用汉语拼音写出和的每一位数字。
2. 输入格式:
每个测试输入包含 1 个测试用例,即给出自然数 n 的值。这里保证 n 小于
3. 输出格式:
在一行内输出 n 的各位数字之和的每一位,拼音数字间有 1 空格,但一行中最后一个拼音数字后没有空格。
4. 输入样例:
1234567890987654321123456789
5. 输出样例:
yi san wu
6. 性能要求:
Code Size Limit
16 KB
Time Limit
400 ms
Memory Limit
64 MB
思路:
首先这里保证输入n小于
然后就是对读入的字符串逐字符进行处理就好,比较直接的思路。
最后为了输出数字的拼音,定义了一个char指针数组指向各数字拼音的字面量,避免了直接定义二维数组的存储空间浪费。
My Code:
#include <stdio.h>
int main(void)
{
char * pinyin[] = {"ling", "yi", "er", "san",
"si", "wu", "liu", "qi",
"ba", "jiu"};
char n[100]; // 这里好像应该定义101的,但100也accepted了。由n的上限可推得n最多有100位数字,
int sum = 0; // 但注意字符串还要存储末尾的空字符(null character)
char * pchar;
int result[4]; // 这里其实最多3个元素,因为假设n的100位全为9,其各位数字之和的最大值为900
unsigned char count = 0;
scanf("%s", n);
pchar = n;
while(*pchar != '\0') // 这里可以直接写while(*pchar),空字符的ascii码为0
{
sum += *pchar - '0';
pchar++;
}
while(sum) // 这里计算总和的各位数字
{
result[count] = sum % 10;
sum /= 10;
count++;
}
while(count > 1)
{
printf("%s ", pinyin[result[count-1]]);
count--;
}
printf("%s\n", pinyin[result[0]]);
return 0;
}
分类:
PAT Basic Level
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现