- 締切済み
関数についての質問です。
c言語を勉強しています。関数で戻り値がありますが、関数の処理の仕組みが理解できません。本等で勉強し僕の考え方が間違っていたら教えてください。 お願いいたします。 #include <stdio.h> int buy(int x,int y ) { int z; //1 printf("%d万円と%d万円の車を買いました。");//2 z=x+y; //3 return z; //4 } int main(void) { int num1,num2,num;//5 printf("いくらの車をかいますか?\n");//6 scanf("%d",&num1);//7 printf("いくらの車をかいますか?\n");//8 scanf("%d",&num2);//9 sum=buy(num1,num2);//10 printf("合計で%d万円です。\n",sum);//11 return 0;//12 } まず最初に 整数型、int num1,num2,numを読みます。 次に//7と//8で数値を入力します。 そして//10で値を格納し int buy( int x,int y)に値をわたします。 ※正確には関数buyに渡す。 そして計算をし計算結果 zをreturn で int buy(int x,int y )の buyに値を渡します。 そのあと呼び出し元の//10のbuyに値をかえします。 そしてプログラムが終了します。 間違っていたら教えてください。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- asuncion
- ベストアンサー率33% (2127/6289)
数学で、f(x) = 2x + 3 っていう1次関数があるとき、 xに2を渡せばfという関数は7を返し、 xに-6を渡せばfという関数は-9を返しますよね。 それと同じ理屈で、上に書いた2とか-6とかいうのが 関数に渡す引数で、7とか-9とかいうのが 関数から返ってくる戻り値です。
- AsarKingChang
- ベストアンサー率46% (3467/7474)
特に間違ってはいないと思いますよ。 printf("%d万円と%d万円の車を買いました。");//2 ここに、x,yは必要ですが。 なんなら、これも関数にしてみては? printf("いくらの車をかいますか?\n");//6 scanf("%d",&num1);//7 int input() { int n; printf("いくらの車をかいますか?\n"); scanf("%d",&n); return(n); } なら、 num1=input(); num2=input(); sum=buy(num1,num2); とシンプルになります。 思いっきり圧縮すれば、 printf("合計で%d万円です。\n",buy(input(),input()));//11 だけで、おわりますが^^