PTA L1-007 念数字 (10分)

还是自己太菜了,只能用笨方法求解,过程曲折,有个问题一直不明白,在这里记录下来,以便以后翻看。

include <stdio.h>

include <stdlib.h>

int main()
{
int N;
int arr[100]; //此处当定义为 int arr[] = {0};时就会是程序的输出结果变为:ling si;(此时输入为:1234)难以理解,还是需要查看一下相关的定义。也就是不规定数组大小时,输出结果就是错误的。
int i=0;
scanf("%d",&N);

if(N < 0){        //   如果为负数 就先打印fu,然后变成正数;
    printf("fu ");
    N = -N;
}
if(N == 0) //如果为0,直接打印0;
{
    printf("ling");
}

   while(N){    //用取余数的方法求出每一位然后放到数组中(注意此时是将N倒序放到数组中);
    arr[i] = N % 10;
    N = N / 10;
    i++;
    }

for(int j=i-1;j >= 0;j--)//     循环中用switch判断每一位的输出,此时输出正好就是将原来的倒序输入变为正序输出,很方便。
{
   switch(arr[j])
   {
   case 0:
        printf("ling");break;
   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;
   }
  if(j != 0)
    printf(" "); // 每输出一次就打印一个空格,知道最后一位输出不打印空格。
}
 printf("\n");//最后的换行,可有可无。
return 0;

}

代码还有许多可以优化的地方,使其更加美观。。

原文地址:https://www.cnblogs.com/yinanweike/p/10705209.html

时间: 2024-11-10 13:34:26

PTA L1-007 念数字 (10分)的相关文章

L1-007 念数字 (10分)

L1-007 念数字 (10分) 输入一个整数,输出每个数字对应的拼音.当整数为负数时,先输出 fu 字.十个数字对应的拼音如下: 0: ling 1: yi 2: er 3: san 4: si 5: wu 6: liu 7: qi 8: ba 9: jiu 输入格式: 输入在一行中给出一个整数,如:1234. 提示:整数包括负数.零和正数. 输出格式: 在一行中输出这个整数对应的拼音,每个数字的拼音之间用空格分开,行末没有最后的空格.如 yi er san si. 输入样例: -600 输出

PTA 7-14 逆序输出数的各位数字 (10分)

从键盘上输入一个正整数,逆序输出该数的各位数字. 例如:输入123,输出321. 输入格式: 直接输入一个正整数,没有其它任何附加字符. 输出格式: 直接输出一结果,没有其它任何附加字符. 输入样例: 123 输出样例: 321 作者: 王跃萍 单位: 东北石油大学 时间限制: 400 ms 内存限制: 64 MB 代码长度限制: 16 KB 1 import java.util.Scanner; 2 public class Main { 3 public static void main(S

PTA 7-6 计算阶乘和 (10分)

对于给定的正整数N,需要你计算 S=1!+2!+3!+...+N!. 输入格式: 输入在一行中给出一个不超过10的正整数N. 输出格式: 在一行中输出S的值. 输入样例: 3 输出样例: 9 作者: 陈越 单位: 浙江大学 时间限制: 400 ms 内存限制: 64 MB 代码长度限制: 16 KB 1 import java.io.BufferedReader; 2 import java.io.IOException; 3 import java.io.InputStreamReader;

PTA乙级 (*1044 火星数字 (20分))

1044 火星数字 (20分) https://pintia.cn/problem-sets/994805260223102976/problems/994805279328157696 #include <iostream> #include <cstdio> #include <cstring> #include <string> #include <cmath> #include <algorithm> using namesp

念数字

题目 念数字 (10 分) 输入一个整数,输出每个数字对应的拼音.当整数为负数时,先输出fu字.十个数字对应的拼音如下: 0: ling 1: yi 2: er 3: san 4: si 5: wu 6: liu 7: qi 8: ba 9: jiu 输入格式: 输入在一行中给出一个整数,如: 1234 提示:整数包括负数.零和正数. 输出格式: 在一行中输出这个整数对应的拼音,每个数字的拼音之间用空格分开,行末没有最后的空格.如 yi er san si 输入样例: -600 输出样例: fu

1181: 念数字

台州ACM:1181: 念数字 描述 编一个"念数字"的程序,它能让计算机完成以下工作:当你输入一个0至99 之 间的数后,计算机就会用汉语拼音印出这个数. 如果输入的数不在0到99 之间,就印出"CUO LE". 注:为了使不熟悉汉语拼音的同学也能做这个题,把"零,一,二,三,--,九,十"的 拼音法写在下面. 零 LING 一 YI 二 ER 三 SAN 四 SI 五 WU 六 LIU 七 QI 八 BA 九 JIU 十 SHI 输入 输入数

PAT 团体程序设计天梯赛-练习集 L1-007. 念数字

输入一个整数,输出每个数字对应的拼音.当整数为负数时,先输出“fu”字.十个数字对应的拼音如下: 0: ling 1: yi 2: er 3: san 4: si 5: wu 6: liu 7: qi 8: ba 9: jiu 输入格式: 输入在一行中给出一个整数,如: 1234 . 提示:整数包括负数.零和正数. 输出格式: 在一行中输出这个整数对应的拼音,每个数字的拼音之间用空格分开,行末没有最后的空格.如 yi er san si. 输入样例: -600 输出样例: fu liu ling

网易云课堂_C++程序设计入门(上)_第3单元:更上一层楼 – 超越C的语法_第3单元作业【2】-在线编程(难度:易;10分)

1 编程序,学习使用类型转换运算符 static_cast(10分) 题目难度:易   题目内容: 编程序,读入两个数,然后计算两个数的除法结果.读入的第一个数a是整数:读入的第二个数b是双精度浮点数: 将b转换为整数,然后计算整数除法 a/b,结果记为x: 将a转换为双精度浮点数,然后计算双精度浮点数除法 a/b ,结果记为 y 将a转换为双精度浮点数,将b转换为整数然后再转换为双精度浮点数,然后计算双精度浮点数除法 a/b,结果记为z 输出x.y.z的值. 本程序无需考虑除数为0.结果溢出等

抱团App iOS版1.6已于5月19日0点10分发布

抱团App iOS版1.6已于5月19日0点10分发布, App Store 下载地址:https://itunes.apple.com/cn/app/bao-tuan-tuan-gou-jing-pin/id789571099?ls=1&mt=8 欢迎各种吐槽,技术交流,等等. 抱团App iOS版1.6已于5月19日0点10分发布,布布扣,bubuko.com

用1分,5分,10分,25分,50分硬币凑成一元,总共有几种组合办法?(SQL 谜题)

早在ITPUB中看过有个SQL高手,喜欢出谜题,以下是一个谜题.我试用SQL SERVER解决此问题. 用1分,5分,10分,25分,50分硬币凑成一元,总共有几种组合办法? SELECT'1*'+rtrim(a.number) +'+5*'+rtrim(b.number) +'+10*'+rtrim(c.number) +'+25*'+rtrim(d.number) +'+50*'+rtrim(e.number)AS result FROM(select number from master.