プログラミング応用 printfと変数
Visual Stadio 2017の 設定を保存しておく その前に Visual Stadio 2017の 設定を保存しておく
プロパティシートをつくる C言語設定を簡単にするために
プロパティマネージャーを開く 任意のプロジェクトを開く メニューの表示からその他のウインドウ プロジェクトマネージャーをクリック クリック
プロパティシートをつくる① プロパティマネージャーの「プロジェクト名」を右クリック 新しいプロジェクトプロパティシートの追加をクリック
プロパティシートをつくる② ウインドウが表示されるので任意のファイル名(拡張子は変えない)で追加する ①任意の ファイル名 ②追加を クリック
それぞれのフォルダで「Sheet」が追加された プロパティシートを追加できた それぞれのフォルダで「Sheet」が追加された
プロパティシートの設定をC仕様にする どれでもいいので追加したプロパティシートを右クリック プロパティをクリックする クリック
C用のプロパティシート設定① 設定画面が出るのでC言語用の設定にする
C用のプロパティシート設定② 「構成プロパティー」の「リンカー」、「システム」の「サブシステム」から「コンソール(後略)」 「適用」「OK」を押す。 「C/C++」の「プリプロセッサ」から「プリプロセッサの定義」の「編集」を選ぶ。 _CRT_SECURE_NO_WARNINGSをコピペして追加して「OK」を押す。 C言語の設定完成!
すべて「Sheet」で設定が適用された! シートの設定完了! すべて「Sheet」で設定が適用された!
シートの設定はここまで
次にプロジェクトをつくるとき① 最初から新しくプロジェクトを作った プロパティマネージャーからプロジェクト名を右クリックして「既存のプロパティシートを追加」する
次にプロジェクトをつくるとき② さっき作ったプロパティシートのプロジェクトのとこに移動して設定したプロパティシートを追加する 追加
次にプロジェクトをつくるとき③ すべてにプロパティシートが適用される!
次にプロジェクトをつくるとき④ ソリューションエクスプローラーからソース ファイル右クリックでCのソースを追加する C言語を書く 実行する(Ctrl + F5) 問題なし。OK!
ここまで大丈夫ですか?
printfの話
printfの書式指定 %d ( ) (小数のついていない数) 1, 2, 3, -45 %f (小数のついている数) 0.1, 1.0, 意味 例 %d ( ) (小数のついていない数) 1, 2, 3, -45 %f (小数のついている数) 0.1, 1.0, 2.2 %c ('で囲まれた半角文字1個) 'a', 'A' %s ("で囲まれた文字) "A", "ABC", "あ"
実行してみる① #include <stdio.h> int main(void){ printf("%d - %dは%dです \n", 3, 2, 3-2); return 0; }
実行してみる② #include <stdio.h> int main(void){ printf("%s %c %f \n", "6 ÷ 5", '=', 1.2); return 0; }
よくやる間違い printf("1+1=%dです \n", 2); printf("1+1=%dです \n"2); printf("%f", 2); printf("%c", "abc"); Printf("%s", 'a');
型には気を付けよう
C言語の変数をもうちょっと詳しく (数値計算にも関わってきます) printfもあるよ
整数型 型の名前 入る値の範囲 サイズ (ビット数) ( ) システムによる - unsigned int ( ) システムによる - unsigned int -2147483648~2147483647 32 unsined long 0~4294967295 short -32768~32767 16 unsined short 0~65535 -128~127 8 unsined char 0~255
実数型 型の名前 入る値の範囲 サイズ (ビット数) ( ) -3.4×1038~3.4×1038 32 ( ) -3.4×1038~3.4×1038 32 -1.7×10308~1.7×10308 64
実行してみる① #include <stdio.h> int main(void){ char a = 'X'; int b = 10, c = 100; double d = 1.1; printf("%c, %d, %d, %f \n", a, b, c, d); return 0; }
実行してみる② #include <stdio.h> int main(void){ unsigned char age = 25; double height = 166.7; float weight = 58.5; printf("年齢: %d歳\n", age); printf("身長: %fcm\n", height); printf("年齢: %fkg\n", weight); return 0; }
とりあえずは( )、( )、( )を覚えておく! printfがややこしい! printf %f %s %d "ABC" 128 0.9 とりあえずは( )、( )、( )を覚えておく!
printfはさらにややこしい! 実行してみよう #include <stdio.h> int main(void){ double hoge = 12345.12345; printf("小数4桁: %.4f \n", hoge); printf("全体10桁と小数2桁: %10.2f \n", hoge); printf("0が追加される: %010.2f \n", hoge); printf("小数点以下倍精度: %lf \n", hoge); return 0; } 実行してみよう
printfの表示桁指定 printf % 全体の桁数 . 小数の桁数 %lfは%fの( )の小数表現ができる 0を入れると d, fなど % 全体の桁数 . 小数の桁数 0を入れると 0が追加される d, fなど %lfは%fの( )の小数表現ができる
整数(int)型とは 100 int a = 100; パソコンのメモリ上 1 27 26 25 24 23 22 21 20 128 64 1 27 26 25 24 23 22 21 20 128 64 32 16 8 4 2 64 32 4 100 int a = 100;
実数(float)型とは -5 256 2.56×10-5 float a = 0.0000256; パソコンのメモリ上 全体で32bit 、 64bit 正負 小数の桁数 (指数部) 各桁の数値 (仮数部) -5 256 2.56×10-5 float a = 0.0000256;
文字型 文字は0〜127の番号のASCIIコードで表す charは-128〜127の整数だが、C言語では文 字と文字コード( 0〜127)を同等とみなす 'A'は数値の( )と同じである
実行してみる① #include <stdio.h> int main(void){ char a = 'A'; printf("%d \n", a); printf("%c \n", a); return 0; }
実行してみる② #include <stdio.h> int main(void){ int i = 72; printf("%d \n", i); printf("%c \n", i); return 0; }
よくやる間違い char a = 'ABC'; char a = "ABC"; char a = "あ";
文字列 文字列は文字の集まり、( )で表す ダブルクォート " は文字列、シングルクォート ' は1文字を表す 文字列は文字の集まり、( )で表す ダブルクォート " は文字列、シングルクォート ' は1文字を表す char s[ ]の配列で 文字を表すことができる
実行してみる① #include <stdio.h> int main(void){ char m[6] = "Hello"; printf("%c%c%c%c%c \n", m[0], m[1], m[2], m[3], m[4]); printf("%c \n", m[3]); printf("%s \n", m); return 0; }
実行してみる② #include <stdio.h> int main(void){ char str1[] = "Fukui"; char str2[] = "National"; char str3[] = "College"; char str4[] = "of Technology"; printf("%s %s %s %s \n", str1, str2, str3, str4); return 0; }
文字列は配列 char m[6] = "Hello"; ( )文字
日本語は気をつける! 日本語は全角(2バイト)なので、配列の個数は( )になる #include <stdio.h> int main(void){ char a[3] = "あ"; char m[11] = "こんにちは"; printf("%s \n", a); printf("%s \n", m); return 0; } 日本語は全角(2バイト)なので、配列の個数は( )になる
よく間違える、文字の代入 文字列をそのまま代入することはできない char a = 'A'; a = 'B'; printf("%c ¥n", a); char a[6] = "Hello"; a = "Good!"; printf("%s ¥n", a); 文字列をそのまま代入することはできない
strcpy()を使うためのヘッダファイル 実行してみる #include <stdio.h> #include <string.h> int main(void){ char m[11] = "Hello"; printf("%s \n", m); strcpy(m, "Good bye!"); return 0; } strcpy()を使うためのヘッダファイル 文字列を代入する ための関数
今週はここまで 何か質問はありませんか?
ちょっとした練習問題① 整数の変数a=123と実数の変数b=0.456を加算した結果a+bをprintfで表示しなさい。小数点以下は6桁まで表示すること。
ちょっとした練習問題② BMI = w ÷ h2 sd = 22 × h2 f = (w - sd) ÷ sd ×100 身長h(m)と体重w(kg)を変数に代入して、BMIと肥満度f(%)を計算し、身長、体重、BMIそして肥満度を表示する。 BMI = w ÷ h2 sd = 22 × h2 f = (w - sd) ÷ sd ×100