引用 | 編輯
karen7710
2007-06-24 17:55 |
樓主
▼ |
||
x0
題目:請宣告兩個整數的暫存器變數,算出最大公因數。 請問大大我這個程式正不正確~ #include <stdio.h> #include <stdlib .. 訪客只能看到部份內容,免費 加入會員 x0
|
引用 | 編輯
gamewalk
2007-06-26 00:19 |
3樓
▲ ▼ |
對了 你主程式的gcd(x,y)呼叫了兩次不曉得你是不是有多用了 ...
其實老實說這我幾乎沒在用,因為照他的字面上的解釋是他會被那個值放在暫存器內,但是實際上 他並不是每次都可以要到暫存器,如果沒有要到就等於一般的變數放在記憶體內,你應該曉得放在 暫存器內運算比放在記憶體快吧... 複製程式 int gcd( register int x , register int y ) //<-----宣告兩個宣告在這不知道如何.... { if( x % y == 0 ) return y; else return gcd( y , x % y ); } 不過我不太常用 , 所以我不確定這樣是否會有問題 ... x0 |
引用 | 編輯
GNUGCC
2007-06-26 00:53 |
4樓
▲ ▼ |
其實如果在 main() 函式內第一次宣告暫存器變數時如果
系統有給妳的程式的話只要在 gcd() 函式內用參考值的方式 來處理暫存器的變數就可達到題目的用意... x0 |
引用 | 編輯
GNUGCC
2007-06-26 21:16 |
6樓
▲ ▼ |
只要把函式的參數改成參考值就行了, 像這樣...
int& gcd(int &x, int &y); // 這個是原型 int main(void) { register int x=50,y=70; // gcd(x,y); 這個要拿掉 printf("最大公因數=%d\n",gcd(x,y)); system("pause"); return 0; } int& gcd(int &x, int &y) { if(x%y==0) return y; else { x = x % y; return gcd(y, x); // 這裡可能要改 } } 妳先這樣跑看看是否還有其他問題...^^ x0 |
引用 | 編輯
karen7710
2007-06-27 19:25 |
7樓
▲ ▼ |
有出現以下的錯誤:
3 syntax error before '&' token 11 syntax error before '&' token 複製程式 #include <stdio.h> #include <stdlib.h> int& gcd(int &x,int &y); int main(void) { register int x=50,y=70; printf("最大公因數=%d\n",gcd(x,y)); system("pause"); return 0; } int& gcd(int &x,int &y) { if(x%y==0) return y; else { x = x % y; return gcd(y,x); } } x0 |
引用 | 編輯
a86980
2007-07-02 17:45 |
13樓
▲ ▼ |
下面是引用karen7710於2007-07-02 09:30發表的 :應該是改成 "*" 吧 試試看 x0 |