復習テスト3(15分)

 前回の復習です。印刷をせずに、この画面を見ながら、プロクターに口頭で答えてください。

問1

 次の用語をできるだけ詳しく説明してください。

問2

以下のプログラムは、ファイルに変数cの内容(この場合は数字の1)を書き込むプログラムです。括弧に適切な語句を入れてプログラムを完成させて下さい。

#include <stdio.h>

int main()
{
	int c = 1;
	【           】 /* ストリームへのポインタfpを定義 */

	fp = 【                       】 /* ファイルを書き出しモードで開く */
if 【          】{ /* ファイルを開けない場合は異常終了 */ printf("Cannot open file.\n"); return -1; } 【             】 /* ファイルに数字の1(変数cの内容)を書き込む */ 【             】 /* ファイルを閉じる */ return 0; }

問3

以下は、文字配列strに、文字配列str1(”Iwate ”)をコピーして文字配列str2(”is ”)を連結して表示し、さらに文字配列str3(”beautiful place.”)と文字配列str4(”nice place.”)を比較して大きい方を表示するという、まさに文字列操作の問題を出したいがためだけに生まれてきたようなプログラムです。括弧に適切な語句を入れてプログラムを完成させて下さい。また、結果として画面に表示される文字を答えてください。

#include <stdio.h>
【                】 /* ヘッダファイル読み込み */

【                】 /* 最大文字列長MAXLENを定義 */

int main()
{
	char str[MAXLEN] = "\0";
	char str1[] = "Iwate ";
	char str2[] = "is ";
	char str3[] = "beautiful place.";
	char str4[] = "nice place.";
	int result;  /* 比較結果を入れる */

	【                        】 /* strにstr1をコピーし、strが”Iwate ”となるようにする。 */

	【                        】 /* strとstr2を連結し、strが”Iwate is ”となるようにする。 */

	printf("%s",str);

	result = 【                        】 /* str3とstr4の文字列を比較して結果をresultに格納 */

	if ( result > 0 ) { /* str3とstr4を比較した結果が大きい方を表示 */
		printf("%s\n",【              】);
	} else if ( result < 0 ) {
		printf("%s\n",【              】);
	} else {
		printf(".....\n");
	}

	return 0;
}

結果として画面に表示される文字: 【                           】

おまけ

今回はファイルの書き込みしかやっていませんが、読み込みと追加も覚えてますか?
また、ここで使った以外の文字列入出力関数も覚えていますか?挙げられるだけあげてみてください。
問3で使用した文字列比較比較の関数は、文字列の何を比較しているかわかりますか?例えば文字列"xyz"と文字列"abcdefg"ではどちらが大きいですか?


作成:市川(ichikawa@soft.iwate-pu.ac.jp) 2005/04/29