7-1 币值转换 (20 分)

输入一个整数(位数不超过9位)代表一个人民币值(单位为元),请转换成财务要求的大写中文格式。如23108元,转换后变成“贰万叁仟壹百零捌”元。为了简化输出,用小写英文字母a-j顺序代表大写数字0-9,用S、B、Q、W、Y分别代表拾、百、仟、万、亿。于是23108元应被转换输出为“cWdQbBai”元。

输入格式:

输入在一行中给出一个不超过9位的非负整数。

输出格式:

在一行中输出转换后的结果。注意“零”的用法必须符合中文习惯。

输入样例1:

813227345

输出样例1:

iYbQdBcScWhQdBeSf

输入样例2:

6900

输出样例2:

gQjB

实验代码:

#include <stdio.h>
int main(void)
{
          int a,b,c,d,e,n,i,j,m,N,k;
          scanf("%d",&N);
          a=b=N;
          if(a==0){
               printf("a");
          }
          for(i=0;a>0;i++){
               a=a/10;
          }
          c=i;
          for(i;i>0;i--){
               n=1;
               e=0;
               for(m=i-1;m>0;m--){
                    n=n*10;
               }
               a=b/n;                 

               b=b-a*n;

               switch(a){
                              case 0: printf("a"); break; case 1: printf("b"); break; case 2: printf("c"); break;
                              
                              
                              case 3: printf("d"); break; case 4: printf("e"); break; case 5: printf("f"); break;
                              
                              
                              case 6: printf("g"); break; case 7: printf("h"); break; case 8: printf("i"); break;
                              
                              
                              case 9: printf("j"); break;
               }
               switch (i) {
                              case 2: printf("S"); break; case 3: printf("B"); break; case 4: printf("Q"); break;
                              
                              
                              case 5: printf("W"); break; case 6: printf("S"); break; case 7: printf("B"); break;
                              
                              
                              case 8: printf("Q"); break; case 9: printf("Y"); break;
                              
               }
               j=0;
               for(d=b;d>0;j++){
                              d=d/10;
               }
               j=i-j-1;
               if(c<9&&i>5&&j>2){
                             printf("W");
               }
               j=0;
               for(d=b;d>0;j++){
                            d=d/10;
               }
               if(j!=0){
                              e=i-j-1;
               }else{
                              i=0;
               }
               if(e>3&&i>4||e==2&&i<4){
                            printf("a");
                            i=j+1;
               }else if(e==2&&i>1){
                            printf("a");
                           i=i-2;
               }else if(j<4&&c<9&&j!=0&&e!=1&&e!=0){
                            printf("a");
                            i=j+1;
               }else if(e==1){
                    printf("a");
                    i=j+1;
               }else{
                    i=j+1;
                    }
               }
               return 0;
          }

实验思路:
先记录输出的数的位数,利用位数来确定输出的大写字母,运用循环来进行从高位数到低位数
进行判断要输出的小写字母,用条件语句来判断特殊情况。
实验错误:

当时没有想到位数小于9的情况下中间位数存在连续多个0的输入的考虑。

实验正确:

最新文章

  1. 动态给textView加图片
  2. SQL SERVER的连接方式
  3. 自然语言14.1_python实现PorterStemmer算法
  4. phpMyAdmin 缺少 mysqli 扩展。请检查 PHP 配置
  5. Symfony2 通过命令行调用控制器
  6. github 修改fork的代码之后如何提交代码并pull request
  7. jdk线程的同步问题
  8. C语言学习总结(三) 复杂类型
  9. Watchcow
  10. Delphi TcxTreeList 读取 TcxImageComboBoxItem类型的值
  11. 推荐Mac软件Alfred
  12. Html5/Css3 向下兼容placeholder
  13. 怎样使用jetty
  14. linux shadow破解
  15. shell编程企业级实战
  16. 51nod--1185 威佐夫游戏 V2 (博弈, 乘法模拟)
  17. 提取和匹配线特征的一个demo
  18. 多个子域名前端网站调用同一个webAPI时session混用问题
  19. wpf 控件简单介绍
  20. Python中threading的join和setDaemon的区别及用法

热门文章

  1. [springBoot系列]--springBoot注解大全[转]
  2. Webpack+Vue+ES6 前端组件化开发mobile-multi-page应用实战总结和踩坑
  3. js中文输入法字符串截断
  4. 一个简易的netty udp服务端
  5. wpgcms---字符串截取
  6. Linux 的基本操作(文件与目录管理)
  7. 记一次maven的包冲突经历
  8. C语言函数strstr
  9. react-redux简单实用
  10. python中matplotlib的颜色及线条控制