/* 連続的に2次方程式を解くプログラム */ #include #include main() { int qeq( float a, float b, float c, float *x1p, float *x2p ); float a, b, c, x1, x2; for(;;) /* 無限ループ */ { printf("2次方程式 ax^2 + bx + c = 0 を解きます\n"); printf("係数 a, b, c を入力して下さい(a=0の時終了します):"); scanf("%f %f %f", &a, &b, &c ); switch( qeq( a, b, c, &x1, &x2 ) ) { case 2: printf("%f, %f\n", x1, x2 ); printf("の2実根。\n"); continue; case 1: printf("%f\n", x1 ); printf("の重根。\n"); continue; case 0: printf("実数解なし。\n"); continue; case -1: printf("2次方程式ではありませんでした。終了します。\n"); break; } break; } } /* main()の中で定義された自動(auto)変数の a, b, c と、 qeq()の仮引数(qeqの自動変数と同じ記憶クラス)の a, b, c は、 それぞれ全く別のメモリ領域が割り当てられる、別の変数である。 */ /* 2次方程式を解く関数 */ int qeq( float a, float b, float c, float *x1p, float *x2p ) { /* さー考えよう! */ } /* end of feq.c */