情報ネットワーク導入ユニット Ⅰ C 言語 演算と型
演算 代入 演算と型 +,-,*,/,% = C 言語では 代入 の意味 vx = a + b; //a+b の結果を vx に代入 型 : int 型 ( 整数 ) double 型 ( 実数 ) 演算での型変換 ( 整数, 実数の混在 ) キャスト演算子 型を一時的に変更 書式指定 :printf("%6d n", a);
加減, 剰余演算 教科書 :p.22 の List 2-1 キーボードから 2 つの整数を読込み, その和 差 積 商 剰余を画面に表示するプログラムを作成しなさい. #include <stdio.h> int main(void){ int vx, vy; puts(" 二つの整数を入力してください."); printf(" 整数 vx:"); scanf("%d", &vx ); printf(" 整数 vy:"); scanf("%d", &vy ); 二つの整数を入力してください整数 vx:57 整数 vy:21 vx + vy = 78 vx vy = 36 : vx % vy = 15 } printf("vx + vy = %d n", vx + vy ); // 和 printf("vx - vy = %d n", vx - vy ); // 差 printf("vx * vy = %d n", vx * vy ); // 積 printf("vx / vy = %d n", vx / vy ); // 商 printf("vx %% vy = %d n", vx % vy ); // 余り return(0); printf で % を表示するときは %% と 2 つ続けて書く * 掛け算 / 割り算 % 余り ( 剰余 )
加減, 剰余演算 キーボードから 2 つの整数を読込み, その和 差 積 商 剰余を画面に表示するプログラムを作成しなさい. #include <stdio.h> int main(void){ int vx, vy; puts(" 二つの整数を入力してください."); printf(" 整数 vx:"); scanf("%d", &vx ); printf(" 整数 vy:"); scanf("%d", &vy ); 二つの整数を入力してください整数 vx:57 整数 vy:21 57 + 21 = 78 57-21 = 36 : 57 % 21 = 15 } printf("%d + %d = %d n", vx, vy, vx + vy ); printf("%d - %d = %d n", vx, vy, vx - vy ); printf("%d * %d = %d n", vx, vy, vx * vy ); printf("%d / %d = %d n", vx, vy, vx / vy ); printf("%d %% %d = %d n", vx, vy, vx % vy ); return(0);
代入 = キーボードから 2 つの整数を読込み, その和 差 積 商 剰余を画面に表示するプログラムを作成しなさい. 教科書 :p.27 = 代入 ( 等しいではない!) a = 10; // 10をaに代入 a = b; // bをaに代入 wa = vx + vy; // 和をwaに代入 #include <stdio.h> int main(void){ int vx, vy, wa, sa, se, sh, jo; puts(" 二つの整数を入力してください."); printf(" 整数 vx:"); scanf("%d", &vx ); printf(" 整数 vy:"); scanf("%d", &vy ); // 計算 wa = vx + vy; // 和の計算 sa = vx vy; // 差の計算 se = vx * vy; // 積の計算 sh = vx / vy; // 商の計算 jo = vx % vy; // 剰余の計算 // 結果の表示 printf("%d + %d = %d n", vx, vy, wa); printf("%d - %d = %d n", vx, vy, sa ); printf("%d * %d = %d n", vx, vy, se ); printf("%d / %d = %d n", vx, vy, sh ); printf("%d %% %d = %d n", vx, vy, jo ); } return(0);
int 型,double 型 int 型 double 型 例 ) int nx; 例 ) double dx; 値 整数値 1, 12, 1000 実数値 1.2, 0.003, 6.00 printf printf("%d", nx ); printf("%f", dx); printf("%lf", dx ); scanf scanf("%d", &nx ); scanf("%lf", &dx );
変換指定 :printf 表示を工夫 n = 12345; printf("%d", n ); printf("%7d", n ); printf("n=%7d", n ); // 変数 aの値を表示 // 変数 aの値を少なくとも7 桁で表示 // 変数 aの値を少なくとも7 桁で表示 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 1 2 3 4 5 n = 1 2 3 4 5
変換指定 :printf 表示を工夫 d = 12.345; printf("%f", d ); //double 型変数 dの値を表示 printf("%7.2f", d ); //dの値を少なくとも7 桁, 小数点以下 2 桁で表示 printf("d=%.1f", d ); // 小数点以下 1 桁で表示 1 2 3 4 5 6 7 8 9 10 1 2. 3 4 5 0 0 0 1 2. 3 5 d = 1 2. 3
List2-8: 計算結果の小数点以下の切り捨てに注目! #include <stdio.h> printf("n1 = %d n", n1 ); int main(void){ printf("n2 = %d n", n2 ); printf("n3 = %d n", n3 ); int n1, n2, n3, n4; /* 整数 */ double d1, d2, d3, d4; /* 実数 */ // 右辺の計算イメージ n1 = 5 / 2; // n1 2 n2 = 5.0 / 2.0; // n2 2.5 n3 = 5.0 / 2; // n3 2.5 n4 = 5 / 2.0; // n4 2.5 d1 = 5 / 2; // d1 2 d2 = 5.0 / 2.0; // d2 2.5 d3 = 5.0 / 2; // d3 2.5 d4 = 5 / 2.0; // d4 2.5 整数どうしの計算 整数整数と実数の計算 実数 } printf("n4 = %d n", n4 ); printf("d1 = %f n", d1 ); printf("d2 = %f n", d2 ); printf("d3 = %f n", d3 ); printf("d4 = %f n", d4 ); return(0); ( 実行結果 ) n1 = 2 n2 = 2 n2 = 2 n2 = 2 d1 = 2.000000 d2 = 2.500000 d3 = 2.500000 d4 = 2.500000
List2-9: 整数と実数の計算 実数で計算 #include <stdio.h> int main(void){ int na, nb; /* 整数 */ puts(" 二つの整数入力 :"); printf(" 整数 A:"); scanf("%d",&na); printf(" 整数 B:"); scanf("%d",&nb); printf(" 平均は %fです n", (na+nb)/2.0); 整数 / 実数 で計算 (na+nb) / 2 とするとどうなるか? 各自確認. return(0); } 二つの整数入力整数 A: 40 整数 B: 45 平均は 42.50000 です
List2-10: #include <stdio.h> int main(void){ キャスト演算子 (double) 一時的に整数を実数扱いする int na, nb; /* 整数 */ puts(" 二つの整数入力 :"); printf(" 整数 A:"); scanf("%d",&na); printf(" 整数 B:"); scanf("%d",&nb); (double) キャスト演算子 一時的に整数を実数とみなして, 計算する printf(" 平均は %f です n", (double)(na+nb)/2); return(0); } 二つの整数入力整数 A: 40 整数 B: 45 平均は 42.50000 です
List2-11: #include <stdio.h> int main(void){ キャスト演算子 (double) 一時的に整数を実数扱いする printf(" それらの合計は %5d n", sum ); printf(" それらの合計は %5.1f n", ave ); int na, nb, nc; /* 整数 */ int sum; /* 合計値用変数 */ double ave; /* 平均値用変数 */ puts(" 三つの整数を入力 "); printf(" 整数 A:"); scanf("%d", &na); printf(" 整数 B:"); scanf("%d", &nb); printf(" 整数 C:"); scanf("%d", &nc); } return(0); 三つの整数入力整数 A: 87 整数 B: 45 整数 C: 59 それらの合計は 191 それらの平均は 63.7 sum = na + nb + nc; ave = (double) sum / 3; (double) を書かないで ave = sum / 3; とすると結果はどうなるか? 整数型 (int 型 ) 変数 sum を一時的に実数型 (double 型 ) にして計算.
演習用
問題 3-1. キーボードから 2 つの整数値を読込み, その商と剰余 ( 余り ) を表示するプログラムを作成しなさい. 1 キーボードから 2 つの整数値を読み込む 2 商と剰余を計算 / と % 3 結果を実行結果例のように表示 ( 実行結果例 ) 整数値を 2 つ入力整数 A:47 整数 B:7 商 :6 余り :5 ( 部分はキーボード入力 ) 整数値 2つ int 型変数 2つ int na, nb; キーボード読込み scanf scanf("%d", &na ); scanf("%d", &nb ); 実行結果例のように printf(" 整数値を2つ入力 n"); printf(" 整数 A:"); scanf("%d", &na ); printf(" 整数 B:"); scanf("%d", &nb ); 計算 sho = na / nb; amari = na % nb; 結果用の変数の宣言を忘れない! int sho, amari; 結果を実行結果例のように表示 printf(" 商 :%d n", sho ); printf(" 余り :%d n", amari );
問題 3-1. キーボードから 2 つの整数値を読込み, その商と剰余 ( 余り ) を表示するプログラムを作成しなさい. 1 キーボードから 2 つの整数値を読み込む 2 商と剰余を計算 / と % 3 結果を実行結果例のように表示 ( 実行結果例 ) 整数値を 2 つ入力整数 A:47 整数 B:7 商 :6 余り :5 ( 部分はキーボード入力 ) // 問題 3-1 // 学籍番号 :0922XXX // 氏名 : #include <stdio.h> int main(void){ int na, nb, sho, amari; printf(" 整数値を2つ入力 n"); printf(" 整数 A:"); scanf("%d", &na ); printf(" 整数 B:"); scanf("%d", &nb ); } sho = na / nb; amari = na % nb; printf(" 商 :%d n", sho ); printf(" 余り :%d n", amari ); return(0);
問題 3-3. キーボードから 2 つの実数値を読込み, その平均値を表示す るプログラムを作成しなさい. ( 実行結果例 ) 2 つの値の平均を求めます実数 1 = 1.6 実数 2 = 3.8 2 つの値の平均値は 2.700000 です 1 キーボードから 2 つの実数値 (double 型 ) を読み込む 2 平均値を計算 2 つを足して 2 で割る 3 結果を実行結果例のように表示 #include <stdio.h> avg = ( x1 + x2 )/2; int main(void){ double x1, x2, avg; printf("2 つの値の平均を求めます n"); printf(" 実数 1 = "); scanf("%lf", &x1 ); printf(" 実数 2 = "); scanf("%lf", &x2 ); } printf("2 つの値の平均値は %f です n", avg ); return(0);
復習 : printf: 画面への表示 printf(" こんにちは. 私は臼杵です. n"); この部分 ( " と " で挟まれた部分 ) が画面に表示される こんにちは. 私は臼杵です. int a; a = 10; printf("a の値 = %d です n", a ); %d " " の後に続く, 整数値を表示 a の値は 10 です
復習 : printf: 画面への表示 int a, b, c; a = 10; b = 30; c = a + b; printf("%d + %d = %d です n", a, b, c ); 10 + 20 = 10 です
復習 : scanf: キーボード読込み int a; printf(" 整数を入力 :"); scanf("%d", &a ); printf("a = %d n", a ); 整数を入力 :20 a = 20 scanf("%d", &a ); キーボードから入力された整数を変数 a に入れる
復習 printf: 表示 scanf: 読込み printf(" 整数を入力 :"); scanf("%d", &x); printf(" 整数を入力 :", &x ); scanf(" 整数を入力 :", &x);
復習 キーボードから 2 つの整数を読込んで, その和を画面に表示するプログラムを作成しなさい 2 つの整数を入力整数 A:100 整数 B:40 和は 140 です // 演習 (2) 問題 10 // 学籍番号 0922150 // 名前 #include <stdio.h> int main(void){ int a, b; printf("2 つの整数を入力 n"); printf(" 整数 A:"); scanf("%d", &a ); printf(" 整数 B:"); scanf("%d", &b ); /* 計算と表示 */ printf(" 和は %d です n", a+b); } return(0);