引用 | 编辑
karen7710
2007-06-24 17:55 |
楼主
▼ |
||
![]() 请宣告两个整数的暂存器变数,算出最大公因数。 请问大大我这个程式正不正确~ #include <stdio.h> #include <stdlib .. 访客只能看到部份内容,免费 加入会员 ![]()
|
引用 | 编辑
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 ); } 不过我不太常用 , 所以我不确定这样是否会有问题 ... ![]() ![]() |
引用 | 编辑
GNUGCC
2007-06-26 00:53 |
4楼
▲ ▼ |
其实如果在 main() 函式内第一次宣告暂存器变数时如果
系统有给你的程式的话只要在 gcd() 函式内用参考值的方式 来处理暂存器的变数就可达到题目的用意... ![]() |
引用 | 编辑
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); // 这里可能要改 } } 你先这样跑看看是否还有其他问题...^^ ![]() |
引用 | 编辑
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); } } ![]() |
引用 | 编辑
a86980
2007-07-02 17:45 |
13楼
▲ ▼ |
下面是引用karen7710于2007-07-02 09:30发表的 :应该是改成 "*" 吧 试试看 ![]() |