| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 954 人关注过本帖
标题:[求助]我今天考试没有做出来的题目
只看楼主 加入收藏
mp3aaa
Rank: 5Rank: 5
等 级:贵宾
威 望:17
帖 子:2013
专家分:8
注 册:2006-2-15
收藏
得分:0 

如果有8楼那样的问题的话 还有 一十万元 --- 一十九万元 其实这个问题也很好解决 只要把原来打印出来的数存储起来 然后在判断[0]==“一”&&[1]==”十“ (要用字符串比较函数)如果条件成立 就从【1】开始输出


羊肉串 葡萄干 哈密瓜!!
2007-05-24 18:20
kisscjy
Rank: 1
等 级:新手上路
帖 子:217
专家分:0
注 册:2007-4-9
收藏
得分:0 

不只是这样的,
还有一十万零一十元,一百万零一十元.......
考虑到一十的情况有太多了,

何况一十的叫法是存在的...
所以我就没有修改了,
保留了一十的叫法了


每当我一晚写下70,80个程序时,你还真以为,这都是我一个人干的.....不过说真的,其实都是抄书的~~ ^@^
2007-05-24 18:42
SNAKEQX
Rank: 1
等 级:新手上路
帖 子:112
专家分:3
注 册:2006-4-11
收藏
得分:0 
加一个预处理行不行啊?如果最高位是一,就把它标记成null,遇到null就不转换。小弟也是新手,请指教。
2007-05-24 19:26
litcatyx
Rank: 1
等 级:新手上路
威 望:1
帖 子:151
专家分:0
注 册:2006-10-27
收藏
得分:0 
std::string convert(int num)
{
const std::string unit[]=
{"","十","百","千","万",
"十万","百万","千万",
"亿","十亿","百亿","千亿"
};
const std::string number[]=
{"零","一","二","三","四",
"五","六","七","八","九"
};


std::string result="元";
bool prev_is_zero=true;

int pos=0;
while (num>0)
{
int i=num%10;
if (i==0)
{
if (!prev_is_zero)
{
result=number[i]+result;
}
prev_is_zero=true;
}
else
{
result=number[i]+unit[pos]+result;
prev_is_zero=false;
}

num=num/10;
++pos;
}
return result;
}


2007-05-24 21:38
aipb2007
Rank: 8Rank: 8
来 自:CQU
等 级:贵宾
威 望:40
帖 子:2879
专家分:7
注 册:2007-3-18
收藏
得分:0 

昨天寝室的讨论到这个题目,都在动手写,我也写了一个(任意位的):

#include <iostream>
#include <string>
using namespace std;
int main(){
const int size = 12;
const string s1[] = {"零","一","二","三","四","五","六","七","八","九"};
const string s2[] = {"","十","百","千"};
int money,a[size],beg = 0,end = 0;
cin >> money;
while (cin.fail()){
cin.clear();
cin.ignore();
cin >> money;
}
for (int i = 0;i < size;++i){
a[i] = money % 10;
money /= 10;
}
//count 0 at begin
for (int i = size-1;i >= 0;--i){
if (a[i] != 0)
break;
++beg;
}
//count 0 at end
for (int i = 0; i < size;++i){
if (a[i] != 0)
break;
++end;
}
//dispaly
for (int i = size-1-beg;i >= end;--i){
//process the situation when 0 at middle
if (i < size-1){
if (a[i+1] == 0 && a[i] == 0);
else
cout << s1[a[i]];
}
else
cout << s1[a[i]];
cout << (a[i] == 0 ? "" : s2[i%4]);
if (i == 4) cout << "万";
if (i == 8) cout << "亿";
}
cout << "元" << endl;
}

vc++6.0运行要报错的哦,改下i的定义就好,我用2005写的!

有个bug怎么也改不对(输入10001001),请教指点,按我的思路!

[此贴子已经被作者于2007-5-25 10:03:02编辑过]


Fight  to win  or  die...
2007-05-25 09:02
快速回复:[求助]我今天考试没有做出来的题目
数据加载中...
 
   



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

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