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 $