PCDVD數位科技討論區
PCDVD數位科技討論區   註冊 常見問題 標記討論區為已讀

回到   PCDVD數位科技討論區 > 其他群組 > 疑難雜症區
帳戶
密碼
 

回應
 
主題工具
jackyepson
Regular Member
 
jackyepson的大頭照
 

加入日期: Oct 2004
您的住址: 虛擬的世界
文章: 66
關於C語言

以下是我的程式碼
#include <stdio.h>
#include <stdlib.h>

double power(double,int);
int main(int argc, char *argv[])
{
int a[9],b[9],c[9]={0};
int numa,numb,i,c1=0,c2=0,d,e;
char f;
printf("請2個輸入9位以內的數字:\n");
scanf("%d",&numa);
scanf("%d",&numb);
a[0]=numa%10;
for(i=1;i<9;i++)
{
d=power(10,i+1);
e=power(10,i);
a[i]=(numa%d-numa%e)/e;
}
b[0]=numb%10;
for(i=1;i<9;i++)
{
d=power(10,i+1);
e=power(10,i);
b[i]=(numb%d-numb%e)/e;
}

fflush(stdin); //因為輸入過numa和numb會在buffer留下\n,所以要清除
printf("請選擇+或-:");
scanf("%c",&f);
switch(f){
case '+':
for(i=8;i>=0;i--)
{
c[i]=a[i]+b[i];
if(c[i]<10)
c1=0;
else
{
c[i]=c[i]-10;
c1=1;
}
printf("%d",c[i]);
}
printf("\n");
break;
case '-':
for(i=8;i>=0;i--)
{
c[i]=a[i]-b[i]-c2;
if(c[i]<0)
{
c[i]=c[i]+10;
c2=1;
}
else
c2=0;
printf("%d",c[i]);
}
printf("\n");
break;
default:
printf("再試一次\n");
break;
}


system("PAUSE");
return 0;
}
//次方函數
double power(double base,int n)
{
int i;
double pow=1;
for(i=1;i<=n;i++)
pow=pow*base;
return pow;
}
我想問為什麼我輸入345+345結果是顯示680,我有做進位判斷了說
     
      
舊 2006-10-19, 07:39 PM #1
回應時引用此文章
jackyepson離線中  
kec
Major Member
 
kec的大頭照
 

加入日期: Feb 2004
您的住址: Terran Empire
文章: 283
判斷了進位,但並沒有進到前一位。進位變數c1沒有和前一位運算。
 
舊 2006-10-20, 06:13 AM #2
回應時引用此文章
kec離線中  


回應


POPIN
主題工具

發表文章規則
不可以發起新主題
不可以回應主題
不可以上傳附加檔案
不可以編輯您的文章

vB 代碼打開
[IMG]代碼打開
HTML代碼關閉



所有的時間均為GMT +8。 現在的時間是08:05 PM.


vBulletin Version 3.0.1
powered_by_vbulletin 2024。