Regular Member
加入日期: 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
|
Major Member
加入日期: Feb 2004 您的住址: Terran Empire
文章: 283
|
判斷了進位,但並沒有進到前一位。進位變數c1沒有和前一位運算。
|
||
2006-10-20, 06:13 AM
#2
|