• ベストアンサー

プログラムに詳しい方教えてください!

#include<stdio.h> void fxl(int x,int y); int main(void) { int a,b,m,n; printf("整数aの値を入力\n"); scanf("%d",&b); printf("整数bの値を入力\n"); scanf("%d",&b); m=a; n=b; fxl(m,n); printf("a=%dとb=%dを加算した値は%d\n",ab,m); printf("a=%dからb=%dを減算した値は%d\n",ab,n); return 0; } void fxl(int x,int y) { int j,k; j=x; k=y; x=j+k; y=j-k; } このプログラムを作ってみたのはいいのですが、参照渡しを使って正常に足し算、引き算をするにはどうすればよいのでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
noname#77845
noname#77845
回答No.1

#include<stdio.h> void fxl(int* x,int* y);//変更箇所 int main(void){ int a,b,m,n; printf("整数aの値を入力\n"); scanf("%d",&a); printf("整数bの値を入力\n"); scanf("%d",&b); m=a; n=b; fxl(&m,&n); printf("a=%dとb=%dを加算した値は%d\n",a,b,m);//変更箇所 printf("a=%dからb=%dを減算した値は%d\n",a,b,n);//変更箇所 return 0; } void fxl(int *x,int *y){//変更箇所 int j,k; j=*x;//変更箇所 k=*y;//変更箇所 *x=j+k;//変更箇所 *y=j-k;//変更箇所 } でどうですか?

lilillili
質問者

お礼

投稿ありがとうございます。 ズバリこれで完璧な気がします。 自分は何度も*と&をつけていろいろ考えてみたのですが、 こんなにあっさり回答してもらえるなんて思ってもいませんでした。 わざわざ、変更箇所まで明示してもらって、 本当に感謝感謝です。

その他の回答 (2)

  • E-Yu
  • ベストアンサー率40% (2/5)
回答No.3

ANo.1さんの補足です。 ポインタ渡しの場合、ANo.1のものでいいと思います。 参照渡しの場合はこうなると思います。 void fxl(int& x,int& y) // & を付けた { int j,k; j=x; k=y; x=j+k; y=j-k; } ただ、個人的にこういう関数は好きじゃないです(^^;) (練習で作っただけでしたら、ごめんなさい)

lilillili
質問者

お礼

投稿ありがとうございます。 学校で考えさせられている、所謂、悪い問題です。 (ときどき、わかっていることでも訳がわからなくなっちゃいます!) 無事解決できてホッとしました!!!

noname#77845
noname#77845
回答No.2

#1です。 ここもでした。 fxl(&m,&n);//変更箇所

関連するQ&A