作者csihcs (非天夜翔)
看板C_and_CPP
标题Re: [问题] 在dev c++测试过了 在测验网站上测资不 …
时间Wed Oct 21 02:05:18 2009
※ 引述《tw00088437 (喵猫 loves fish)》之铭言:
: 噢感谢两位回答 和举出我108000和100800之类的会挂@@
: 现在我修正过了 在最下面
: 不过问题识
: 1. 我现在大概只会基本的function 回圈 array 以上两位的看不太懂说@@?
a008. 中文大写数字 AC (6ms, 2.3MB)
void show(int a) {
string word[] = {"零","壹","贰","参","肆","伍","陆","柒","捌","玖"};
string unit[] = { "","拾","佰","仟","万","拾","佰","仟","亿","拾"};
// 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
string num[11] = "零";
int b,c;
^^^^^^^^^^^^^
漏掉宣告 d,以及初始化 b
改成 int b = 0,c,d;
int zero = 0;
// 转换为中文,并存於 num,以 array 查询法,取代原本的 switch case
while(a != 0) {
c = a % 10;
num[b] = word[c];
b++;
a /= 10;
}
b--;
for(c = b ; c >= 0 ; c--) {
// 若 num[c] != "零"
if( num[c] != word[0] ) {
// zero 纪录前面的数字出现 0 的次数
// 当 zero > 0 ,则表示前面曾出现 0 ,故先显示"零"
if(zero > 0) {
cout << word[0];
zero = 0;
}
// 以 array 查询法,取代原本的 switch case
cout << num[c] << unit[c];
// 纪录最後一次不为 0 的位置
d = c;
} else {
// d % 4 == 0 表示已经显示过 unit
// 在 0 <= zero < 4 范围中,显示 (d - zero) % 4 == 0 的 unit
// zero >= 4 的时候不显示,因为前面已经显示过
if(d % 4 != 0 && zero >= 0 && zero < 4 && (d - zero) % 4 == 0) {
cout << unit[d-zero];
}
zero++;
}
}
}
int main() {
int a;
while (cin>> a) {
show(a);
cout << endl;
}
system("pause");
return 0;
}
: 2.改过之後第七测资过了 现在是死第八个
: 100200应该要"十万零两佰" 我没有那个零 Orz
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 211.74.9.2
1F:推 tw00088437:实际跑过怎麽好像是屍体=_= 啥都没 10/21 12:19
※ 编辑: csihcs 来自: 211.74.9.2 (10/21 23:55)
2F:推 tw00088437:好像还是挂 这次好像是阵列超出范围@@? 10/22 01:42
3F:→ csihcs:你是不是改错了什麽~~ 10/22 10:18
4F:→ csihcs:我上传这个code 已经AC了呀 10/22 10:19
5F:推 tw00088437:真的嘛@@!? 10/22 19:27
6F:推 tw00088437:噢 谢谢: ) 10/22 19:38
7F:推 tw00088437:啊我发觉 是ac了 可是108000会错误@@? 10/22 19:45