情報ネットワーク導入ユニットⅠ
C言語
• 演算
+
,
-
,
*
,
/
,
%
• 代入
=
←C言語では
「代入」の意味
vx = a + b;
//a+bの結果をvxに代入
• 型:
int型
(整数)
double型
(実数)
• 演算での型変換 (整数,実数の混在)
• キャスト演算子 ・・・ 型を一時的に変更
• 書式指定:
printf("%6d¥n", a);
演算と型
加減,剰余演算
#include <stdio.h> int main(void){
int vx, vy;
puts("二つの整数を入力してください."); printf("整数vx:"); scanf("%d", &vx ); printf("整数vy:"); scanf("%d", &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 ); //商 printf("vx %% vy = %d¥n", vx % vy ); //余り return(0); } 教科書:p.22 の List 2-1 キーボードから2つの整 数を読込み,その和・差・ 積・商・剰余を画面に表示 するプログラムを作成しな さい. 二つの整数を入力してください 整数vx:57 整数vy:21 vx + vy = 78 vx – vy = 36 : vx % vy = 15 * 掛け算 / 割り算 % 余り(剰余) printfで%を表示するときは、%%と2つ続けて書く。
加減,剰余演算
#include <stdio.h> int main(void){
int vx, vy;
puts("二つの整数を入力してください."); printf("整数vx:"); scanf("%d", &vx ); printf("整数vy:"); scanf("%d", &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 ); printf("%d %% %d = %d¥n", vx, vy, vx % vy ); return(0); } キーボードから2つの整 数を読込み,その和・差・ 積・商・剰余を画面に表示 するプログラムを作成しな さい. 二つの整数を入力してください 整数vx:57 整数vy:21 57 + 21 = 78 57 - 21 = 36 : 57 % 21 = 15
代入 =
#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); } キーボードから2つの整数を 読込み,その和・差・積・商・ 剰余を画面に表示するプログ ラムを作成しなさい. = 代入 (等しいではない!) a = 10; // 10をaに代入 a = b; // bをaに代入 wa = vx + vy; //和をwaに代入 教科書:p.27
int型,double型
int
型
例)
int nx;
double
型
例)
double dx;
値
整数値
1,
12,
1000
実数
値
1.2, 0.003, 6.00
printf
printf("
%d
",
nx
);
printf("
%f
",
dx);
printf("%lf", dx );
変換指定:
printf表示を工夫
n = 12345; printf("%d", n ); //変数aの値を表示 printf("%7d", n ); //変数aの値を少なくとも7桁で表示 printf("n=%7d", n ); //変数aの値を少なくとも7桁で表示 1 2 3 4 5 1 2 3 4 5 n = 1 2 3 4 5 1 2 3 4 5 6 7 8 9 10変換指定:
printf表示を工夫
1 2 . 3 4 5 0 0 0 d = 12.345; printf("%f", d ); //double型変数dの値を表示 printf("%7.2f", d ); //dの値を少なくとも7桁,小数点以下2桁で表示 printf("d=%.1f", d ); //小数点以下1桁で表示 1 2 . 3 5 d = 1 2 . 3 1 2 3 4 5 6 7 8 9 10List
2-8:
#include <stdio.h> int main(void){ 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("n1 = %d¥n", n1 ); printf("n2 = %d¥n", n2 ); printf("n3 = %d¥n", n3 ); 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 整数どうしの計算→整数 整数と実数の計算→実数 計算結果の小数点以下の切り捨てに注目!List
2-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); return(0); } 二つの整数入力 整数A: 40 整数B: 45 平均は42.50000です 整数と実数の計算 → 実数で計算 整数 / 実数 で計算 ※ (na+nb) / 2 とすると どうなるか? 各自確認.List
2-10:
#include <stdio.h> int main(void){ int na, nb; /*整数*/ puts("二つの整数入力:"); printf("整数A:"); scanf("%d",&na); printf("整数B:"); scanf("%d",&nb);printf("平均は%fです¥n", (double)(na+nb)/2); return(0); } 二つの整数入力 整数A: 40 整数B: 45 平均は42.50000です (double) ・・キャスト演算子 一時的に整数を実数と みなして,計算する キャスト演算子 (double) 一時的に整数を実数扱いする
List
2-11:
#include <stdio.h> int main(void){ int na, nb, nc; /*整数*/ int sum; /*合計値用変数*/ double ave; /*平均値用変数*/ puts("三つの整数を入力");printf("整数A:"); scanf("%d", &na); printf("整数B:"); scanf("%d", &nb); printf("整数C:"); scanf("%d", &nc); sum = na + nb + nc;
ave = (double) sum / 3;
printf("それらの合計は%5d ¥n", sum ); printf("それらの合計は%5.1f ¥n", ave ); return(0); } 三つの整数入力 整数A: 87 整数B: 45 整数C: 59 それらの合計は 191 それらの平均は 63.7 キャスト演算子 (double) 一時的に整数を実数扱いする 整数型(int型)変数sumを 一時的に実数型(double型)にして計算. ※ (double)を書かないで ave = sum / 3; とすると結果はどうなるか?
□問題3-1. キーボードから2つの整数値を読込み,その商と剰余(余り) を表示するプログラムを作成しなさい. (実行結果例) 整数値を2つ入力 整数A:47 整数B:7 商 :6 余り:5 ( 部分はキーボード入力) ① キーボードから2つの整数値を読み込む ② 商と剰余を計算・・・ / と % ③ 結果を実行結果例のように表示 ・整数値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つの整数値を読込み,その商と剰余(余り) を表示するプログラムを作成しなさい. (実行結果例) 整数値を2つ入力 整数A:47 整数B:7 商 :6 余り:5 ( 部分はキーボード入力) ① キーボードから2つの整数値を読み込む ② 商と剰余を計算・・・ / と % ③ 結果を実行結果例のように表示 // 問題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); }
① キーボードから2つの実数値(double型)を読み込む ② 平均値を計算 → 2つを足して2で割る ③ 結果を実行結果例のように表示 #include <stdio.h> int main(void){ double x1, x2, avg; printf("2つの値の平均を求めます¥n"); printf("実数1 = "); scanf("%lf", &x1 ); printf("実数2 = "); scanf("%lf", &x2 ); avg = ( x1 + x2 )/2; printf("2つの値の平均値は%fです¥n", avg ); return(0); } □問題3-3. キーボードから2つの実数値を読込み,その平均値を表示す るプログラムを作成しなさい. (実行結果例) 2つの値の平均を求めます 実数1 = 1.6 実数2 = 3.8 2つの値の平均値は 2.700000 です