問題一覧
1
文字の並びを二重引用符①で囲んだものを②という
", 文字列リテラル
2
①は値が0の文字で、②進拡張表記で表すと③で、整数定数表記だと④になる。
ナル文字, 8, '\0', 0
3
文字列リテラル"..."の大きさは、末尾の①を含めた文字数と一致する。この値は、②("...")で求められる。
ナル文字, size of
4
文字列リテラルは①が与えられるため、プログラム開始から終了まで②を占有する。
静的記憶域期間, 記憶域
5
同じ綴りの文字列リテラルが複数ある場合、1個のものとみなして記憶域を節約するのか、別個のものとみなすかは①によって異なる
処理系
6
①の格納として最適なのが②の配列である。①の末尾は、最初に出現する③である
文字列, char, ナル文字
7
文字列を格納する文字配列の①は、次のいずれの形式でも行える。 char str[]= {②}; char str[]= ③;
初期化, 'A' , 'B' , 'C' , '\0', "ABC"
8
文字が一個もない、ナル文字だけの配列
空文字列
9
文字列中の全文字の走査は、先頭文字から初めて①に出会うまで順に着目して実現出来る
ナル文字
10
文字列を走査して、先頭文字からナル文字の①までの文字数をカウントすれば、②(③を含まない文字数)を得られる
直前, 文字列の長さ, ナル文字
11
画面に文字列を表示するためにprintf関数に与える返還指定は①である。表示の桁数や表示の右寄せ/左寄せなどは②や③などで指定できる。
%s, 最小フィールド幅, 精度
12
キーボードから文字を読み込むためにscanf関数に与える変換指定は①である。格納先として与える実引数の配列に②演算子を適用してはならない。
%s, &
13
関数が受け取る文字列は、①側が与えた配列そのものである。なお、文字列の末尾に②があるので、要素数を別の引数としてやり取りする必要は無い。
呼び出した, ¥0
14
文字列の長さを調べる関数は、引数の配列の要素のうち、最も①側に格納されているなる文字の②の値を返す関数とも考えられる。
先頭, 添字
15
文字列の配列は、配列の配列、すなわち①で表せる。 なる文字を含めて最大12文字まで格納できる文字列(すなわちchar[12]型の配列)を5個集めた配列は、次のように5行12列の①として実現できる。 char ss ②; ssは①のため、その構成要素は、添字演算子③を二重に した式ss[i][j]でアクセスできる
2次元配列, [5][12], []
16
アルファベットの文字の小文字を大文字に変換するのが①(関数)である
toupper関数
17
アルファベットの文字の大文字を小文字に変換するのが①(関数)
tolower関数
18
toupper関数、tolower関数などの対象は①のみである。いずれも②(ヘッダ)で提供される③関数である。
アルファベット, <ctype.h>, ライブラリ
19
// 名前を尋ねて挨拶 (文字列の読込み) #include <stdio.h> int main(void) { char name[48]; printf("お名前は: "); scanf("①", ②); printf("こんにちは、%sさん!!\n", name); return 0; } (1)①、②を答えよ (2)実引数nameは配列のため③演算子を置いてはいけない。 (3)呼び出したscanf関数は、キーボードから読み込んだ文字列を格納する際に、④に⑤(文字)を格納する。
%s, name, &, 末尾, ナル文字
20
char ns[ ] = " " ; 上記のように、文字数が0個の文字列を①という。 配列nsの要素数は②となり、終端を示す③文字だけが格納される。 すなわち、次の宣言と同じである。 char ns ④ ;
空文字列, 1, ナル, char ns[1] = {'\0'};
21
#include <stdio.h> int main(void) { char str[]="12345"; printf("%s\n", str); ① printf("%3s\n", str); ② printf("%.3s\n", str); ③ printf("%8s\n", str); ④ printf("%-8s\n", str); ⑤ return 0; } ①〜⑤の表示結果と、その意味を答えよ
12345(そのまま), 12345(最低3桁), 123(3桁まで), 12345(最低8桁で右寄せ), 12345 (最低8桁で左寄せ)
22
A ① -①が表示されると②側に寄せて表示され、指定されない場合は③側に寄せて表示される。 B ① 少なくともこの桁数の表示が行われる。指定が②された場合や、実際に表示する文字列の桁数が指定された値を超えるときは表示に必要な桁数で表示される。 C ① 表示する桁数の②を指定する。ここに指定された以上の文字は出ない。 D ① ②は文字列を表示するときの指定。配列内の文字は終端ナル文字の直前まで出力される。③が指定されない場合や、③が配列の大きさより大きい場合、配列は必ず④を含まなければいけない。
フラグ、左、右, 最小フィールド幅、省略, 精度、上限, 変換指定子、s、精度、ナル文字
23
文字列内の数字文字をカウントする #include<stdio.h> void str_dcount( ① char s[ ] , int cnt [ ]) { int i = 0; while(②){ if( ③ && ④) cnt[⑤]++; i++; } } int main(void) { int i; int dcnt[10] = {0}; //⑥ char str[128]; // ⑦ printf("文字列を入力してください: "); scanf("%s", ⑧); str_dcount(str, dcnt); puts("数字文字の出現回数"); for(i = 0; i < 10; i++) printf("%d': %d\n", i, dcnt[i]); return 0; }
const, s[i], s[i] >= '0', s[i] <= '9', s[i] - '0', 分布, 文字列, str
24
#include <★> #include<stdio.h> //文字列内の英字を大文字に変換 void str_toupper(① s[ ] ) { int i = 0; while(②){ s[i] = ③ ( ② ); i++; } } //文字列内の英字を小文字に変換 void str_tolower(① s[ ] ) { int i = 0; while(②){ s[i] = ④(②); i++; } int main(void) { char str[128]; printf("文字列を入力してください: "); scanf("%s", ⑤); str_toupper(str); printf("大文字:%s\n", str); str_tolower(str); printf("小文字:%s\n", str); return 0;
ctype.h, char, s[i], toupper, tolower, str
25
大文字から小文字に変換するときに使うヘッダは〈①〉 小文字→大文字を②、大文字→小文字を③
ctype.h, toupper関数, tolower関数