独C8.0(8章の理解度チェック)
独習Cの進捗状況
-------1月18日----------------------------------------
-------1月18日----------------------------------------
配列
二次元配列の入力
int main(void) {
int i
char str[9][40];
for (i = 0; i < 9; i++) {
printf("名前を入力してください %d:",i+1);
scanf("%s", &str[i]);
}
・1次元の方だけを書けばよい
大小の比較
if (max < num[i]) {
max = num[i];
h = i;
}
if (str2[i] < min) {
min = num[i];
l = i;
}
・比較後の最大値・最小値の入れ替えを忘れない
switch文
switch(i){
case 1:
文1;
文2;
break;
case 2:
文1;
文2;
break;
default:
文1;
文2;
break;
}
二つの文字列の比較
strcmp(文字列1,文字列2);
<string.h>が必要
一致すると0を返す
scanf
%sを使うのが賢明でないのは最初のホワイトスペースで
文字列の読み込みが止まるため
素数判定の関数模範例
int prime(int i) {
int j;
for (j = 2; j <(i/2) ; j++) {
if (!(i%j)) {
return 0;
}
}
return 1;
}
独C8.5・8.6
独習Cの進捗状況
-------1月16日----------------------------------------
プログラムのサイズを測定する?(コンパイラでの確認?)
%[最小フィールド][.][精度]フォーマット指定子
%15.2f→少数も含めた15桁、小数部2桁で表示
printf
フォーマット指定子の確認
16進数はアルファベットを含む
アルファベット小文字出力→%x
アルファベット大文字出力→%X
%n:文字数を出力 ちょっと特殊 VSでは弾かれるので補佐関数必要
#include<stdlib.h>
rand():乱数の生成
(確かに乱数だが何回実行しても同じ所に同じ数?)
scanf
フォーマット指定子の確認
%sは空白までしか読み取らない
スキャン集合%[]
aからzを表すスキャン集合 %[a-z]
scanf("%d_%c%d")→4_+5と入力できる
scanf("%3d%d"i,j)→12345と入力→i=123,j=45
%x→16進数
%d→10進数
%o→8進数
getchar()→<stdio.h>
キーボードから入力された文字を1文字だけ返す
getche()→<conio.h>
画面にエコーする
getch()→<conio.h>
画面にエコーしない
printf
%e:小文字の指数 例1.15e-9
%E:大文字の指数 例1.15E-9
スキャン集合:%[ ]
キーボードからの入力の際スキャン集合に含まれる文字を
見つけると読み込みを始め、スキャン集合にない文字が入
されると読み込みを終了する
printfとputs
puts関数の方がサイズが小さく実行速度が速い
EOF
入力・出力エラーが発生したときに返される値
独C8.3・8.4
独習Cの進捗状況
-------1月14日----------------------------------------
#include<conio.h>
-------1月14日----------------------------------------
#include<conio.h>
getch→_getch
cprinf→_cprintf
kbhit→_kbhit
アスキーコード
A:65
a:97
gets():Enterを押すまでキーボードからの文字を読みとる
そして読み取った物をstr配列に格納
改行はヌル文字に変換される
入力操作が成功すると先頭へのポインタを返し
入力操作に失敗するとヌルポインタを返す
puts():strが示している文字列を画面に出力する
(文字列の出力にprintfではなくputsが使われる主な理由は
puts関数の方がサイズが小さく実行速度が速いから)
↓
printfの完全上位互換としてputsを覚えます
gets→gets_s
p = gets_s(str);
printf("%s %s", p, str);
二つとも同じもの