2025-02-18 学习记录--C/C++-PTA 7-25 念数字
一、题目描述 ⭐️
二、代码(C语言)⭐️
/*** 输入一个整数,输出每个数字对应的拼音。当整数为负数时,先输出fu字。*/#include <stdio.h>// 输出 正数 中 各位数 对应的 拼音
void getLetter(int num) {// 10个数字(0 ~ 9)对应的10个拼音(ling ~ jiu)// 定义一个字符串数组,包含10个字符串,每个字符串最大长度为39个字符(加上结尾的'\0')// 这里的40:最长字符是ling,长度为4,共有10个字符,所以最大长度是4*10=40个字符char strArr[10][40] = {"ling","yi","er","san","si","wu","liu","qi","ba","jiu"};// 接收 所输入整数 的各位数,放入numArr数组中(由低位到高位)int numArr[100] = {};// numArr数组中 所含数 的 个数int count = 0;// 获取到 所输入整数 的 各位数while(num != 0) {// 对 所输入整数 取余,获取到 所输入整数 的各位数int n = num % 10;// 将 所输入整数 的各位数 由低位到高位 放入numArr数组中numArr[count] = n;// numArr数组中 所含数 的 个数 加1count++;// 依次处理高位数num /= 10;}// 将 numArr数组中的数 倒序输出for(int i = count - 1; i >= 0; i--) {// 获取到 所输入整数 的 各位数(由高位到低位)int realNum = numArr[i];// 输出 所输入整数 的 各位数(由高位到低位)对应的拼音if(i == 0) {// 若是 最后一位,其后不跟空格printf("%s",strArr[realNum]);} else {// 否则 其后跟空格printf("%s ",strArr[realNum]);}}
}int main() {int N; // 一个整数scanf("%d",&N); // 输入一个整数if(N == 0) {// 如果N是0,直接输出ling字。printf("ling");}else if(N < 0) {// 如果N是负数,先输出fu字。printf("fu ");// 将负数N 化成 正数N1int N1 = N * (-1);// 再继续输出 正数对应的拼音getLetter(N1);} else {// 如果N是正数,则直接输出 对应的拼音getLetter(N);}return 0;
}