当日のOHP資料です。
次のファイルを、c:\usr\cに保存する。
Download : sample-001.c ( SJIS 版 )
/* * 2013/06/28 sample-001.c */ /* * 色々な型 * * 利用方法 * コンパイル * cc -Ic:\usr\c\include -o sample-001.exe sample-001.c * 実行 * sample-001 */ #include <stdio.h> #include "s_input.h" #include "s_print.h" /* * main 関数 */ int main ( int argc, char *argv[] ) { /* * 整数と文字の扱い */ s_print_string ( "文字の '9' に 1 を加えると「" ); s_print_char ( '9' + 1 ); s_print_string ( "」になります。\n" ); s_print_string ( "整数値の 9 に 1 を加えると「" ); s_print_int ( 9 + 1 ); s_print_string ( "」になります。\n" ); /* * 整数と浮動小数点数の違い */ s_print_string ( "13 を 2 で割ると「" ); s_print_int ( 13 / 2 ); s_print_string ( "」になります。\n" ); s_print_string ( "13.0 を 2.0 で割ると" ); s_print_double ( 13.0 / 2.0 ); s_print_string ( "」になります。\n" ); return 0; }
C:\usr\c>sample-001 文字の '9' に 1 を加えると「:」になります。 整数値の 9 に 1 を加えると「10」になります。 13 を 2 で割ると「6」になります。 13.0 を 2.0 で割ると6.500000」になります。 C:\usr\c>
Download : sample-002.c ( SJIS 版 )
/* * 2013/06/28 sample-002.c */ /* * 関数の例 * * 利用方法 * コンパイル * cc -Ic:\usr\c\include -o sample-002.exe sample-002.c * 実行 * sample-002 */ #include <stdio.h> #include "s_input.h" #include "s_print.h" /* * int minus_int ( int number ) * int number 符号を反転したい整数の値 * return number の値の符号を変換 * * minus_int を int を引数に int を返す関数 */ int minus_int ( int number ) { return number * (-1); /* 元の数に (-1) をかけると符号が反転する */ } /* * void print_message ( int number ); * int number; * 処理結果を出力する */ void print_message ( int number ) { s_print_int ( number ); s_print_string ( " の符号を反転すると " ); s_print_int ( minus_int ( number ) ); s_print_string ( " になります。\n" ); } /* * main 関数 */ int main ( int argc, char *argv[] ) { print_message ( 12 ); print_message ( 0 ); print_message ( -12 ); return 0; }
C:\usr\c>sample-002 12 の符号を反転すると -12 になります。 0 の符号を反転すると 0 になります。 -12 の符号を反転すると 12 になります。 C:\usr\c>
Download : sample-003.c ( SJIS 版 )
/* * 2013/06/28 sample-003.c */ /* * 関数の例 * * 利用方法 * コンパイル * cc -Ic:\usr\c\include -o sample-003.exe sample-003.c * 実行 * sample-003 */ #include <stdio.h> #include "s_input.h" #include "s_print.h" /* * double minus_double ( double number ) * double number 符号を反転したい浮動小数点数の値 * return number の値の符号を変換 * * minus_double を double を引数に double を返す関数 */ double minus_double ( double number ) { return number * (-1.0); /* 元の数に (-1.0) をかけると符号が反転する */ } /* * void print_message ( double number ); * double number; * 処理結果を出力する */ void print_message ( double number ) { s_print_double ( number ); s_print_string ( " の符号を反転すると " ); s_print_double ( minus_double ( number ) ); s_print_string ( " になります。\n" ); } /* * main 関数 */ int main ( int argc, char *argv[] ) { print_message ( 12.0 ); print_message ( 0.0 ); print_message ( -12.0 ); return 0; }
C:\usr\c>sample-003 12.000000 の符号を反転すると -12.000000 になります。 0.000000 の符号を反転すると -0.000000 になります。 -12.000000 の符号を反転すると 12.000000 になります。 C:\usr\c>
Download : sample-004.c ( SJIS 版 )
/* * 2013/06/28 sample-004.c */ /* * 関数の例 * * 利用方法 * コンパイル * cc -Ic:\usr\c\include -o sample-004.exe sample-004.c -lm * 実行 * sample-004 */ #include <stdio.h> /* sqrt/sin を利用するために、必要 */ /* コンパイルする場合に -lm を追加する必要がある事に注意 */ #include <math.h> #include "s_input.h" #include "s_print.h" /* * main 関数 */ int main ( int argc, char *argv[] ) { s_print_string ( "円周率(π)は " ); s_print_double ( M_PI ); /* math.h 内で定義 */ s_print_string ( " です。\n" ); s_print_string ( "2.0 の平方根は " ); s_print_double ( sqrt ( 2.0 ) ); s_print_string ( " です。\n" ); s_print_string ( "π/6 の正弦は " ); s_print_double ( sin ( M_PI/6.0 ) ); s_print_string ( " です。\n" ); return 0; }
C:\usr\c>sample-004 円周率(π)は 3.141593 です。 2.0 の平方根は 1.414214 です。 π/6 の正弦は 0.500000 です。 C:\usr\c>
/* * 2013/06/28 sample-001.c */ /* * 色々な型 * * 利用方法 * コンパイル * cc -Ic:\usr\c\include -o sample-001.exe sample-001.c * 実行 * sample-001 */ #include <stdio.h> #include "s_input.h" #include "s_print.h" /* * main 関数 */ int main ( int argc, char *argv[] ) { /* * 整数と文字の扱い */ s_print_string ( "文字の '9' に 1 を加えると「" ); s_print_char ( '9' + 1 ); s_print_string ( "」になります。\n" ); s_print_string ( "整数値の 9 に 1 を加えると「" ); s_print_int ( 9 + 1 ); s_print_string ( "」になります。\n" ); /* * 整数と浮動小数点数の違い */ s_print_string ( "13 を 2 で割ると「" ); s_print_int ( 13 / 2 ); s_print_string ( "」になります。\n" ); s_print_string ( "13.0 を 2.0 で割ると" ); s_print_double ( 13.0 / 2.0 ); s_print_string ( "」になります。\n" ); return 0; }
/* * 2013/06/28 sample-004.c */ /* * 関数の例 * * 利用方法 * コンパイル * cc -Ic:\usr\c\include -o sample-004.exe sample-004.c -lm * -lm が追加されているが、これは * c:/mingw/lib/libm.a * の中身を調べなさい (必要なら、その中の一部 * を利用する )。 * sin/cos/etc.. は libm.a の中にある * 実行 * sample-004 */ #include <stdio.h> /* sqrt/sin を利用するために、必要 */ /* コンパイルする場合に -lm を追加する必要がある事に注意 */ #include <math.h> #include "s_input.h" #include "s_print.h" /* * main 関数 */ int main ( int argc, char *argv[] ) { s_print_string ( "円周率(π)は " ); s_print_double ( M_PI ); /* math.h 内で定義 */ s_print_string ( " です。\n" ); s_print_string ( "3.0 の平方根は " ); s_print_double ( sqrt ( 3.0 ) ); s_print_string ( " です。\n" ); s_print_string ( "π/6 の正弦は " ); s_print_double ( sin ( M_PI/6.0 ) ); s_print_string ( " です。\n" ); return 0; }
/* * CDATE FILENAME */ /* * 関数の例 * * 利用方法 * コンパイル * cc -Ic:\usr\c\include -o BASENAME.exe FILENAME * 実行 * BASENAME */ #include <stdio.h> #include "s_input.h" #include "s_print.h" /* * int minus_int ( int number ) * int number 符号を反転したい整数の値 * return number の値の符号を変換 * * minus_int を int を引数に int を返す関数 */ int minus_int ( int number ) { /* return 式; は、 式の値を計算し、ここで、関数を終了し、 関数の値(返り値)として、その式の値を割り当てる という事をする。 もし、ある(式の)値を、関数の値としたければ、 return (式の)値 とすればよい。 */ return number * (-1); /* 元の数に (-1) をかけると符号が反転する */ /* 関数の値として、number の符号をかえたものをかえしたい なので return numner * (-1); としている。 */ } /* int minus_int ( int number ) { return number*(-1); } int 型の値を与えると、int 型の値を返す関数 int minus_int ( int ); -> プロトタイプ宣言(関数の型宣言) */ /* * void print_message ( int number ); * int number; * 処理結果を出力する */ void print_message ( int number ) { s_print_int ( number ); s_print_string ( " の符号を反転すると " ); s_print_int ( minus_int ( number ) ); s_print_string ( " になります。\n" ); } /* * main 関数 */ int main ( int argc, char *argv[] ) { print_message ( 12 ); print_message ( 0 ); print_message ( -12 ); return 0; }
#include <stdio.h> #include "s_print.h" /* * 与えらえた数(整数型)の二倍を返す * 名前は two_time_int * 引数は int 型 一つ * 結果は、 int 型 * 値は、引数の値の二倍 */ int two_time_int ( int number ) { /* number 仮引数変数 */ return number * 2; /* 引数で指定された number の二倍なので それを計算する式 ( number * 2 ) をかけばよい*/ } /* * main */ int main ( int argc, char *argv[] ) { s_print_string ( "123 の 2 倍は " ); s_print_int ( two_time_int ( 123 ) ); s_print_string ( "です。\n" ); }
#include <stdio.h> #include "s_print.h" /* * 与えらえた二つの数(浮動小数点数型)の和返す。 * 名前は add_double * 引数は double 型 二つ * 結果は、 double 型 * 値は、二つの引数の値の和 */ double add_double ( double a, double b ) { return a + b; } /* * main */ int main ( int argc, char *argv[] ) { s_print_string ( "12.34 と 56.78 の和は " ); s_print_double ( add_double ( 12.34, 56.78 ) ); s_print_string ( "です。\n" ); }
#include <stdio.h> #include "s_print.h" /* * 与えらえた二つの数(浮動小数点数型)の和返す。 * 名前は add_double * 引数は double 型 二つ * 結果は、 double 型 * 値は、二つの引数の値の和 */ double add_double ( double a, double b ) { return a + b; } /* * main */ int main ( int argc, char *argv[] ) { s_print_string ( "12.34 と 56.78 の和は " ); s_print_double ( 12.45 + 56.78 ); s_print_string ( "です。\n" ); s_print_string ( "11.11 と 22.22 の和は " ); s_print_double ( 11.11 + 22.22 ); s_print_string ( "です。\n" ); /* f(12.34,56.78) = 12.45 + 56.78 f(11.11,22.22) = 11.11 + 22.22 f(X,Y) = X + Y double f(double X, double X) { return X + Y; } }
#include <stdio.h> #include "s_print.h" /* * main */ int main ( int argc, char *argv[] ) { if ( 0 ) { /* if 文の条件部分が 0 -> C 言語では不成立 */ printf ( "条件は成立したか ?\n" ); } else { printf ( "条件は不成立だったか ?\n" ); } return 0; }
#include <stdio.h> #include "s_print.h" /* * main */ int main ( int argc, char *argv[] ) { if ( 1 ) { /* if 文の条件部分が 0でない -> C 言語では成立 */ printf ( "条件は成立したか ?\n" ); } else { printf ( "条件は不成立だったか ?\n" ); } return 0; }
#include <stdio.h> #include "s_print.h" /* * main */ int main ( int argc, char *argv[] ) { s_print_string ( "「 1 < 2 」とは : " ); s_print_int ( 1 < 2 ); s_print_string ( "です。\n" ); s_print_string ( "「1 > 2」とは : " ); s_print_int ( 1 > 2 ); s_print_string ( "です。\n" ); /* 比較などの条件式は、一般に、成立する場合は 1 そうで ない場合は 0 の整数値になる */ if ( 1 < 2 ) { printf ( "条件は成立したか ?\n" ); } else { printf ( "条件は不成立だったか ?\n" ); } return 0; }
#include <stdio.h> #include "s_print.h" /* * main */ int main ( int argc, char *argv[] ) { s_print_string ( "「 1 < 2 」とは : " ); s_print_int ( 1 < 2 ); s_print_string ( "です。\n" ); s_print_string ( "「1 > 2」とは : " ); s_print_int ( 1 > 2 ); s_print_string ( "です。\n" ); /* 比較などの条件式は、一般に、成立する場合は 1 そうで ない場合は 0 の整数値になる */ if ( 1 + 1 ) { /* 1 + 1 = 2 これは 0 でないので真 */ printf ( "条件は成立したか ?\n" ); } else { printf ( "条件は不成立だったか ?\n" ); } if ( 1 - 1 ) { /* 1 - 1 = 0 これは 0 なので偽 */ printf ( "条件は成立したか ?\n" ); } else { printf ( "条件は不成立だったか ?\n" ); } return 0; }
#include <stdio.h> #include "s_print.h" /* * 整数 n に対して 階乗 n! を計算する関数 * factrial * を考える * * factrial(4) = 4! = 4 * 3 * 2 * 1 = 24 * factrial(6) = 6! = 6 * 5 * 4 * 3 * 2 * 1 = 720 * factrial(n) = n! = n * (n-1) * .. * 2 * 1 * [考えかた] * factrial(n) = n! = n * (n-1) * .. * 2 * 1 * = n * [ (n-1) * .. * 2 * 1 ] * = n * factrial(n-1) * 一般的には、 * n * factrial(n-1) (n>1) * factrial(n) = { * 1 (n=1) * と「再帰的に定義」すれば(..を使わずに済むので..)良い * * [関数の定義] * 関数名 : factrial * 引数 : int 型を一つ * 返り値 : int * 値は、引数で与えられた数の階乗となる */ int factrial(int n) { if ( n < 2 ) { /* n が 2 より小さい */ return 1; /* 1! = 0! = 1 */ } else { /* n > 1 の時 */ /* n! = n * (n-1)! という性質から */ return n * factrial ( n - 1 ); } } /* * main */ int main ( int argc, char *argv[] ) { s_print_string ( "6! = " ); s_print_int ( factrial ( 6 ) ); s_print_newline(); return 0; }
#include <stdio.h> #include "s_input.h" #include "s_print.h" /* * main */ int main ( int argc, char *argv[] ) { /* * 目的 : * 一行分の文字列を入力して、小文字を大文字に * 変換して出力 */ /* step 1: 1 文字入力して、1 文字出力する */ s_print_char ( s_input_char() ); /* ^^^^^^^^^^^^^^ 文字入力 */ /* =========== 文字出力 */ return 0; }
#include <stdio.h> #include "s_input.h" #include "s_print.h" /* * main */ int main ( int argc, char *argv[] ) { /* * 目的 : * 一行分の文字列を入力して、小文字を大文字に * 変換して出力 */ /* step 2: 1 文字入力して、大文字にして 1 文字出力する 「小文字を大文字する」 小文字 'a' 〜 'z' : これがこの順にならんでいる 'a' は 'a' + 0 'b' は 'a' + 1 .. 'z' は 'a' + 26 大文字 ’A’ 〜 'Z' 'A' は 'A' + 0 'B' は 'A' + 1 .. 'Z' は 'A' + 26 もし、 'a' を 'A' にしたければ、 'a' - 'a' + 'A' = 'A' <*> 'b' を 'B' にしたければ、 'b' - 'b' + 'B' = 'B' 'b' - ('a'+1) + ('A'+1) = 'B' 'b' - 'a'-1 + 'A'+1 = 'B' 'b' - 'a' + 'A' = 'B' <**> ... 'z' を 'Z' にしたければ、 'z' - 'a' + 'A' 一般に、小文字を大文字にするには、 - 'a' + 'A' とすればよい */ s_print_char ( s_input_char() - 'a' + 'A' ); return 0; }
#include <stdio.h> #include "s_input.h" #include "s_print.h" /* * char to_upper_case ( char ch ) * char ch : 大文字にしたい文字のコード * return : ch が小文字なら大文字、それいがいはかえない */ char to_upper_case ( char ch ) { if ( 'a' <= ch && ch <= 'z' /* 小文字の時 */ ) { /* 小文字 : 'a' 〜 'z' * ch が小文字ならば 'a' <= ch <= 'z' */ return ch - 'a' + 'A'; /* 大文字に変換 */ } else { return ch; /* そのまま */ } } /* * main */ int main ( int argc, char *argv[] ) { /* * 目的 : * 一行分の文字列を入力して、小文字を大文字に * 変換して出力 */ /* step 3: 1 文字入力して、正く大文字にして 1 文字出力する */ s_print_char ( to_upper_case ( s_input_char() ) ); return 0; }
#include <stdio.h> #include "s_input.h" #include "s_print.h" /* * char to_upper_case ( char ch ) * char ch : 大文字にしたい文字のコード * return : ch が小文字なら大文字、それいがいはかえない */ char to_upper_case ( char ch ) { if ( 'a' <= ch && ch <= 'z' /* 小文字の時 */ ) { /* 小文字 : 'a' 〜 'z' * ch が小文字ならば 'a' <= ch <= 'z' */ return ch - 'a' + 'A'; /* 大文字に変換 */ } else { return ch; /* そのまま */ } } /* * * 何かをするには、まず、一文字取り出す必要がある * その文字は既に、入力済として、話を考える * その入力されている文字を next とする */ void print_upper_line ( char next ) { if ( next == '\n' ) { /* 次の文字が改行 */ /* 行の終わりまで読み込んでおり、すべての仕事は おわっている */ s_print_newline(); /* 最後に改行をだして御仕舞い */ } else { /* まだおわっていない */ /* まず、まだ、出力してない next を大文字して出力 */ s_print_char ( to_upper_case ( next ) ); /* 次の仕事に行くには、準備として、一文字読む必要がある*/ print_upper_line ( getchar() ); /* s_intput_char() でなく getchar() を使うは 実は、getchar() は、空白や、改行を読み飛ばすので */ } } /* * main */ int main ( int argc, char *argv[] ) { /* * 目的 : * 一行分の文字列を入力して、小文字を大文字に * 変換して出力 */ /* step 4: 一行分の文字の入力 「一行」は、「いくつか(0を含む)の文字」の後に「改行がきたもの => 改行がくるまでは、繰り返す、 改行がきたら、終わり 行 = 改行 | 文字 行 何か = if ( 改行 ) { おわり } else { 仕事をして 次をする (再帰呼出し) } */ /* * 仕事は、全て、print_upper_line にまかせてよいが 一文字だけは先に読んで、渡してあげる必要があるので、 getchar() を呼ぶ */ print_upper_line ( getchar() ); return 0; }
#include <stdio.h> #include "s_input.h" #include "s_print.h" /* 二分法をつかって、答のある領域をせばめて行く 条件 関数 f(x) が与えられていて f(x') = 0 となる x' が一つ欲い ここで、更に、a < b があたえられていて f(a) < 0 f(b) > 0 とする。 すると、 区間 [a,b] の中に x' が少くてもひとつ # 連続関数の性質(中間値の定理)と、 # 実数の連続性 いま、m = (a+b)/2 とする。 f(m)>=0 か f(m)<0 のいずれか f(m)>=0 x' は [a,m] にある f(m)<0 x' は [m,b] にある なので、 この作業を繰り返すと、x' の範囲が縮まる f(x)=x^3-a の根が a の三乗根 */ #define EPSIRON 0.00000001 /* 十分に小さい幅 */ double cube_root_sub ( double a, double min, double mid, double max ) { /* 欲いのは、a > 0 の三乗根 いま、候補としては、min と max の間に答があり f(min) < 0 < f(max) となっているとする。 また、mid は (min+max)/2 とする。 */ if ( max - min < EPSIRON /* 区間が十分に狭い */ ) { /* 区間の中点が答(にとっても近いので、それ)としてよい */ return mid; /* mid には、すでに min と max の中点が入っている */ } else { /* まだ、区間を狭くする必要がある */ /* f(mid) の符号をしらべて区間の長さを半分にする */ /* f(x) = x*x*x - a なので.. */ if ( mid*mid*mid - a < 0.0 /* f(mid) < 0 */ ) { /* 答は、mid と max の間にある */ return cube_root_sub ( a, mid, (mid+max)/2.0, max ); /* mid が、あたらしい min になり、 あたらしい min は、今の min と max の中点 */ } else { /* 答は、min と mid の間にある */ return cube_root_sub ( a, min, (min+mid)/2.0, mid ); } } } /* * main */ int main ( int argc, char *argv[] ) { /* 3 の立方根 */ s_print_string ( "3 の立方根は " ); s_print_double ( cube_root_sub ( 3.0, 1.0, (1.0+3.0)/2.0, 3.0 ) ); /* 3 の立方根は、3 が 1 より大きいので、1 より大きい 3 の立方根は、3 が 1 より大きいので、3 よりちいさい */ s_print_string ( "です。\n" ); }
Download : 20130628-01.c ( SJIS 版 )
/* * 課題 20130628-01 * * 2013/06/28 20130628-01-QQQQ.c * * キーボードから一行分の文字列を読込み、その中の小文字を全て大文字にする */ #include <stdio.h> #include "s_input.h" #include "s_print.h" /* * char to_upper_case ( char ch ) * char ch 大文字にしたい文字の文字コード * return ch が小文字ならば大文字にした文字コード、そうでなければ元の値 */ char to_upper_case ( char ch ) { if ( 'a' <= ch && ch <= 'z' ) { /* もし ch が小文字ならば */ /* 対応する大文字に変換して返す */ /* ** この部分を完成させなさい */ } else { /* そうでなければ.. */ return ch; /* 入力された文字コードをそのまま返す */ } } /* * void print_upper_line ( char next ) * char next 次に処理すべき文字 (文字を先読みする) */ void print_upper_line ( char next ) { if ( next == '\n' ) { /* 次の処理すべき文字が改行ならば */ s_print_newline(); /* 改行を出力して終わり */ } else { /* 改行でないならば.. */ /* その文字を大文字にして出力し.. */ s_print_char ( to_upper_case ( next ) ); /* 次の文字を読込み、処理を続ける */ /* 文字の読込みには getchar() を使う */ /* ** この部分を完成させなさい */ } } /* * main */ int main( int argc, char *argv[] ) { /* 最初の文字を読込み、関数を読み込む */ print_upper_line ( getchar() ); /* s_input_char() でなく getchar() を利用するのは、 * s_input_char() が空白や改行を読み捨てるようになっているため * 今回は、改行も読み出したいので getchar() を利用する */ return 0; }
ABC123abc456UvW
C:\usr\c\> 20130628-01-QQQQ AABBCC112233aAbBcC445566UUvVWW C:\usr\c\>
Download : 20130628-02.c ( SJIS 版 )
/* * 課題 20130628-02 * * 2013/06/28 DATE-02-QQQQ.c * * 一つ浮動小数点数値をキーボードから入力し、その立方根を出力する * 手段としては、「二分法」を使う */ #include <stdio.h> #include "s_input.h" #include "s_print.h" /* * */ #define EPSILON 0.00000001 /* 誤差幅 */ /* * double regula_falsi_cubic_root ( double a, double min, double mid, double \ max ) * double a 立方根の元になる数(正を仮定している) * double min, max 根の入る区間の範囲 * double mid min と mid の中点 * return a 立方根 * 二分法により、a の立方根を求める * 0 < min < a の立方根 < max */ double regula_falsi_cubic_root ( double a, double min, double mid, double \ max ) { if ( max - min < EPSILON ) { /* 十分に精度が上った */ return mid; /* 中点の値を答として返す */ } else { /* まだ、狭める必要がある */ /* min が解のどちら側にあるかを調べ.. それに併せて区間を調整 */ /* f(x)=x^3-a */ if ( mid * mid * mid - a < 0.0 ) { /* f(mid) の符号を確認 */ /* 解の左にあった */ /* ** この部分を完成させなさい */ } else { /* 解の右にあった */ return regula_falsi_cubic_root ( a, min, (min+mid)/2.0, mid ); } } } /* * double cubic_root ( double a ) * double a 立方根の元になる数 * return a 立方根 * a の立方根を求めて結果として返すが、 * 計算の基本は、regula_falsi_cubic_root にまかせる * ここでは、計算の正規化を行う */ double cubic_root ( double a ) { if ( a < 0.0 ) { /* a が負の数ならば.. */ /* -a の立方根を計算し、負数を返す */ /* ** この部分を完成させなさい */ } else if ( a < 1.0 ) { /* a が 1.0 以下なら */ /* ** この部分を完成させなさい */ /* 立方根は a と 1.0 の間にある */ } else { /* そうでなければ.. */ return regula_falsi_cubic_root ( a, 1.0, (1.0+a)/2.0, a ); /* 立方根は 1.0 と a の間にある */ } } /* * void print_cubic_root ( double a ) * double a 立方根を計算する数 * 元の数と、立方根を出力する */ void print_cubic_root ( double a ) { s_print_double ( a ); s_print_string ( " の立方根は " ); /* ** この部分を完成させなさい */ s_print_string ( " です。\n" ); } /* * main */ int main( double argc, char *argv[] ) { s_print_string ( "実数値を一つ入力してください : " ); print_cubic_root ( s_input_double() ); return 0; }
12.34
C:\usr\c\> 20130628-02-QQQQ 実数値を一つ入力してください : 12.34 12.340000 の立方根は 2.310850 です。 C:\usr\c\>