| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 5835 人关注过本帖
标题:币值转换
只看楼主 加入收藏
三个人
Rank: 2
等 级:论坛游民
帖 子:54
专家分:40
注 册:2014-7-6
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:25 
币值转换
问题:

输入一个整数(位数不超过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>
#include<string.h>

int main(void)
{
  char s[10];
  int l,len,i,j;
  gets(s);        //用字符串处理。
  len=strlen(s);  //求长度
  l=len;          //用另一变量保存长度,以l来表示当前位数,即千位,百位等。
  
  for(i=0;i<len;i++,l--)
  {
      char c=s[i];
      switch(c)
          {
            case '0':c='a';break;
            case '1':c='b';break;
            case '2':c='c';break;
            case '3':c='d';break;
            case '4':c='e';break;
            case '5':c='f';break;
            case '6':c='g';break;
            case '7':c='h';break;
            case '8':c='i';break;
            case '9':c='j';break;
            default:break;
          }
    if(c=='a')         //0为特殊,单独判断。
    {
      if(l==5)
        printf("W");   //如果万位是0,输出w;
      else
      {
        for(i++,l--;i<len;i++,l--)   //否则,遍历之后的个个字符,是否都是‘0’,从而判断是否念0;
        {
          if(s[i]=='0')
          {
            if(l==5)
              printf("W");     //遍历中遇到万位是0,同上,且退出循环。
          }
          else
          {
            printf("a");
            i--;
        l++;
            break;
          }
        }
      }
    }
    else
    {
      printf("%c",c);             //非零则简单了。
      switch(l)
      {
        case 9:printf("Y");break;
        case 8:printf("Q");break;
        case 7:printf("B");break;
        case 6:printf("S");break;
        case 5:printf("W");break;
        case 4:printf("Q");break;
        case 3:printf("B");break;
        case 2:printf("S");break;
        default:break;
      }
    }
  }
  return 0;
}
评测不通过,某些测试节点答案错误,但我试了很多数据都能输出正确结果,希望有人能发现错误!
搜索更多相关主题的帖子: 英文字母 人民币 大写数字 中文 财务 
2014-08-13 11:34
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
收藏
得分:20 
你试过9位数的吗?

总有那身价贱的人给作业贴回复完整的代码
2014-08-13 11:40
三个人
Rank: 2
等 级:论坛游民
帖 子:54
专家分:40
注 册:2014-7-6
收藏
得分:0 
回复 2 楼 embed_xuel
试过,没问题
2014-08-13 11:41
三个人
Rank: 2
等 级:论坛游民
帖 子:54
专家分:40
注 册:2014-7-6
收藏
得分:0 
谁能用c写出正确代码贴上来也好,希望能对比一下
2014-08-13 12:49
三个人
Rank: 2
等 级:论坛游民
帖 子:54
专家分:40
注 册:2014-7-6
收藏
得分:0 
上网搜全都是用java写的,难道这个题目用c不能完成么,虽然情况是有很多。。。。。。。。。我已跪了
2014-08-13 12:55
vvvcuu
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:12
帖 子:353
专家分:1253
注 册:2014-4-22
收藏
得分:0 
回复 5 楼 三个人
用java能实现的都能用c实现,但用c能实现的java就得掂量掂量了.

代码测试环境:  WinXP+C-Free5.0.
2014-08-13 13:08
三个人
Rank: 2
等 级:论坛游民
帖 子:54
专家分:40
注 册:2014-7-6
收藏
得分:0 
回复 6 楼 vvvcuu
真心搞不定,总是有一些特殊情况没法包括在算法里,,
你能试试这道题么。。
诚心求代码。
我实在想不出更好的算法了
2014-08-13 13:14
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
收藏
得分:0 
楼主试试100000000出来是什么?

总有那身价贱的人给作业贴回复完整的代码
2014-08-13 13:19
三个人
Rank: 2
等 级:论坛游民
帖 子:54
专家分:40
注 册:2014-7-6
收藏
得分:0 
回复 8 楼 embed_xuel
这个代码我最后找到了错误数据,而且不止一种。。。。。
改来改去还是有错误。
最后无奈放弃。。。。
2014-08-13 13:23
三个人
Rank: 2
等 级:论坛游民
帖 子:54
专家分:40
注 册:2014-7-6
收藏
得分:0 
额,还有一种错误数据是0;
输入0这个代码无法输出a;
我把这个改正后就。。。。额。。骗过了评测系统!!
貌似100000000这种错误数据不在评测节点里。。
这系统有点坑啊
2014-08-13 13:27
快速回复:币值转换
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.020637 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved