Re: [問題] 大數加法的問題
1.處理0的問題 可以用旗標的方式
#include<stdio.h>
int main(void)
{
int iFlag,iHelp;
int iSum[10]={0,0,0,0,0,0,5,6,7,8}
iFlag=0;
for(iHelp=0;iHelp<10;iHelp++)
{
if(iSum[iHelp]!=0)
iFlag=1;
if(iFlag==1)
{
printf("%d",iSum[iHelp]);
}
}
}
或是用長度 比如我輸入5678+10000
因為10000 的長度較長等於5 那麼就從100-5-1=94開始輸出
int iLength1,iLength2,iLength;
iLength1=strlen(cInput1);
iLength2=strlen(cInput2);
if(iLength1>iLength2)
iLength=iLength1;
else
iLength=iLength2;
//如果兩個位數相加有進位 那麼輸出 否則不要輸出
if(iSum[LEN-iLength-1]!=0)
printf("%d",iSum[LEN-iLength-1);
for(iHelp=LEN-iLength;iHelp<LEN;iHelp++)
{
printf("%d",iSum[iHelp]);
}
比較起來 第一個方法似乎比較好
2.處理小數
int iInput;
scanf("%d",&iInput);
printf("%d",iInput);
如果你輸入123.456
電腦還是會輸出123
因為你宣告iInput為整數
所以小數的部份是不會讀進去的 會自動轉型
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.116.226.245
推
06/18 15:52, , 1F
06/18 15:52, 1F
→
06/18 15:53, , 2F
06/18 15:53, 2F
→
06/18 15:56, , 3F
06/18 15:56, 3F
→
06/18 15:57, , 4F
06/18 15:57, 4F
→
06/18 16:07, , 5F
06/18 16:07, 5F
推
06/18 16:17, , 6F
06/18 16:17, 6F
→
06/18 16:40, , 7F
06/18 16:40, 7F
→
06/18 16:40, , 8F
06/18 16:40, 8F
推
06/18 18:37, , 9F
06/18 18:37, 9F
→
06/18 18:37, , 10F
06/18 18:37, 10F
→
06/18 19:04, , 11F
06/18 19:04, 11F
→
06/18 19:30, , 12F
06/18 19:30, 12F
推
06/18 20:05, , 13F
06/18 20:05, 13F
→
06/18 20:05, , 14F
06/18 20:05, 14F
推
06/18 20:28, , 15F
06/18 20:28, 15F
→
06/18 23:16, , 16F
06/18 23:16, 16F
推
06/18 23:36, , 17F
06/18 23:36, 17F
→
06/18 23:36, , 18F
06/18 23:36, 18F
→
06/18 23:38, , 19F
06/18 23:38, 19F
討論串 (同標題文章)