编程总结2

币值转换

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

#include<stdio.h>
#include<string.h>
int main()
{
  char a[10];
  char b[9][2]={"","S","B","Q","W","S","B","Q","Y"};
  char c[10]={'a','b','c','d','e','f','g','h','i','j'};
  gets(a);
  int m,i,j,n;
  m=strlen(a);
  if(a[0]=='0')
  printf("a\n");
  else
  {
    for(i=0;i<m;i++)
    {
      if(a[i]=='0'){
        while(a[i]=='0')
        {
          if((m-1-i==4)&&(a[i]=='0'))
          {
            n=0;
            for(j=0;j<i;j++)
            {
              if(a[j]=='0')
              n++;
            }
            if(n<3)
            printf("W");
          }
          i++;
        }
        if(i<m)
        printf("%c",c[0]);
      }
      if(a[i]=='1')
      printf("%c%s",c[1],b[m-1-i]);
      if(a[i]=='2')
      printf("%c%s",c[2],b[m-1-i]);
      if(a[i]=='3')
      printf("%c%s",c[3],b[m-1-i]);
      if(a[i]=='4')
      printf("%c%s",c[4],b[m-1-i]);
      if(a[i]=='5')
      printf("%c%s",c[5],b[m-1-i]);
      if(a[i]=='6')
      printf("%c%s",c[6],b[m-1-i]);
      if(a[i]=='7')
      printf("%c%s",c[7],b[m-1-i]);
      if(a[i]=='8')
      printf("%c%s",c[8],b[m-1-i]);
      if(a[i]=='9')
      printf("%c%s",c[9],b[m-1-i]);
    }
    printf("\n");
  }
  return 0;
}

思路

看完题目就大致明白怎么算,但当要用代码时就感觉一片空白,前前后后又去看了许多大佬的代码,感觉还是不太明白,知道了非 0 才有单位。单位是指 拾、佰、仟...,0要单独去运算

感觉这道题主要的难点都在于怎么去求不同位置的0

 

 

 

首次提交显示错误,发现第6行输入字母符号错误,同时在第11行if(a[0]=='0';错误将;改为),此外还有一些字母拼写的错误。

posted @ 2019-02-18 10:54  悉于  阅读(158)  评论(0编辑  收藏  举报