悲催的码农

论坛 期权论坛 脚本     
匿名技术用户   2020-12-21 13:33   42   0

问题 : 悲催的码农


题目描述

小A在学校不好好学习,天天忙着玩。四年很快过去,好不容易找了份工作,其实就是码代码的底层码农。看着到手的工资,小A很是失望。一方面后悔过去,另一方面羞于启齿。我们要做的一是引以为戒,二是大声地替小A把工资读出来,不过注意不要带口音噢!
应该用标准的汉语,即“零”“壹”“贰”“叁”“肆”“伍”“陆”“柒”“捌”“玖”“拾”“佰”“仟”来读。
编程时请这样定义:
char s1[10][4]={“零”,“壹”,“贰”,“叁”,“肆”,“伍”,“陆”,“柒”,“捌”,“玖”}
char s2[3][4]={“拾”,“佰”,“仟”}

输入

一个整数n(0<n<5000)

输出

这个数字的中文读法

样例输入

1111
1001

样例输出

壹仟壹佰壹拾壹
壹仟零壹

题意描述:

输出5000以内的所有整数的中文读法。

解题思路:

将汉字存储到字符数组中,将这个数以字符串形式存储,从数的右边开始读,若不为‘0’读出数并读出数的位,若为‘0’跳转循环直到遇到下个不为‘0’位读出零,若一直到最后都为‘0’,当判断到最后一位时,输出换行。(注意汉字输出格式用%s,且储存时占了四个字符;注意位数输出的判断)

程序代码:

#include<stdio.h>
#include<string.h>
int main()
{
 //存储汉字 
 char s1[10][4]={"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};
 char s2[3][4]={"拾","佰","仟"}; 
 char a[10];
 int i,len,h;
 while(gets(a)!=NULL)
 {
  h=0;//用于判断是否此位的前面有'0' 
  len=strlen(a);
  for(i=0;i<len;i++)
  {
   if(a[i]=='0')
   {
    if(i==(len-1))//当最后一位为'0'时,直接输出换行 
    {
     printf("\n");
    // break;
    }
    h=1;//若此位有'0'标记,并跳转 
    continue; 
   }
   if(h==1&&a[i]!='0')//若此位前面是'0',且它不为'0'输出‘零’ 
   {
    printf("%s",s1[0]);
    h=0;//并将标记重新置0 
   }
   if(h==0&&a[i]!='0'&&i!=(len-1))//若此位不为'0'且不是最后一位输出此位数及它的位 
   {
    printf("%s",s1[a[i]-'0']);
                  printf("%s",s2[len-i-2]);
   }
   //最后一位不为'0'并换行 
   if(a[i]!='0'&&i==(len-1))
   {
    printf("%s",s1[a[i]-'0']);
                         }
                         if(i==(len-1))
    printf("\n");
  }
 }
 return 0;
}

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7942463
帖子:1588486
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP