2 使用二维数组编程解决实际问题
4-3 1)实验课堂任务(课内完成)
编程要求
编程实现阿拉伯数字转中文大写数字:
①用户输入[10000,999999999]之间的整数(不在范围内的,重新输入);② 输出与该整数各位数字一一对应的中文大写数字形式。
必须借助字符数组实现阿拉伯数字到中文大写数字的转换;
实现效果应尽可能与下图相同。
输入整数[10000,999999999]:6666
输入整数[10000,999999999]:123456789其中文写作:壹贰叁肆伍陆柒捌玖
数组程序设计实践
C语言程序设计
用C语言编程你都觉得好
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
1条回答 默认 最新
关注【以下回答由 GPT 生成】
#include <stdio.h> void convertToChinese(int n) { char *ChineseNumber[] = {"零", "一", "二", "三", "四", "五", "六", "七", "八", "九"}; char *unit[] = {"", "十", "百", "千", "万", "亿"}; char result[20]; // 限定最大长度为9位阿拉伯数字,加上'亿'和终止符 int i = 0, j = 0; int flag = 0, zero = 0; if (n < 10000 || n > 999999999) { printf("输入的整数不在范围内,请重新输入\n"); return; } if (n == 0) { printf("零\n"); return; } // 遍历每一位数字 while (n > 0) { if (n % 10 == 0) { if (zero == 0) { // 如果当前位是0,且上一位不是0,则输出“零” result[i++] = *ChineseNumber[0]; zero = 1; } } else { // 如果当前位不是0,直接将中文大写数字存入result数组 result[i] = *ChineseNumber[n % 10]; zero = 0; i++; // 每个数字后面添加单位 result[i] = *unit[j % 5]; i++; } j++; // 位数加1 n = n / 10; // 将数字右移一位 } // 输出转换后的结果 for (i = i - 1; i >= 0; i--) printf("%c", result[i]); printf("\n"); } int main() { int num; printf("输入整数[10000, 999999999]: "); scanf("%d", &num); convertToChinese(num); return 0; }这是使用C语言编程实现阿拉伯数字转中文大写数字的功能的代码。在这个程序中,我使用了字符数组来存储中文大写数字和单位,并使用while循环遍历每一位数字进行转换。同时,将每个数字后面添加单位,最终输出转换后的中文大写数字结果。希望对你有所帮助。
【相关推荐】
- 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/7601994
- 这篇博客也不错, 你可以看下给一个不多于5位的正整数, 要求:①求出它是几位数; ②分别输出每一位数字; ③按逆序输出各位数字,例如原数为321, 应输出123。谭浩强《C程序设计课后习题》第4章第9题
- 除此之外, 这篇博客: C语言实现反序输出、分解质因数、回文数判断、斐波那契数列、素数判断、零钱换整、求兔子总数中的 3. 找出所有满足以下特性的6位整数:它是一个完全平方数(完全平方数是指该数是某个整数的平方),该数同时也是回文数(回文数是指该数等于它的反序数)。例如,698896是836的平方并且698896是回文数,因此698896是满足所给条件的6位整数。输出所有满足上述条件的6位整数。 部分也许能够解决你的问题。
如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^解决 无用评论 打赏 举报