#include<iostream>
using namespace std;
int main()
{int s ;
while(cin >>s)
{
int a,j[10]={0},i=0,b=0,c=0,e=0;
{
for(i=0;i>=0;i++)
{j[i]=s%10;
s=(int)s/10;
if(s==0)
break;}
for(;i>=0;i--)
{
a=j[i];
switch(a)
{
case 1:cout<<"壹";break;
case 2:cout<<"貳";break;
case 3:cout<<"參";break;
case 4:cout<<"肆";break;
case 5:cout<<"伍";break;
case 6:cout<<"陸";break;
case 7:cout<<"柒";break;
case 8:cout<<"捌";break;
case 9:cout<<"玖";break;
}
if(a)
{
b=(i+1)%4;c=(i+1)/4;
if(b==2&&c==0||b==c&&c==2||b==2&&c==1)
{cout<<"拾";}
if(b==3&&c==0||b==3&&c==1)
{cout<<"佰";}
if(b==0&&c==1||b==0&&c==2)
{cout<<"仟";}
}
if(i==4&&e==0)
{cout<<"萬";}
if(i==8)
{cout<<"億";}
if(j[i]==0&&j[i-1]!=0)
{cout<<"零";}else
{continue;}
}
}
cout <<endl;
}
return 0;
}
在Dev上輸入10,輸出結果是壹拾
但是送出以後出現WA顯示我的答案是壹拾零
是測資有問題還是我的程式碼有漏洞
小弟自學不久還請各位前輩幫忙一下,謝謝^^
#include
using namespace std;
int main()
{int s ;
while(cin >>s)
{
int a,j[10]={0},i=0,b=0,c=0,e=0;
{
for(i=0;i>=0;i++)
{j[i]=s%10;
s=(int)s/10;
if(s==0)
break;}
for(;i>=0;i--)
{
a=j[i];
switch(a)
{
case 1:cout<<"壹";break;
case 2:cout<<"貳";break;
case 3:cout<<"參";break;
case 4:cout<<"肆";break;
case 5:cout<<"伍";break;
case 6:cout<<"陸";break;
case 7:cout<<"柒";break;
case 8:cout<<"捌";break;
case 9:cout<<"玖";break;
}
if(a)
{
b=(i+1)%4;c=(i+1)/4;
if(b==2&&c==0||b==c&&c==2||b==2&&c==1)
{cout<<"拾";}
if(b==3&&c==0||b==3&&c==1)
{cout<<"佰";}
if(b==0&&c==1||b==0&&c==2)
{cout<<"仟";}
}
if(i==4&&e==0)
{cout<<"萬";}
if(i==8)
{cout<<"億";}
if(j[i]==0&&j[i-1]!=0)
{cout<<"零";}else
{continue;}
}
}
cout <}
return 0;
}
在Dev上輸入10,輸出結果是壹拾
但是送出以後出現WA顯示我的答案是壹拾零
是測資有問題還是我的程式碼有漏洞
小弟自學不久還請各位前輩幫忙一下,謝謝^^
看了一下你的程式碼
發現有個漏洞是如果測資打0的話妳的程式不會輸出
另外的確DEV跟網路主機對於錯誤處理可能有些不同
我想問題應該在於你判斷要不要輸出"零"的時候有問題
因為j[i-1]可能不存在(當i<1的時候!)
所以那邊改成這樣試試看
if(j[i]==0&&i>=1&&j[i-1]!=0)
{cout<<"零";}
另外記得處理一下s一開始就輸入0的情況
看了一下你的程式碼
發現有個漏洞是如果測資打0的話妳的程式不會輸出
另外的確DEV跟網路主機對於錯誤處理可能有些不同
我想問題應該在於你判斷要不要輸出"零"的時候有問題
因為j[i-1]可能不存在(當i<1的時候!)
所以那邊改成這樣試試看
if(j[i]==0&&i>=1&&j[i-1]!=0)
{cout<<"零";}
另外記得處理一下s一開始就輸入0的情況
一開始輸入0的情況俢正了,i<1的狀況也有加入了
但是輸入10答案顯示還是壹拾零,可能就像是文旋大講的是Dev跟測資處理有差別
還是多謝解答^^
看了一下你的程式碼
發現有個漏洞是如果測資打0的話妳的程式不會輸出
另外的確DEV跟網路主機對於錯誤處理可能有些不同
我想問題應該在於你判斷要不要輸出"零"的時候有問題
因為j[i-1]可能不存在(當i<1的時候!)
所以那邊改成這樣試試看
if(j[i]==0&&i>=1&&j[i-1]!=0)
{cout<<"零";}
另外記得處理一下s一開始就輸入0的情況
一開始輸入0的情況俢正了,i<1的狀況也有加入了
但是輸入10答案顯示還是壹拾零,可能就像是文旋大講的是Dev跟測資處理有差別
還是多謝解答^^
剛剛試了幾次把程式碼修改城下面這樣就成功了
if(i>=1){
if(j[i]==0&&j[i-1]!=0)
{cout<<"零";}
}