• 締切済み

関数呼び出しを使った、絶対値出力プログラムについて質問です。

すみませんが、このプログラムを見てもらえませんか? 絶対値が上手く表示できません。よろしくお願いします。 #include <stdio.h> double myabs(double); main() { double x,a; printf("Input number = "); scanf("%lf", &x); if(x < 0) { a = myabs(x); printf("Zetaitti = %f\n", a); } else { printf("Zetaitti = %f\n", x); } } double myabs(double x) { double a; x = -x; return(a); }

みんなの回答

  • tatsu99
  • ベストアンサー率52% (391/751)
回答No.7

>すみませんが しつこいようですけど >最後にXに返すとは、main()関数のどこのXに返しているのですか? >何度もすみません。 Xに返すのではなく、Xの内容を返しています。 従って、Xの内容が3であれば、3が返ります。 これは、この関数をよびだしたところの行の a = myabs(x); で aがその3の値を受け取ることをしめしています。 従って  return(X)と書こうが、return(Y)と書こうが、受け取るほうに影響はありません。大切なのは、Xの内容(又はYの内容)です。この内容を呼び出し側は受け取りますから。

hiromatu4
質問者

お礼

あぁ そういう事だったのですね。 ありがとうございました。  自分でも もっと勉強してみます。 ありがとうございました。

  • dekopa-
  • ベストアンサー率42% (161/378)
回答No.6

「絶対値を返す」なら、if文も含めて関数にしないと。 main() 中略 double a = myabs(x); printf("Zetaitti = %f\n", a); double myabs(double x) { if (x < 0) return -x; else return x; }

  • koko_u_
  • ベストアンサー率18% (459/2509)
回答No.5

何故みんな関数名が myabs() なのに、符号を反転させる関数で OK としているのですか? 今回、main 側で符号を判断してるけど、そんなことを前提にして関数を書いてるんじゃないよね?

  • tatsu99
  • ベストアンサー率52% (391/751)
回答No.4

double myabs(double x) { double a; x = -x; return(a);・・・・これを return(x);にしてください。 }

hiromatu4
質問者

補足

ありがとうございます。 無事に実行できました。 すみませんが しつこいようですけど 最後にXに返すとは、main()関数のどこのXに返しているのですか? 何度もすみません。

  • ymmasayan
  • ベストアンサー率30% (2593/8599)
回答No.3

> double myabs(double x) > { > double a; > x = -x; > return(a); > } a = -x; かと。 蛇足ですがmainのaと関数内のaは別物であることにご注意ください。

  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.2

★アドバイス ・なぜ、double a; を宣言しているのですか。  また、その a を返していますが x を返せば良いと思いますよ。 double myabs( double x ) {  return( -x ); } ↑ で良いのでは。

  • koko_u_
  • ベストアンサー率18% (459/2509)
回答No.1

>double myabs(double x) >{ >double a; > >x = -x; > >return(a); >} a には最初から最後まで何も代入されてませんが。。。 変数のスコープについて勉強して下さい。

関連するQ&A