Download : sample-001.c
/* * 2020/07/03 sample-001.c */ /* * 返値を持つ関数 */ #include <stdio.h> /* * to_upper : 引数で与えられた文字が小文字なら大文字にする */ char to_upper ( char ch ) { if ( 'a' <= ch ) { /* もし、ch が 'a' 以上で.. */ if ( ch <= 'z' ) { /* 更に、ch が 'z' 以下なら.. */ return ch - 'a' + 'A'; /* 小文字なので大文字に変換して返す */ /* return 命令が実行されると、そこで関数は終了 */ } /* else {} */ /* else 以下はないので省略 */ } /* else {} */ return ch; /* 小文字でない場合は、そのまま返す */ } /* * main 関数 */ int main ( void ) { printf ( "一文字入力して、[Enter] キーを押してください : " ); putchar ( to_upper ( getchar() ) ); putchar ( '\n' ); return 0; }
k
$ ./sample-001.exe < sample-001.in 一文字入力して、[Enter] キーを押してください : k K $
Download : sample-002.c
/* * 2020/07/03 sample-002.c */ /* * main の返値 */ #include <stdio.h> /* * is_upper : ch が大文字なら 1 そうでなければ、0 を返す */ int is_upper ( int ch ) { if ( 'A' <= ch ) { if ( ch <= 'Z' ) { return 1; /* 大文字だった.. */ } } return 0; /* 大文字ではなかった.. */ } /* * main 関数 */ int main ( void ) { printf ( "一文字入力して、[Enter] キーを押してください : " ); if ( is_upper ( getchar() ) ) { printf ( "大文字なので 0 を返します。\n" ); return 0; } else { printf ( "大文字でなかったので 1 を返します。\n" ); return 1; } }
Q
$ ./sample-002.exe < sample-002.in 一文字入力して、[Enter] キーを押してください : Q 大文字なので 0 を返します。 $
Download : sample-003.c
/* * 2020/07/03 sample-003.c * * コンパイルの方法: * cc -c -I ~/c/include sample-003.c */ /* * s_print.h の使い方 */ #include <stdio.h> #include "s_print.h" /* s_print_... を利用する場合には必要 */ /* * main 関数 */ int main ( void ) { s_print_char ( 'A' ); /* 文字の出力 : putchar ( 'A' ) と同じ */ s_print_newline(); /* 改行の出力 : putchar ( '\n' ) と同じ */ s_print_string ( "Hello, World\n" ); /* 文字列の出力 : printf と同じ */ s_print_int ( 123 ); /* 整数値の出力 */ s_print_newline(); return 0; }
$ ./sample-003.exe A Hello, World 123 $
Download : sample-004.c
/* * 2020/07/03 sample-004.c * * コンパイルの方法: * cc -c -I ~/c/include sample-004.c */ /* * s_input.h の使い方 */ #include <stdio.h> #include "s_print.h" #include "s_input.h" /* s_input_... を利用する場合には必要 */ /* * main 関数 */ int main ( void ) { s_print_string ( "一文字を入力して、[Enter] を押してください : " ); s_print_char ( s_input_char () + 1 ); s_print_newline(); s_print_string ( "整数値を一つ入力して、[Enter] を押してください : " ); s_print_int ( s_input_int () + 1 ); s_print_newline(); return 0; }
B 123
$ ./sample-004.exe < sample-004.in 一文字を入力して、[Enter] を押してください : B C 整数値を一つ入力して、[Enter] を押してください : 123 124 $
Download : sample-005.c
/* * 2020/07/03 sample-005.c * * コンパイルの方法: * cc -c -I ~/c/include sample-005.c */ /* * 二つの入力を利用する場合 */ #include <stdio.h> #include "s_print.h" #include "s_input.h" /* * addfunc */ int addfunc ( int a ) { s_print_string ( "二つ目の整数値を入力して、[Enter] を押してください : " ); return a + s_input_int(); } /* * main 関数 */ int main ( void ) { s_print_string ( "一つ目の整数値を入力して、[Enter] を押してください : " ); s_print_int ( addfunc ( s_input_int() ) ); s_print_newline(); return 0; }
123 456
$ ./sample-005.exe < sample-005.in 一つ目の整数値を入力して、[Enter] を押してください : 123 二つ目の整数値を入力して、[Enter] を押してください : 456 579 $
Download : sample-006.c
/* * 2020/07/03 sample-006.c * * コンパイルの方法: * cc -c -I ~/c/include sample-006.c */ /* * 二つの入力を利用する場合 (失敗例) */ #include <stdio.h> #include "s_print.h" #include "s_input.h" /* * subfunc */ int subfunc ( int a, int b ) { return a - b; } /* * main 関数 */ int main ( void ) { s_print_string ( "二つの整数値を入力して、[Enter] を押してください : " ); s_print_int ( subfunc ( s_input_int(), s_input_int() ) ); s_print_newline(); return 0; }
123 456
$ ./sample-006.exe < sample-006.in 二つの整数値を入力して、[Enter] を押してください : 123 456 333 $
/* * 20200703-01-QQQQ.c * 文字を入力して、それを小文字に変換して出力する */ #include <stdio.h> /* * to_lower : 引数で与えられた文字が大文字なら小文字にする */ char to_lower ( char ch ) { if ( 'A' <= ch ) { /* もし、ch が 'A' 以上で.. */ if ( ch <= 'Z' ) { /* 更に、ch が 'Z' 以下なら.. */ /* 英大文字を英小文字に変換する */ /* 'A' => 'a' */ /* 'B' => 'b' */ /* ..... */ /* 'Z' => 'z' */ /* if 構文を利用すれば、次のようにできないことはない */ /* if ( ch == 'A' ) { return 'a'; } else if ( ch == 'B' ) { return 'b'; } ... */ /* 'A' => 'a' */ /* 'A' = 65 .. 97 => 'a' */ /* +32 */ /* 'B' => 'b' */ /* 'B' = 66 .. 98 => 'b' */ /* +32 */ /* 'Z' => 'z' */ /* 'Z' = 90 .. 122 => 'z' */ /* +32 */ return ch - 'A' + 'a'; /* 大文字を小文字する式 */ /* ch + ( 'a' - 'A' = 32 ) */ } /* else {} */ /* else 以下はないので省略 */ } /* else {} */ return ch; /* 大文字でない場合は、そのまま返す */ } /* * main 関数 */ int main ( void ) { printf ( "一文字入力して、[Enter] キーを押してください : " ); putchar ( to_lower ( getchar() ) ); putchar ( '\n' ); return 0; }
/* * 20200703-02-QQQQ.c * 二つの整数値を入力して、その商を出力する * * 二つの整数値 m, n が与えられれば、その商は m/n で計算できる * 整数値を出力する場合 s_print_int を使えばよい * 整数値を入力する場合は s_input_int を使う */ #include <stdio.h> #include "s_print.h" #include "s_input.h" /* * remainder * 割れる数を引数として、 * # 割られる数は、関数を呼び出す前に入力する * 割る数をキーボードから入力して、割り算を行う * その結果を値として返す */ int remainder ( int a ) { s_print_string ( "割る整数を入力して、[Enter] を押してください : " ); /* キーボードから、割る整数を入力し、それで、割られる数を割った 余りを値として返す。 */ return a % s_input_int(); /* s_input_int() % s_input_int() 一つ目と二つ目の関数がどちらが先かがよくわからない */ } /* * main */ int main ( void ) { s_print_string ( "割られる整数を入力して、[Enter] を押してください : " ); s_print_int ( remainder ( s_input_int() ) ); /* remainder 関数の引数に s_input_int を呼ぶ事により */ /* 一つ目に入力した整数値が、割られる数になるようにする */ s_print_newline(); return 0; }
#include <stdio.h> /* 関数の定義 命令に名前(関数名)を付ける */ void print_hello(void) { printf ( "Hello, World\n" ); } int main(void) { print_hello(); /* 関数名を利用して、命令を呼び出す */ return 0; }
#include <stdio.h> /* 関数の定義 命令に名前(関数名)を付ける */ void print_hello(void) { /* void : 引数がない */ printf ( "Hello, World\n" ); } void print_someone( char *someone ) { /* 仮引数変数の宣言 */ /* 仮引数変数の前に「char *」を付ける */ /* => 文字列が引数として与えられる */ printf ( someone ); /* someone : 後から定まる変数 */ printf ( " World\n" ); } int main(void) { print_hello(); /* 関数名を利用して、命令を呼び出す */ print_someone ( "abc" ); /* 実引数として関数の定義の本体 の最初の仮引数に入る値を指定 */ /* print_someone ( "abc" ) => "abc" -> someone printf ( someone ); printf ( " World\n" ); => printf ( "abc" ); printf ( " World\n" ); => 「abc World\n」 */ print_someone ( "こんにちわ" ); /* 実引数が変われば、関数の振る舞いも変化する */ return 0; }
#include <stdio.h> /* 文字を引数とする関数 */ void print_someone( char *someone ) { /* 引数が、「char *」と宣言 => 実引数は『文字列』を指定 */ printf ( someone ); /* printf は『文字列』を出力する関数 */ printf ( " World\n" ); } /* 引数で指定された『文字』を二度出力する */ void print_char_twice( char ch ) { /* 仮引数変数の名前を ch */ /* 引数が『文字』型である事を示す ために、「char」と型宣言 */ putchar ( ch ); /* 『文字』を出力するので、putchar */ putchar ( ch ); /* ch が『文字』を値として持つ */ } int main(void) { print_someone( "abc" ); /* 関数の仮引数宣言が char * なので、実引数に『文字列』を指定する */ print_char_twice ( 'A' ); /* 実引数には『文字』*/ print_char_twice ( 'z' ); /* 実引数には『文字』*/ putchar ( '\n' ); return 0; }
#include <stdio.h> /* キーボードから、一文字入力し、 その文字の次の文字を出力する */ void process_data ( char ch ) { /* 入力されるデータが『文字』なので char と宣言 */ putchar ( ch + 1 ); /* ch + 1 が ch の次文字 */ /* 文字を出力するので putchar を使う */ } int main(void) { /* input_data 関数で、データを入力する */ /* その入力したデータを process_data で処理する */ process_data ( getchar() ); /* 文字の入力 : getchar() */ return 0; }
#include <stdio.h> #include "s_print.h" /* s_print_AAAA を使う場合 */ #include "s_input.h" /* s_input_AAAA を使う場合 */ int main(void) { printf ( "キーボードから文字列を入力して[Enter] キーを押してください\n" ); s_print_string ( s_input_string() + 1 ); /* キーボードから入力した文字列を、+1 して画面に出力する */ printf ( "\n" ); printf ( "キーボードから整数値を入力して[Enter] キーを押してください\n" ); s_print_int ( s_input_int() + 1 ); /* キーボードから入力した整数値を、+1 して画面に出力する */ printf ( "\n" ); printf ( "キーボードから文字を入力して[Enter] キーを押してください\n" ); s_print_char ( s_input_char() + 1 ); /* キーボードから入力した文字を、+1 して画面に出力する */ printf ( "\n" ); return 0; }
#include <stdio.h> /* すべての自然数を出力する */ #include "s_print.h" #include "s_input.h" void print_nat ( int nat ) { s_print_int ( nat ); /* 引数の数を出力する */ s_print_newline(); /* 改行 */ print_nat ( nat + 1 ); /* 次の自然数列を出力する */ /* 再帰呼び出し */ } int main(void) { print_nat ( 0 ); /* 大学の数学では 0 を自然数に入れる事が多い */ return 0; }
#include <stdio.h> /* すべての自然数を出力する */ #include "s_print.h" #include "s_input.h" /* print_power ( n, 2^n ) */ void print_power ( int p, int n ) { s_print_string ( "指数 = " ); s_print_int ( p ); s_print_string ( " : 2^p = " ); s_print_int ( n ); s_print_newline(); getchar(); /* キーボードから読むまで待つ */ print_power ( p + 1, n * 2 ); } int main(void) { print_power ( 0, 1 ); /* べき乗の出力 */ return 0; }
#include <stdio.h> #include "s_input.h" #include "s_print.h" /* キーボードから整数値を一つ読み込んで、 その二倍の値を表示させる */ int main(void) { printf ( "整数値を入力してください : " ); s_print_int ( s_input_int() * 2 ); /* s_input_int で整数値を入力する * 2 ( 整数の掛け算 ) s_print_int で整数値を出力する */ /* リテラル(定数値表現 : 『値』を直接記述する方法 ) 2 => 「2」という『整数』を表す値 '2' => 「2」という『文字』を表す値 "2" => 「2」という『文字列』を表す値 */ printf ( "\n" ); return 0; }
#include <stdio.h> #include "s_input.h" #include "s_print.h" /* 整数値を引数とする関数 引数で与えられた、整数値を 2 倍して出力する関数 */ void print_two_times_int ( int n ) { /* 引数として整数値を指定するの「int」で仮引数変数を宣言 */ s_print_int ( n * 2 ); /* 仮引数変数 n に入っている整数値を二倍して出力 */ } int main(void) { printf ( "整数値を入力してください : " ); print_two_times_int ( s_input_int() ); /* 整数値を入力し、それを関数に渡す */ printf ( "\n" ); return 0; }
#include <stdio.h> #include "s_input.h" #include "s_print.h" /* 二つの整数の四則演算結果 */ void print_cal ( int n, int m ) { s_print_string ( "和 : " ); s_print_int ( n + m ); s_print_newline(); s_print_string ( "差 : " ); s_print_int ( n - m ); s_print_newline(); s_print_string ( "積 : " ); s_print_int ( n * m ); s_print_newline(); s_print_string ( "商 : " ); s_print_int ( n / m ); /* 整数割り算 ( 小数点以下は切り捨て ) */ s_print_newline(); s_print_string ( "余り : " ); s_print_int ( n % m ); s_print_newline(); } int main(void) { print_cal ( 100, 23 ); return 0; }
#include <stdio.h> char *return_string(void) { /* 関数が返す値の型を関数名の前に書く */ return "Hello, World\n"; } int main(void) { printf ( return_string() ); /* 関数が返した文字列を出力 */ return 0; /* main 関数は 0 という整数値を返していた */ }
#include <stdio.h> #include "s_input.h" #include "s_print.h" /* 引数の文字列から、その先頭の一文字を短くした文字列返す関数 */ char *return_short_string(char *string) { return string + 1; /* 『文字列』に +1 をすると、短くなる */ } int main(void) { s_print_string ( "文字列を入力してください : " ); s_print_string ( return_short_string ( s_input_string() ) ); s_print_newline(); return 0; /* main 関数は 0 という整数値を返していた */ }
#include <stdio.h> #include "s_input.h" #include "s_print.h" /* 引数の文字から、その次の文字を返す関数 */ char return_next_char( char ch ) { return ch + 1; /* 『文字』に +1 をすると、次の文字になる */ } int main(void) { s_print_string ( "文字を入力してください : " ); s_print_char ( return_next_char ( s_input_char() ) ); s_print_newline(); return 0; }
#include <stdio.h> #include "s_input.h" #include "s_print.h" /* 引数の整数値から、その次の整数を返す関数 */ int return_next_int( int n ) { return n + 1; /* 『整数値』に +1 をすると、次の整数値になる */ } int main(void) { s_print_string ( "整数を入力してください : " ); s_print_int ( return_next_int ( s_input_int() ) ); s_print_newline(); return 0; }
#include <stdio.h> #include "s_input.h" #include "s_print.h" /* 引数の整数値から、その次の整数を返す関数 */ int return_next_int( int n ) { return n + 1; /* 『整数値』に +1 をすると、次の整数値になる */ /* 直前に return 命令があり、これが実行されると、 この後命令は実行されない */ s_print_string ( "return 命令の後\n" ); /* この命令は実行されない */ } int main(void) { s_print_string ( "整数を入力してください : " ); s_print_int ( return_next_int ( s_input_int() ) ); s_print_newline(); return 0; }
#include <stdio.h> #include "s_input.h" #include "s_print.h" /* 引数の整数値から、その次の整数を返す関数 */ int return_next_int( int n ) { s_print_string ( "return 命令の前\n" ); return n + 1; } int main(void) { s_print_string ( "整数を入力してください : " ); s_print_int ( return_next_int ( s_input_int() ) ); s_print_newline(); return 0; }
前回(2020/06/26)の内容 「関数」という考え方 「プログラムの一部」に「名前」を付ける事 関数の定義方法 引数付き関数 関数の定義する命令の一部を仮引数変数にする => 後から、実引数を指定することにより、 仮引数変数の値を決める事ができる => 一つの関数定義で、様々な働き(命令の一部が変数で、それが変化する)をする関数が定義可能 関数の呼出し方法 関数名の後ろに実引数を指定して命令を呼び出す 実引数は、カンマ「,」で区切って、必要な個数だけ指定する 実引数の値は、仮引数変数に、順に割り当てられる !!! (基本) 実引数の個数とその型は、仮引数変数の個数と型に一致する必要がある !!! 仮引数変数の宣言型が char * => 文字列 !!! 仮引数変数の宣言型が char => 文字 関数の利用によって、 様々な機能を実現する事が可能になる 関数利用の重要性 機能に(適切な名前をつけて)抽象化を行い、分かりやすくする 文字を引数に持つ関数と型宣言 仮引数変数の「型宣言」 仮引数変数の宣言に「char」を付ける 文字を引数に持つ関数 : 「char *」から 「char」 関数の中で、仮引数変数を利用して、命令の振る舞いを変更できる 仮引数に割り当てられている『値』の『型』が異なれば、 それを対象した操作が異なる 例(出力) 値の型が char => 『文字』なので => putchar を使う 値の型が char * => 『文字列』なので => printf を使う 『値の型』によって、できる事や、振る舞いが異なるので、 仮引数変数にどのような型の値が入っているかが重要で、 関数の仮引数宣言では、『型』の指定(変数型宣言)が重要 『文字』の処理のしかた 『文字』そのものの表現 (「'」で挟む) => 『文字』の操作が可能 その処理の対象を関数の引数に与え、関数内で操作可能 2020/07/02 講義の目的 C 言語を利用して、プログラムが書けるようになりたい * C 言語の「プログラミング言語」としての言語教育 * C 言語のプログラムを実際に利用する ( コンパイルとか実行方法 ..) * 「プログラム」の書き方そのもの 「入力-処理-出力」 プログラムの基本構造 「プログラム」を 「何かを入力」 し、 「それを処理」 し、 「その結果を出力する」 ものとして考える。 <<プログラム>> 人間 => データ => [入力] -> [処理] -> [出力] => データ => 人間 キーボード ディスプレイ 情報を入手し、それを処理した後、出力する 入力-処理-出力 の基本パターン [入力部] main で入力を行い、処理関数を呼ぶ [処理部] 処理関数で処理を行い、出力関数を呼ぶ [出力部] 出力関数で出力を行う s_print.h/s_input.h の使い方 2020/07/03 のページの ダウンロードから、二つのファイル s_print.h s_input.h をダウンロード ダウンロード先は c:\usr\c\include を作り、その中に二つとも入れる 利用法 1. C プログラムファイル ( .c ソースファイル ) で、 #include "s_print.h" #include "s_input.h" とする。 2. 命令(関数)として、 s_print_AAAA ( AAAA -> char, string, int ) で、『文字』、『文字列』、『整数』が出力できる s_input_AAAA ( AAAA -> char, string, int ) で、『文字』、『文字列』、『整数』が入力できる 3. コンパイルする時 cc -I ~/c/include *.c でコンパイルする s_input.h/s_print.h の効用 『文字』、『文字列』、『整数』の入出力が可能 [注意] 「s_..」 は、この講義独自で、一般的でない これと同じ事をする「一般的な方法」もやります => 後期の B # 意図 : # 「一般的な方法」を理解するには、まだ知識が足りない # => 今の段階で導入するのはちょっと、よくない # 自分作成した独自の .h (ヘッダー) や関数の利用法を学びたい printf, getchar, putchar => 標準ライブラリ関数 # すでに、どこかで、定義されていて、 # リンク時に自動的に指定されるライブラリ内にあるので # 自分で定義しなくても使える (ライブラリ) # 標準関数なので、どこでも使える # 例: ubuntu, でも windows でも使える s_print_AAAA / s_input_AAAA は標準でない関数 整数型 C 言語でも整数(の一部)が扱える !!! コンピュータでは、無限が扱えない !!! 「実質的に」「無限なものを処理する」には、「無限に時間がかかる」 !!! 例 : すべての自然数を出力する !!! 実質「止まらないプログラム」になる !!! => 基本、コンピュータでは扱わない !!! コンピュータでは「有限もの」しか扱わない !!! cf. 「数学」では「無限」が(直接)扱える !!! 帰納法 : 任意の自然数 n に対する命題 P(n) が証明できる !!! P(0), P(1), P(2), ..., P(n), ... !!! => 無限個の命題を証明できる 整数型 : -2^31 ? 2^31 - 1 (-21,4748,3648 ? 21,4748,3647) まで範囲の整数 (cf. limits.h) 32 bit で表現できる値 ( 2^32 通りの整数値 ) !!! 有限な数値した扱えない 整数の計算 四則 ( 和: +, 差: -, 積: *, 商: /, 余り: % ) の計算ができる 整数同士の比較 ( if 構文の条件式で利用する ) 等価 ( 等しい: ==, 等しくない: != ) 大小比較 ( 大なり: >, 小さいなり: <, 以下: <=, 以上: >= ) 整数の入出力 s_print_int()/s_input_int() を利用する 整数型の宣言 ( 引数/返り値 ) 「int」を利用する ( 以前は char * [文字列] / char [文字] だった ) 返値(かえりち)のある関数 数学の関数 ( 例 : f(x) = x^2 ) 引数に数値を与えると、結果として数値が返る 例 : f(3) = 3^2 = 9, f(10) = 10^2 = 100 !!! 今日まで、「作成できる関数」 !!! (関数の前におまじないとして void を付ける ) !!! は、何か(出力)を行う機能(function)をもったものだけだった !!! 実は、値を返す関数(function)にもできる !!! 返り値のある関数 (値を返す関数) 返値(かえりち)のある関数(値を返す関数) C 言語でも、「値を返す」関数が定義できる => 「式」の中で利用できる 例 : 「getchar()」 : 入力した結果である『文字』を返す関数 標準ライブラリ関数 関数を呼ぶと、結果(の値)として、「入力した『文字』」が返る => putchar の実引数 ( 式の中で利用できる ) 例 2 : s_input.h の中の s_input_AAAA は、それぞれ、 AAAA 型の入力した値が返る関数 返り値をもつ関数の定義の仕方、呼び出し方 返値(かえりち)のある関数の宣言 関数宣言の頭部での関数名の前に「返す値の型」を書く 『文字』を返す関数は「char」と書く 『整数』を返す関数は「int」と書く 『文字列』を返す関数は「char *」と書く 実は、「void」は、「値を返さない関数」の意味だった !!! という事は、 !!! main 関数は「int」に対応する『値』を返す !!! わけで.. 「値を返す関数」の「値の返し方」 return 命令を利用する return 命令の機能 構文 : 「return 式;」 意味 : 式の値を求め、その式の値を関数の値として、 即時、関数を終了する 注意 : return は 「値を返す」という機能 と同時に 「関数の終了」も意味する => return 命令のある行で、関数の実行終了する => それより後は実行しない cf. 通常は、関数の本体 (「{」? 「}」の終りで、終了
課題プログラム内の「/*名前:ここ*/」の部分を書き換え「/*この部分を完成させなさい*/」の部分にプログラムを追加して、プログラムを完成させます。
Download : 20200703-01.c
/* * 20200703-01-QQQQ.c * 文字を入力して、それを小文字に変換して出力する */ #include <stdio.h> /* * to_lower : 引数で与えられた文字が大文字なら小文字にする */ char to_lower ( char ch ) { if ( 'A' <= ch ) { /* もし、ch が 'A' 以上で.. */ if ( ch <= 'Z' ) { /* 更に、ch が 'Z' 以下なら.. */ /* ** この部分を完成させなさい */ } /* else {} */ /* else 以下はないので省略 */ } /* else {} */ return ch; /* 大文字でない場合は、そのまま返す */ } /* * main 関数 */ int main ( void ) { printf ( "一文字入力して、[Enter] キーを押してください : " ); putchar ( to_lower ( getchar() ) ); putchar ( '\n' ); return 0; }
D
$ ./20200703-01-QQQQ.exe 一文字入力して、[Enter] キーを押してください : d $
Download : 20200703-02.c
/* * 20200703-02-QQQQ.c * 二つの整数値を入力して、その商を出力する */ #include <stdio.h> #include "s_print.h" #include "s_input.h" /* * remainder */ int remainder ( int a ) { s_print_string ( "割る整数を入力して、[Enter] を押してください : " ); /* ** この部分を完成させなさい */ } /* * main */ int main ( void ) { s_print_string ( "割られる整数を入力して、[Enter] を押してください : " ); s_print_int ( remainder ( s_input_int() ) ); s_print_newline(); return 0; }
100 13
$ ./20200703-02-QQQQ.exe 割られる整数を入力して、[Enter] を押してください : 100 割る整数を入力して、[Enter] を押してください : 13 9 $