• 2

請問是我的語法有問題還是Dev-C++有問題?

目前按照書本上面做了一個程式:

#include<stdio.h>
#include<stdlib.h>

int swap();

main()
{
int x=10,y=20;
printf("%d-%d\n",x,y);
swap(x,y);
printf("%d-%d\n",x,y);
system("PAUSE");
}

int swap(int &x,int &y)
{
int temp=0;
temp=x;
x=y;
y=temp;
}

程式的目的是要將X,Y的值做對調,但是我使用的Dev-C++ 4.9.9.2編譯的時候有問題,但是把&拿走就可以,可是這是書中的範例,所以我想詢問這部份的問題出在哪?

謝謝.
2008-10-06 19:24 發佈
上面宣告的prototype跟底下實際implement不一樣

改成

int swap(int*, int*);

main() {

...

...

}

應該就可以了
另外swap沒有傳回值,宣告成void型態就行了
#include<stdio.h>
#include<stdlib.h>

int swap(int &x,int &y);

main(){
............
}

int swap(int &x,int &y)
{
............
}


剛剛用dev c++ COMPILER 過
有回傳x,y歐
已經用參照(int &x, int &y)了,也沒回傳值(return),可以不用設回傳值的型態吧,void就好!
我要成為海賊王 wrote:
#include&l...(恕刪)


已經將程式碼改為:

#include<stdio.h>
#include<stdlib.h>

void swap(int &x,int &y);

main()
{
int x=10,y=20;
printf("%d-%d\n",x,y);
swap(x,y);
printf("%d-%d\n",x,y);
system("PAUSE");
}

void swap(int &x,int &y)
{
int temp=0;
temp=x;
x=y;
y=temp;
}

但編譯還有有錯誤,無法執行?
請問您使用的Dev-C++版本?
你把編譯器說的錯誤是哪一行寫出來吧

基本上你要先看的懂編譯器所說的問題是哪種

搞不好是你設定的環境與變數path問題

我隨便試一下都可以
你的這麼簡單的程式竟然編譯不過去
真的很奇怪耶

還有 你該不會開錯專案吧
C++跟C的不一樣
hsg210 wrote:
你把編譯器說的錯誤是...(恕刪)


專案我確定是開C的啦.

錯誤訊息如下:

4 C:\Dev-Cpp\main.c syntax error before '&' token
15 C:\Dev-Cpp\main.c syntax error before '&' token
C:\Dev-Cpp\main.c In function `swap':
18 C:\Dev-Cpp\main.c `x' undeclared (first use in this function)
(Each undeclared identifier is reported only once
for each function it appears in.)
19 C:\Dev-Cpp\main.c `y' undeclared (first use in this function)
C:\Dev-Cpp\Makefile.win [Build Error] [main.o] Error 1
請將檔名改成.cpp結尾試看看, reference是C++語法, 不是C的!!
我是用 dev C++ 4.9.9.2
compiler ok

開版大的語法是錯在宣告函式那邊
還有少了個 ;

試了一下

果然還是不能過
(樓上怎麼過的??????)
感覺怪怪的
發現你的程式很怪
怎麼會用&當作宣告point的呢???????
應該是用*吧
語法有問題 這是課本的?
而且你這樣換也沒用swap又沒有真正改到X Y
你在main裡面printf 是白印
只有在swap裡面換爽的



我改了一下
----------------------------
#include<stdio.h>
#include<stdlib.h>

void swap(int*,int*);

int main(void)
{
int x=10,y=20;
printf("%d-%d\n",x,y);
swap(&x,&y);
printf("%d-%d\n",x,y);
system("PAUSE");
return 0;
}

void swap(int *x,int *y)
{
int temp=0;

temp=*x;
*x=*y;
*y=temp;
}

這樣就可以了
可以看到真正有交換X Y

我想你把課本的範例打錯了吧
大學新生???
還是高中生???
  • 2
內文搜尋
X
評分
評分
複製連結
Mobile01提醒您
您目前瀏覽的是行動版網頁
是否切換到電腦版網頁呢?