サーティファイC言語プログラミング能力認定試験3級のまとめです
※間違いがあるかもしれませんので、ご容赦ください
問1にあたる知識
一般的なこと
- C言語は異なるハードウェアで動作させることのできる移植可能なプログラムを書くことができる(らしい)(すごい)
- プログラム開始処理において呼び出される関数の名前はmain関数
- 関数内の任意の場所で実行を終えるときはreturn文を使用する
- 標準ライブラリ関数
scanf
は、stdio.hで宣言されている - 文字操作関数はヘッダファイルctype.hをインクルードする
- 改行を表すときは¥nであらわす
- 水平タブを表すときは¥tであらわす
- 符号なし整数型unsigned int型を扱うことができる
- /**/で注釈(コメント)になる(ただし、ダブルコーテーション""内では無効)
/*
ここが注釈
*/
- 注釈/**/は入れ子にすることはできない
- 注釈/**/は複数行にわたって記述できる
/*
ここが注釈
複数行も可能
*/
- 注釈をどれだけ大量に記述しても実行速度には関わらない(コンパイル時に無視されるため)
その他
-
#include
前処理命令で読み込む対象のソースファイル内に#include
前処理命令を記述することができる - 前判定型のwhile文、後判定型のdo while文どちらも使用可能
- while(式)文の「式」の部分には反復処理の継続条件を記述する
- switch文の各caseの定義式には同値を記述できない
- switch文ではcaseの定義式のいずれにも一致しないときの処理をdefaultで記述することができる
- getchar関数は標準入力から1文字単位で文字を読み込み、ファイルの終わりで
EOF(End of File)
を返す - 文字列定数は¥0(ナル、ヌル文字)で終わる連続した文字の列である
- C言語には、文字列を連結する演算子はない(関数はあるstrcat())
- 下記2つは等価である
char c[] = "xyz";
char c[] = {'x','y','z','¥0'};
- isxdigitは16進数かどうかを判定する
問2にあたる知識
演算子シリーズ
演算子の名前 | 対応する演算子 |
---|---|
加算演算子 | + |
減算演算子 | - |
乗算演算子 | * |
除算演算子 | / |
剰余算演算子 | % |
インクリメント | ++ |
デクリメント | -- |
論理積演算子 | && |
論理和演算子 | || |
代入演算子 | = |
等価演算子 | == |
非等価演算子 | != |
定数に関すること
- 8進数は接頭語に0をつけて表記する
- ex.077(8進数)、008
- 16進数は接頭語に0x(小文字)または0X(大文字)をつけて表記する
-
char c = '8';
とchar c = 0x38;
は同値になる(ASCII表 16進表記) -
char c = '2';
とchar c = 062;
は同値になる(ASCII表 8進表記) -
int d = 7;
とint d = '7'- '0';
は同値になる計算は以下- 0010 0111(2) - 0010 0000(2) = 0000 0111(2) = 7(10)
書式(フォーマット)指定子
指定子 | データ型 | 説明 |
---|---|---|
%c | char | char型1文字 (charのc) |
%s | char * | 文字列 (stringのs) |
%u | unsigned int など | 符号なし10進整数 (Unsignedのu) |
%o | unsigned int, int など | 8進整数 (Octalのo) |
%x | unsigned int, int など | 16進整数 (HeXadesimalのx) |
%f | float | 浮動小数 (float) |
%ld | long | 倍精度整数10進 (long decimalの頭文字) |
※他にもあります
問4にあたる知識
-
#define
指令でマクロを置き換えられる -
#include
指令で他のソースファイルを読み込める - 以上の処理はプリプロセッサによって行われる
文字操作関数(標準ライブラリ関数)
-
<ctype.h>
で宣言される
関数名 | 説明 |
---|---|
isalpha | アルファベット(alphabet)文字であるか判定する |
isupper | 大文字(uppercase)であるか判定 |
islower | 小文字(lowercase)であるか判定 |
isdigit | 10進数数字であるか判定 |
isxdigit | 16進数数字であるか判定 |
isalnum | 10進数数アルファベット(alphabet)文字または数字(numeric)であるか判定 |
isspace | 空白文字(空白''、タブ\t、改行\n、垂直タブ\v、改ページ\f、復帰\r)であるか判定 |
toupper | 文字が小文字なら大文字に変換した値を返す(それ以外はそのままの値を返す) |
tolower | 文字が大文字なら小文字に変換した値を返す(それ以外はそのままの値を返す) |
問5にあたる知識
- printf関数で出力される値の表示桁数を指定できる
- 表示桁数は
[指定子<0またはマイナス><最小ケタ数>.<実際に表示する桁数>]
で指定でき、<>内は省略可能 - 0 の時は空き領域を0で埋め、マイナスの時は左詰めになる(デフォルトは右詰め)
sample.c
/*[指定子<0またはマイナス><最小ケタ数>.<実際に表示する桁数>]*/
printf("[%05d]",29); //00029
printf("[%03X]", 0xfa);//0FA
printf("[%6d]",2021);//ΔΔ2021
printf("[%-8s]", "TOKYO");//TOKYOΔΔΔ
printf("[%-15s]", "I am a boy.");//I am a boy.ΔΔΔΔ
printf("[%-4s]", "MUSIC");//MUSIC
printf("[%5.3s]", "PHOTOGRAPH");//ΔΔPHO
※Δは空白文字