- Nov 2023
-
kadai2.cse.ce.nihon-u.ac.jp kadai2.cse.ce.nihon-u.ac.jp
-
プロトタイプ宣言
-
文字列の順序を逆にした文字列を表示
ディクリメントを使うと良い
for(int i=2;i>=0;i--) {
}
i=2, i=1, i=0と処理される
※文字列の最後にはナル文字が入っていることに注意!!
-
文字列を文字型配列に読み込み
-
-
192.168.0.140 192.168.0.140
-
プロトタイプ宣言
-
文字列の順序を逆にした文字列を表示
ディクリメントを使うと良い
for(int i=2;i>=0;i--) {
}
i=2, i=1, i=0と処理される
※文字列の最後にはナル文字が入っていることに注意!!
-
文字列を文字型配列に読み込み
-
演習課題10-3
-
-
kadai2.cse.ce.nihon-u.ac.jp kadai2.cse.ce.nihon-u.ac.jp
-
末尾にナル(NULL)文字'\0'を格納する
-
"The word is "の表示に続けてwordを文字列として表示する
-
単語の文字数を読み込み,その文字数だけ名を文字型配列wordにキーボードから1文字ずつ読み込む
文字型配列sampleに1文字読み込む例
scanf("%c", &sample[添字]);
-
文字型配列の要素数50をdefine文でマクロ定義せよ
#define NUM 20
NUMの値が20になる
-
要素数50の文字型配列wordを宣言する
-
-
192.168.0.140 192.168.0.140
-
末尾にナル(NULL)文字'\0'を格納する
-
"The word is "の表示に続けてwordを文字列として表示する
-
単語の文字数を読み込み,その文字数だけ名を文字型配列wordにキーボードから1文字ずつ読み込む
文字型配列sampleに1文字読み込む例
scanf("%c", &sample[添字]);
-
文字型配列の要素数50をdefine文でマクロ定義せよ
#define NUM 20
NUMの値が20になる
-
要素数50の文字型配列wordを宣言する
-
演習課題10-2
-
-
kadai2.cse.ce.nihon-u.ac.jp kadai2.cse.ce.nihon-u.ac.jp
-
printf("name=%s\n", );
-
printf("name[%d]=%c\n", i, );
-
scanf("%s", );
-
変換指定子%sを用いて名前を文字型配列に読み込む
-
文字型配列の要素数を20としてdefine文でマクロ定義せよ
#define MAXLEN 20
char name[MAXLEN];
文字型配列の要素数が20.
文字列としては,最後のナル文字も含めて20文字まで入る,つまり,意味のある文字は19文字までの文字列が入る.参考授業資料(第10回)11ページ
-
-
192.168.0.140 192.168.0.140
-
演習課題10-4
-
-
192.168.0.140 192.168.0.140
-
演習課題9-1
-
3行5列からなる2次元配列
-
端末から読み込み
-
-
kadai2.cse.ce.nihon-u.ac.jp kadai2.cse.ce.nihon-u.ac.jp
-
各階の部屋数が4室である3階建てのアパートの住人の年齢を読み込み
入力情報で2次元配列に格納
2次元配列の一つ目の[ ]と二つ目の[ ]、行と列を間違えないように注意。
この問題の場合、一つ目の[ ]が階数、二つ目の[ ]が部屋数で作ることが多い。
-
[1th floor]
for(int i=2;i>=0;i--) {
}
i=2, i=1, i=0 の順で処理される
***反復処理の初期値は2から0へであって3から1へではないことに注意
-
[2th floor]
for(int i=2;i>=0;i--) {
}
i=2, i=1, i=0 の順で処理される
***反復処理の初期値は2から0へであって3から1へではないことに注意
-
[3th floor]
for(int i=2;i>=0;i--) {
}
i=2, i=1, i=0 の順で処理される
***反復処理の初期値は2から0へであって3から1へではないことに注意
-
2次元整数型配列に格納する
-
演習課題2
-
-
192.168.0.140 192.168.0.140
-
[3th floor
for(int i=2;i>=0;i--) {
}
i=2, i=1, i=0 の順で処理される
-
2次元整数型配列に格納する
-
各階の部屋数が4室である3階建てのアパートの住人の年齢を読み込み
入力情報で2次元配列に格納
-
[1th floor]
for(int i=2;i>=0;i--) {
}
i=2, i=1, i=0 の順で処理される
-
[2th floor]
for(int i=2;i>=0;i--) {
}
i=2, i=1, i=0 の順で処理される
-
演習課題9-2
-
-
kadai2.cse.ce.nihon-u.ac.jp kadai2.cse.ce.nihon-u.ac.jp
-
int score[][3] - 学生の3科目の得点を格納した配列
-
得点は0以上100以下の整数として,入力値が範囲外のときは再入力すること
再入力処理の例
do {
再入力処理
}while( 0以上100以下か判断 );
-
n人の学生の3科目の得点を端末から読み込み,整数型2次元配列scoreに格納する
入力情報で2次元配列に格納
-
演習課題4
-
-
192.168.0.140 192.168.0.140
-
int score[][3] - 学生の3科目の得点を格納した配列
-
得点は0以上100以下の整数として,入力値が範囲外のときは再入力すること
再入力処理の例
do {
再入力処理
}while( 0以上100以下か判断 );
-
n人の学生の3科目の得点を端末から読み込み,整数型2次元配列scoreに格納する
入力情報で2次元配列に格納
-
演習課題9-4
-
-
kadai2.cse.ce.nihon-u.ac.jp kadai2.cse.ce.nihon-u.ac.jp
-
192.168.0.140 192.168.0.140
-
実行例のように出力
-
演習課題9-3
-
-
kadai2.cse.ce.nihon-u.ac.jp kadai2.cse.ce.nihon-u.ac.jp
-
192.168.0.140 192.168.0.140
-
底辺と高さは,それぞれ0未満の値が入力された場合,"ERROR: value is not positive!"とエラーメッセージを表示し,再入力させる
★ 再入力処理の例
do {
再入力処理
}while( 0未満か判断 );
-
-
192.168.0.140 192.168.0.140
-
int score[ ]
-
整数型配列の要素数を20としてdefine文でマクロ定義せよ
#define SIZE 20 SIZEの値が20になる
-
試験の点数は整数値として読み込み,整数型配列に格納する
第7回 演習課題2のソースコードを参照
-
最高点を表示
プログラムの出力
-
試験の点数
プログラムの入力となる配列変数
-
n人
プログラムの入力となる変数
-
演習課題8-1
-
-
kadai2.cse.ce.nihon-u.ac.jp kadai2.cse.ce.nihon-u.ac.jp
-
※ベクトルa=(ax, ay, az)とベクトルb=(bx, by, bz)の内積の定義は,axbx+ayby+azbzである
-
double vector1[ ], double vector2[ ]
-
※ベクトルa=(ax, ay, az)とベクトルb=(bx, by, bz)の外積の定義は,(aybz-azby, azbx-axbz, axby-aybx)である
-
double vector3[ ]
-
double vector1[ ], double vector2[ ]
-
double vector[ ]
-
a・(a×b)=0,b・(a×b)=0が成り立つ
プログラムの出力となる計算結果
-
2つの3次元ベクトルaとb
プログラムの入力となる配列変数
-
演習課題4
-
-
kadai2.cse.ce.nihon-u.ac.jp kadai2.cse.ce.nihon-u.ac.jp
-
(int array[ ]
-
int array[ ]
-
int array[ ]
-
int array[ ]
-
int score[ ]
-
点数データの最大,最小,平均の各値
プログラムの出力
-
function enableScript() { var scriptElement = document.createElement('script'); scriptElement.src = 'https://hypothes.is/embed.js'; scriptElement.async = true document.head.appendChild(scriptElement); } // ?秒後にスクリプトを有効にする(1000=1秒) setTimeout(enableScript, 0); 配列に0から100の整数値を点数データ
プログラムの入力となる配列変数
-
演習課題3
-
-
kadai2.cse.ce.nihon-u.ac.jp kadai2.cse.ce.nihon-u.ac.jp
-
int array[ ]
main関数で配列に格納した値を引数とする
-
データを整数値として読み込み,添字番号0から順番に整数型配列に格納する
第7回の演習課題2のソースコードを参照
-
配列の要素を表示
プログラムの出力
-
function enableScript() { var scriptElement = document.createElement('script'); scriptElement.src = 'https://hypothes.is/embed.js'; scriptElement.async = true document.head.appendChild(scriptElement); } // ?秒後にスクリプトを有効にする(1000=1秒) setTimeout(enableScript, 0); 配列に整数値
プログラムの入力となる配列変数
-
演習課題2
-
-
kadai2.cse.ce.nihon-u.ac.jp kadai2.cse.ce.nihon-u.ac.jp
-
function enableScript() { var scriptElement = document.createElement('script'); scriptElement.src = 'https://hypothes.is/embed.js'; scriptElement.async = true document.head.appendChild(scriptElement); } // ?秒後にスクリプトを有効にする(1000=1秒) setTimeout(enableScript, 0); n人
プログラムの入力となる変数
-
演習課題1
-
整数型配列の要素数を20としてdefine文でマクロ定義せよ
#define SIZE 20 SIZEの値が20になる
-
試験の点数は整数値として読み込み,整数型配列に格納する
第7回 演習課題2のソースコードを参照
-
int score[ ]
-
最高点を表示
プログラムの出力
-
試験の点数
プログラムの入力となる配列変数
-
-
192.168.0.140 192.168.0.140
-
※ベクトルa=(ax, ay, az)とベクトルb=(bx, by, bz)の外積の定義は,(aybz-azby, azbx-axbz, axby-aybx)である
-
double vector3[ ]
-
double vector1[ ], double vector2[ ]
-
double vector[ ]
-
a・(a×b)=0,b・(a×b)=0が成り立つ
プログラムの出力となる計算結果
-
2つの3次元ベクトルaとb
プログラムの入力となる配列変数
-
演習課題8-4
-
double vector1[ ], double vector2[ ]
-
※ベクトルa=(ax, ay, az)とベクトルb=(bx, by, bz)の内積の定義は,axbx+ayby+azbzである
-
-
192.168.0.140 192.168.0.140
-
int array[ ]
-
int score[ ]
-
点数データの最大,最小,平均の各値
プログラムの出力
-
点数データの一覧を表示
プログラムの出力
-
配列に0から100の整数値を点数データ
プログラムの入力となる配列変数
-
演習課題8-3
-
int array[ ]
-
int array[ ]
-
int array[ ]
-
-
192.168.0.140 192.168.0.140
-
データを整数値として読み込み,添字番号0から順番に整数型配列に格納する
第7回の演習課題2のソースコードを参照
-
int array[ ]
main関数で配列に格納した値を引数とする
-
配列の要素を表示
プログラムの出力
-
配列に整数値
プログラムの入力となる配列変数
-
演習課題8-2
-
-
192.168.0.140 192.168.0.140
-
演習課題7-1
-
配列名はarrayとする arrayの大きさは5とする arrayの要素番号0から昇順に,5, 4, 3, 2, 1 で初期化する.ただし,配列の初期化には,初期化子 { } を用いること
型名 配列名[要素の数];
-
配列の全要素の合計
-
-
192.168.0.140 192.168.0.140
-
整数型配列arrayの要素数を10とする
型名 配列名[要素の数];
-
配列の大きさが10の場合,添字の範囲は0~9となることに注意すること
-
データ入力("Input Data") および データ一覧("Data List") のデータ番号(No. に続く1から10の数字)の表示は,2桁として揃えて表示する
右詰で3桁の場合 : printf("%3d", sample);
-
データの個数(配列の要素数)は #define によって定義する
#define SIZE 10; SIZEの値が10になる
-
-
kadai2.cse.ce.nihon-u.ac.jp kadai2.cse.ce.nihon-u.ac.jp
-
データの個数(配列の要素数)10は #define によって定義する
#define SIZE 10 SIZEの値が10になる
-
「検索用データより小さい数値」,「検索データと等しい数値」,「検索データより大きい数値」を格納するための配列を作成
int lower_array[SIZE]; 検索用データより小さい数値
int higher_array[SIZE]; 検索用データより大きい数値
int equal_array[SIZE]; 検索用データと等しい数値
-
演習課題4
-
-
kadai2.cse.ce.nihon-u.ac.jp kadai2.cse.ce.nihon-u.ac.jp
-
データの個数(配列の要素数)は #define によって定義する
#define SIZE 10 SIZEの値が10になる
-
最小値と最大値については,データの番号も表示する
第3回 演習課題5のプログラムを参照
-
平均値は,小数点以下2桁まで表示する
-
平均値
-
演習課題3
-
-
kadai2.cse.ce.nihon-u.ac.jp kadai2.cse.ce.nihon-u.ac.jp
-
データの個数(配列の要素数)は #define によって定義する
#define SIZE 10 SIZEの値が10になる
-
配列の大きさが10の場合,添字の範囲は0~9となることに注意すること
-
データ入力("Input Data") および データ一覧("Data List") のデータ番号(No. に続く1から10の数字)の表示は,2桁として揃えて表示する
右詰で3桁の場合 : printf("%3d", sample);
-
整数型配列arrayの要素数を10とする
型名 配列名[要素の数];
-
演習課題2
-
-
kadai2.cse.ce.nihon-u.ac.jp kadai2.cse.ce.nihon-u.ac.jp
-
配列名はarrayとする arrayの大きさは5とする arrayの要素番号0から昇順に,5, 4, 3, 2, 1 で初期化する.ただし,配列の初期化には,初期化子 { } を用いること
型名 配列名[要素の数];
-
配列の全要素の合計
-
演習課題1
-
-
192.168.0.140 192.168.0.140
-
「検索用データより小さい数値」,「検索データと等しい数値」,「検索データより大きい数値」を格納するための配列を作成
int lower_array[SIZE]; 検索用データより小さい数値
int higher_array[SIZE]; 検索用データより大きい数値
int equal_array[SIZE]; 検索用データと等しい数値
-
-
192.168.0.140 192.168.0.140
-
最小値と最大値については,データの番号も表示する
第3回 演習課題5のプログラムを参照
-
平均値は,小数点以下2桁まで表示する
-
データの個数(配列の要素数)は #define によって定義する.
#define SIZE 10; SIZEの値が10になる
-
平均値
-
- Oct 2023
-
192.168.0.140 192.168.0.140
-
演習課題7-4
-
データの個数(配列の要素数)10は #define によって定義する
#define SIZE 10; SIZEの値が10になる
-
-
192.168.0.140 192.168.0.140
-
演習課題7-3
-
-
192.168.0.140 192.168.0.140
-
演習課題7-2
-
-
192.168.0.140 192.168.0.140
-
演習課題5-4
-
プロトタイプ宣言
-
-
192.168.0.140 192.168.0.140
-
面積は,小数点以下2桁まで表示する
-
プロトタイプ宣言
-
面積を表示する
-
-
kadai2.cse.ce.nihon-u.ac.jp kadai2.cse.ce.nihon-u.ac.jp
-
static int max; /* 最大値を保持するstatic変数 */ static int count = 0; /* 関数max33が初めて呼ばれたかどうか判定するstatic変数 */
★★★ static(静的)な変数は局所変数の値を保存したいときに使用
-
すべての整数に対応させるために,関数内のstatic int max に初期値を与えてはならない.この関数が初めて呼ばれたときの引数から最大値を求め,その値を保持する.
★★★ static(静的)な変数は局所変数の値を保存したいときに使用
-
プロトタイプ宣言
-
演習課題5
-
-
kadai2.cse.ce.nihon-u.ac.jp kadai2.cse.ce.nihon-u.ac.jp
-
プロトタイプ宣言
-
演習課題4
-
-
kadai2.cse.ce.nihon-u.ac.jp kadai2.cse.ce.nihon-u.ac.jp
-
プロトタイプ宣言
-
静的変数
★★★ static(静的)な変数は局所変数の値を保存したいときに使用
-
繰り返して整数値を読み込み,それまでに入力された整数の最大値と最小値を,それぞれ関数max_valueとmin_valueの静的変数に格納する
★★ 演習課題5-5の関数max33の作りを参考に
int max33(int x, int y, int z) {
static int max;
static int count = 0;
int tmp;
if(count == 0)
{ / プログラムを記述せよ /}
else
{ / プログラムを記述せよ / }
return max;
}
-
個数は1以上10以下として,範囲外の値である場合, "ERROR : invalid value!"と表示して,個数を再入力する
★ 再入力処理の例
do {
再入力処理
}while( 1以上かつ10以下か判断 );
-
演習課題6
-
-
192.168.0.140 192.168.0.140
-
繰り返して整数値を読み込み,それまでに入力された整数の最大値と最小値を,それぞれ関数max_valueとmin_valueの静的変数に格納する
★★ 演習課題5-5の関数max33の作りを参考に
int max33(int x, int y, int z) {
static int max;
static int count = 0;
int tmp;
if(count == 0)
{ / プログラムを記述せよ /}
else
{ / プログラムを記述せよ / }
return max;
}
-
個数は1以上10以下として,範囲外の値である場合, "ERROR : invalid value!"と表示して,個数を再入力する.
★ 再入力処理の例
do {
再入力処理
}while( 1以上かつ10以下か判断 );
-
-
静的変数
★★★ static(静的)な変数は局所変数の値を保存したいときに使用
-
プロトタイプ宣言
-
-
192.168.0.140 192.168.0.140
-
すべての整数に対応させるために,関数内のstatic int max に初期値を与えてはならない.この関数が初めて呼ばれたときの引数から最大値を求め,その値を保持する.
★★★ static(静的)な変数は局所変数の値を保存したいときに使用
-
-
static int max; /* 最大値を保持するstatic変数 */ static int count = 0; /* 関数max33が初めて呼ばれたかどうか判定するstatic変数 */
★★★ static(静的)な変数は局所変数の値を保存したいときに使用
-
プロトタイプ宣言
-
-
192.168.0.140 192.168.0.140
-
現在の月の整数による入力を要求する.ここで,受け入れられる整数は1以上かつ12以下の値であり,0以下または13以上の値が入力された場合,"ERROR : invalid value!"と表示した後,再入力を促す
★ 再入力処理の例
do {
再入力処理
}while( 1以上かつ12以下か判断 );
-
"What month is it now?"の表示は,関数get_monthの中では行なわず,関数get_monthを呼び出す関数で表示する
★ main関数内で"What month is it now?"を表示する
printf("What month is it now?");
関数get_monthを呼び出す
-
-
kadai2.cse.ce.nihon-u.ac.jp kadai2.cse.ce.nihon-u.ac.jp
-
関数get_monthの仕様
演習課題3の関数get_monthを改造
-
関数error_messageの仕様
演習課題2の関数error_messageを使用する
-
プロトタイプ宣言
-
-
kadai2.cse.ce.nihon-u.ac.jp kadai2.cse.ce.nihon-u.ac.jp
-
数学関数を用いる場合には,コンパイル時にオプション -lm を付けることをわすれないこと
gcc -Wall -o example example.c -lm
-
数学関数を用いる場合には,math.hをインクルードすること
#include < math.h >
-
点A (x1, y1) と 点B (x2, y2) の距離を実数で計算する
距離 = \(\sqrt{(x_2-x_1)^2 + (y_2-y_1)^2}\)
sqrt()
pow()
-
プロトタイプ宣言
-
-
kadai2.cse.ce.nihon-u.ac.jp kadai2.cse.ce.nihon-u.ac.jp
-
用いること
-
プロトタイプ宣言
-
負の値が入力された場合,"ERROR : invalid value!"と表示した後,再入力を促す.
★ 再入力処理の例
do {
再入力処理
}while( 負の値か判断 );
-
-
kadai2.cse.ce.nihon-u.ac.jp kadai2.cse.ce.nihon-u.ac.jp
-
"What month is it now?"の表示は,関数get_monthの中では行なわず,関数get_monthを呼び出す関数で表示する
★ main関数内で"What month is it now?"を表示する
printf("What month is it now?");
関数get_monthを呼び出す
-
現在の月の整数による入力を要求する.ここで,受け入れられる整数は1以上かつ12以下の値であり,0以下または13以上の値が入力された場合,"ERROR : invalid value!"と表示した後,再入力を促す.
★ 再入力処理の例
do {
再入力処理
}while( 1以上かつ12以下か判断 );
-
プロトタイプ宣言
-
-
kadai2.cse.ce.nihon-u.ac.jp kadai2.cse.ce.nihon-u.ac.jp
-
"Error : invalid value!"と表示する
-
プロトタイプ宣言
-
-
kadai2.cse.ce.nihon-u.ac.jp kadai2.cse.ce.nihon-u.ac.jp
-
面積は,小数点以下2桁まで表示する
-
底辺と高さは,それぞれ0未満の値が入力された場合,"ERROR: value is not positive!"とエラーメッセージを表示し,再入力させる
★ 再入力処理の例
do {
再入力処理
}while( 0未満か判断 );
-
プロトタイプ宣言
-
面積を表示する
-
-
192.168.0.140 192.168.0.140
-
関数get_monthの仕様
演習課題3の関数get_monthを改造
-
関数error_messageの仕様
演習課題2の関数error_messageを使用する
-
プロトタイプ宣言
-
-
192.168.0.140 192.168.0.140
-
数学関数を用いる場合には,コンパイル時にオプション -lm を付けることをわすれないこと
gcc -Wall -o example example.c -lm
-
数学関数を用いる場合には,math.hをインクルードすること
#include < math.h >
-
点A (x1, y1) と 点B (x2, y2) の距離を実数で計算する
距離 = \(\sqrt{(x_2-x_1)^2 + (y_2-y_1)^2}\)
sqrt()
pow()
-
-
192.168.0.140 192.168.0.140
-
用いること
-
負の値が入力された場合,"ERROR : invalid value!"と表示した後,再入力を促す.
★ 再入力処理の例
do {
再入力処理
}while( 負の値か判断 );
-
-
192.168.0.140 192.168.0.140
-
"Error : invalid value!"と表示する
-
-
192.168.0.140 192.168.0.140
-
面積は,小数点以下2桁まで表示する
-
底辺と高さは,それぞれ0未満の値が入力された場合,"ERROR: value is not positive!"とエラーメッセージを表示し,再入力させる
★ 再入力処理の例
do {
再入力処理
}while( 0未満か判断 );
-