第3回[平成16年4月27日(火)]:PN04ー03.ppt 演算、整数型と浮動小数点型 今日の内容 1 2 3 4 5 6 復習 加減・乗除演算子 2項、単項演算子 浮動小数点型 浮動小数点型の入出力 今日の課題 皆さんの質問から pptの印刷を 忘れずに持参 • 変数名の中にキーワードが して下さい! 含まれていても良いか? → OKです。例えば、if はキーワードです が、 taifu は変数名としてOKです。 • scanf("%d,%d",&a,&b); という文 で、,の意味がよく分からない。 → キーボードからの入力で、数値の直後 に , を区切りとして入れるようにするか否 かの指定です。 ,有りでの入力 ,無し 12, 13 12 13 サンプルプログラム(変数、代入)復習 List1-12:二つの整数の入力と和の計算と表示 #include <stdio.h> 出力文 int main(void){ int n1, n2; 入力文 変数宣言 int wa; puts("two integers ? "); printf("整数1:"); scanf("%d",&n1); printf("整数2:"); scanf("%d",&n2); wa = n1 + n2; 式と代入文 printf("それらの和は%dです。\n", wa); return(0); 書式指定(見出し) } サンプルプログラム(演算) List2-1:二つの整数値の和・差・積・商・剰余の表示 int vx, vy; puts("以下に二つの整数を入力せよ"); scanf("%d %d", &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); printf("vx %% vy = %d\n",vx % vy); return(0); 式の表現(加減、乗除演算子) 演算記号 複雑な式:カッコ( ) 足算:+ 4*3+2-5/2+3*2 → 引算:ー 掛算:* (4*(3+2)-(5/2+3))*2→ 割算:/ → 剰余:% 計算の順序 4+-3 10/3+2 → ( ) 10/3/2 → 符号のー 同順位の場 10/3*2 → 合、左から */% 実行される +ー 10%4*-2→ 商と余りの計算について (整数型)/(整数型) 整数化(切り捨て) 12/6 → , 13/5 → , (-5)/2 → 余りの計算(剰余演算子 % ) 12%6 → , 13%5 → , 3%7 → 9 % 4 → -9 % 4 → 9 % -4 → –9 % -4 → 書式付きの出力文(複数の値) printf("1日は %d秒\n",24*60*60); 文字列はそのまま 書式を指定 変換指定子による変換 1日は 86400秒 見出し付き の出力 となる ◎複数の値を見出し付きで出力するには? 例)変数 n1,n2,n3 の値を出力する 書式付きの出力文(複数の値) scanf("%d %d %d",&n1,&n2,&n3); それぞれ対応 12 31 15 それぞれ対応 printf( "n1=%d, n2=%d, n3=%d",n1,n2,n3); 出力結果 n1=12, n2=31, n3=15 printf("n1=%d, n2=%d",n1 printf("n1=%d, n2= ); ",n1,n2); 演習(商と剰余) •n個のリンゴがある。これを一人につき4個 づつ配ると、何人に配ることができるか。ま た、何個残るか? プログラムを完成させよ。 int n, ninzuu, nokori; printf("リンゴの数は:"); scanf( ); ninzuu = ; nokori = ; printf(" ", ); 演習(商と剰余) • 一箱に5個のリンゴが入る箱がある。今、 n個のリンゴがある場合、何箱必要か? int main(void) { int hako, n; printf("リンゴの数は:"); scanf( ); = ; printf(" return(0); } ", ); 演算子の分類(オペランド数による) 加減演算子 足算:+ 引算:ー 乗除演算子 掛算:* 割算:/ 単純代入演算子 代入:= 剰余:% 2項演算子:(オペランド)(演算子)(オペランド) 単項+-演算子 符号不変:+ 符号反転:ー (演算子)(オペランド) サンプルプログラム List2-6[変形]:整数と浮動小数点数 整数化 浮動小数点型 int nx; double dx; float fx; nx = 9.99; dx = 9.99; printf("int型 nx=%d\n", nx); printf(" nx/2=%d\n", nx/2); printf("double型 dx=%f\n", dx); printf(" dx/2.0=%f\n", dx/2.0); scanf("%f %lf", &fx, &dx); printf("fx=%f, dx=%f\n", fx, dx); 整数と浮動小数点数 • 整数[変換指定子:%d] 誤差なく内部表現される 10進数 → 2進数に変換 表現範囲が狭い(せいぜい10桁) 小数点以下は無い ( … -2 -1 0 1 2 …) short int : 2バイト(16ビット) -32,768 ~ 32,767 int, long int : 4バイト(32ビット) -2,147,483,648~2,147,483,647 unsigned int : 4バイト(32ビット) 0 ~ 4,294,967,295 整数と浮動小数点数 ・浮動小数点数[変換指定子:%f,%lf,%Lf] 指数と仮数による内部表現:123.4→0.1234×103 表現範囲が広いが、誤差を伴う(有効桁数は数桁) 小数点がある: 1.23 12. .56 1.2e2 5E15 [入力: %f、出力:%f ] float : 4バイト 1.2×10-38 ~ 3.4×1038 [有効数字7桁] [入力:%lf 、出力:%f ] double : 8バイト 2.2×10-308 ~ 1.7×10308 [有効数字15桁] long double : 10バイト[入力: %Lf 、出力: %Lf ] 3.4×10-4932 ~ 1.1×104932 [有効数字18桁] 演習(整数型と浮動小数点型) 問. 数値として適当か。適当ならば、整数か浮 動小数点数か述べよ。 (1) -666 (2) -666. (3) -666.0 (4) -.666e3 (5) 483.500 (6) 16667E+6 (7) -3e6 (8) .09E0.5 変換指定子(%f) 浮動小数点数を数字(数文字)として出力 printf("%f",1.5*2+1.8*4); 文字(%f)の代わりに 数値を数字にして出力 浮動小数点値 を与える計算式 人間が読める数文字 計算結果 → 10.2 (小数点あり) として表示する パソコンのメモリ内では (0.102×102)10の浮動小 %f による変換 数点数で表現されている 演習 •次のプログラムの誤りを正せ #include <stdio.h> int main(void) { double dx; printf("dxの値は?"); scanf("%f",dx); printf("%dの2倍は%f\n",dx,2.0*dx); return(0); } 演習 • 画面に、半径2.5の円の面積を表示する プログラムを完成せよ(値だけでよい)。 #include <stdio.h> int main(void) { printf( return(0); } ); 演習 • 半径rを入力し、その円周の長さを見出し 付きで表示するプログラムを作成せよ。 #include <stdio.h> int main(void) { return(0); } 変換指定子(%f,%lf,%Lf) 浮動小数点数の入力 float fx; double dx; long double ldx; scanf("%f %lf %Lf", &fx, &dx, &ldx); printf("fx=%f, dx=%f, ldx=%Lf", fx, dx, ldx); 処理システムに依存するので注意すること 演習(数値の入力) 問.次の様に変数が宣言されたとき、各変数へ入力する 為のscanf関数を書け int a,b,c; (1) a (2) x (3) q (4) a b c (5) a x y (6) p q x (7) c z r float x,y,z; double p,q,r; 演習(数値の見出し付き出力) 問.次の様に変数を見出し付きで出力する為の printf関数を書け int a,b; (1) a b (2) a x y (3) p q x (4) b y q float x,y; double p,q; 今日の課題 入出力はすべて浮動 小数点型とする • 箱の縦、横、高さを入力し、その箱の体積 を出力するプログラムを作成せよ double length, width, height, volume; printf("縦、横、高さを入力せよ => "); scanf(" ", ); volume = printf("体積は ; です。\n", 提出用紙に質問・意見・感想・提案等も書いて下さい ); P入門(第3回)は 終了です。 次回(第4回)は 5月11日 続いて、P演習に入ります。 では、しばらく休憩します。
© Copyright 2024 ExpyDoc