码迷,mamicode.com
首页 > 其他好文 > 详细

PTA L1-007 念数字 (10分)

时间:2019-04-14 16:23:47      阅读:137      评论:0      收藏:0      [点我收藏+]

标签:就会   判断   查看   输入   地方   数字   ++   正数   方法   

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

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;

}

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

PTA L1-007 念数字 (10分)

标签:就会   判断   查看   输入   地方   数字   ++   正数   方法   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!