- ベストアンサー
関数を使ったプログラムについてなのですが・・・
・変数a,bの内容を入れ換える処理を関数を用いて実行するためのプログラム と ・変数a,bを与えたときa+bとa-bを計算する処理を関数を用いて行い、和と差を表示させるためのプログラム はどう作ればいいか分かりません…。 教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
質問文からは、いろいろな解釈が可能なのですが、ひとまず、「ご質問の通りの動作をする関数」の作例を、回答として記したいと思います。 (1)変数a,bの内容を入れ換える関数 まず、変数a,bの型が分かりませんので、ひとまず整数型(int型)と仮定します。文字型やポインタ型の可能性もありますが、とりあえず int型で作例をあげてみます。 void sample_swap( int * a_p, /* aのアドレスが入るポインタ変数 */ int * b_p /* bのアドレスが入るポインタ変数 */ ) { int swap_area; /* 入れ替え用の「うつわ」*/ swap_area = *a_p; /* a_pの指す内容を「うつわ」に入れる */ *a_p = *b_p; /* b_pの指す内容を a_pの指すところに入れる */ *b_p = swap_area; /* 「うつわ」の内容を b_pの指すところに入れる */ return; /* 終了 */ } この関数を使うには、次のようなメインプログラムから呼び出します。 #include <stdio.h> void sample_swap( int * a_p, int * b_p ); /* プロトタイプ宣言 */ void main() /* メイン関数 */ { int a; int b; a = 3; /* 例値、デタラメです */ b = 109; /* 例値、デタラメです */ printf( "\na=%d, b=%d", a , b ); /* 最初の値を表示 */ sample_swap( &a, &b ); /* 入れ替え */ printf( "\na=%d, b=%d", a , b ); /* 入れ替えた値を表示 */ } (2)変数a,bを与えたときa+bとa-bを計算する関数 これも、型が intなのか floatなのか doubleなのか、もしくは独自に定義した数値型なのかが分かりませんが、とりあえず int型と仮定して作例を示します。 int sample_add( /* 加算関数 */ int a, /* 仮引数a */ int b /* 仮引数b */ ) { return( a + b ); /* aと bの和を返す */ } int sample_sub( /* 減算関数 */ int a, /* 仮引数a */ int b /* 仮引数b */ ) { return( a - b ); /* aと bの差を返す */ } この関数を使うには、次のようなメインプログラムから呼び出します。 #include <stdio.h> int sample_add( int a, int b ); /* プロトタイプ宣言 */ int sample_sub( int a, int b ); /* プロトタイプ宣言 */ void main() /* メイン関数 */ { int a; int b; a = 3; /* 例値、デタラメです */ b = 109; /* 例値、デタラメです */ printf( "\na=%d, b=%d, a+b=%d", a , b, sample_add( a, b ) ); /* 和を表示 */ printf( "\na=%d, b=%d, a-b=%d", a , b, sample_sub( a, b ) ); /* 差を表示 */ } なお、字下げのために全角スペースを用いていますが、実際にコピーして使われる際は、全角スペースは取り除いてください。 (上記の作例は、Windows上の Borland C++ Compiler 5.5.1で検証致しました)
その他の回答 (2)
- SteveStrawb
- ベストアンサー率18% (141/774)
質問の意味がつかめないのですが、「関数」の「作り方」を知りたいのか?あるいは「関数」の「利用法」を知りたいのでしょうか? たとえば、和、差を求める関数をそれぞれ作っておき int kansuu_wa( a, b ) int a, b; { return(a+b); } int kansuu_sa( a, b ) int a, b; { return(a-b); } これに対して main( ) { int a,b,c,d; a = 123; b = 45; c = kansuu_wa(a,b); d = kansuu_sa(a,b); fprintf(stderr, "WA=%d, SA=%d\n", c, d); } ってな事?
- honiyon
- ベストアンサー率37% (331/872)
こんにちは、honiyonです。 二番目については、 int a = 1; int b = 2; int answer = 0; answer = a + b; printf("a+b = %d\n", answer); answer = a - b; printf("a-b = %d\n", answer); となりますが、これが分からないという事でしょうか? 関数についても、C/C++の基本中の基本です。 まずはお手元の参考書を再度読んでみるか、 猫でも分かるプログラミング http://www.kumei.ne.jp/c_lang/ を参照してみてください。 その上で「何故分からないか」「どこが分からないか」を補足して頂ければ、身に付く回答が得られると思いますよ。