[[C言語講座第ニ回課題]] *演習 [#u6a16319] 変数を出力するためには printf("%d\n",変数名); とします。 1. int型の変数i,j,kを作りそれぞれ4,58,546を代入し出力せよ。 ~ #include <stdio.h> void main(void) { int i,j,k; i = 4; j = 58; k = 546; printf("%d\n",i); printf("%d\n",j); printf("%d\n",k); } ~ 2. 先ほどのi,j,kの合計をlに代入し出力せよ。 ~ #include <stdio.h> void main(void) { int i,j,k,l; i = 4; j = 58; k = 546; l = i + j + k; printf("%d\n",l); } ~ 3. 以下の式の実行順序を説明せよ。 int i=5; i+= (8+5*2)+(6<=i||3==i&&4>i)*2%1; ~ iがint型変数が5を記憶した状態で宣言される。 はじめに、(8+5*2)が計算され、(8+10)となり、18が出てくる。 次に、(6<=i||3==i&&4>i)が計算され、比較・等価の演算子が計算される。 かっこの中は、(0||0&&0)となり、0が出てくる。 ここまでをまとめると、i+= 18+0*2%1; という式になる。 次に、*が計算され、i+= 18+0%1; となる。 次は、%が計算され、i+= 18+0; となり、i+= 18; となる。 i+= 18+0; の代入演算子+=は、i = 18+5; という意味である。 よって、23がiに代入される。 ~ 4. 以下の出力が0になる理由を説明せよ。 int i=4,j=50; i=4/50; printf("%d\n",i); ~ iもjもint型変数で宣言されているので、小数点以下を記憶することができなくなっている。 小数点以下は切り捨てになるので、0がiに代入され、0が出力される。 出力が0.080000となるのは、次のようなソースコードである。 #include <stdio.h> void main(void) { float i=4.0; int j=50; i=4.0/50; printf("%f\n",i); } ~ *課題 [#m9dfc1df] > 以下の問題に回答すること。 但し出力には以下のようにする。 整数 printf("%d\n",変数名); 浮動小数 printf("%f\n",変数名); **宣言 [#k03aac81] > すべての型の変数を作る。 ~ #include <stdio.h> void main(void) { char a; short int b; int c; long int d; float e; double f; //long double型は、エラーが発生するので、これ以降、省略する } ~ **代入 [#m7705b7f] > すべての型の変数を作りその変数に代入する。その結果を出力する。 ~ #include <stdio.h> void main(void) { char a; short int b; int c; long int d; float e; double f; a = 'A'; b = 123; c = 123; d = 123; e = 1.23; f = 1.23; printf("%c\n",a); printf("%d\n",b); printf("%d\n",c); printf("%d\n",d); printf("%f\n",e); printf("%f\n",f); } ~ **初期化 [#b7e8cfe5] > すべての型の変数を作りその変数を初期化する。その結果を出力する。 ~ #include <stdio.h> void main(void) { char a = 'A'; short int b = 123; int c = 123; long int d = 123; float e = 1.23; double f = 1.23; printf("%c\n",a); printf("%d\n",b); printf("%d\n",c); printf("%d\n",d); printf("%f\n",e); printf("%f\n",f); } ~ **算術演算子 [#a4b83db8] > 二つの適当な数の入ったint型の変数を2つ作りすべての演算子を試す。その結果を出力する。 ~ #include<stdio.h> void main(void) { int i = 10,j = 3; printf("%d %d %d %d %d\n", i+j, i-j, i*j, i/j, i%j); printf("%d %d %d %d %d\n", i<<j, i>>j, i&j, i|j, i^j); } ~ **代入演算子 [#k967d7b0] > 二つの適当な数の入ったint型の変数を2つ作りすべての演算子を試す。その結果を出力する。 ~ #include<stdio.h> void main(void) { int i = 10,j = 3; i+=j; printf("+=%d\n",i); i-=j; printf("-=%d\n",i); i*=j; printf("*=%d\n",i); i/=j; printf("/=%d\n",i); i%=j; printf("%%=%d\n",i); i<<=j; printf("<<=%d\n",i); i>>=j; printf(">>=%d\n",i); i&=j; printf("&=%d\n",i); i|=j; printf("|=%d\n",i); i^=j; printf("^=%d\n",i); } ~ **比較演算子 [#b4db67ae] > 二つの適当な数の入ったint型の変数を2つ作りすべての演算子を試す。その結果を出力する。 ~ #include<stdio.h> void main(void) { int i = 10,j = 3; printf("%d %d\n", i<j, i>j); printf("%d %d\n", i<=j, i>=j); printf("%d %d\n", i==j, i!=j); } ~ **型変換 [#ze69bc41] > int型とdouble型の変数を作り一方をもう一方に代入してみる。両方の結果を出力する。 ~ #include<stdio.h> void main(void) { int i = 1; double j = 3.14; i = j; printf("%d %f\n", i, j); j = i; printf("%d %f\n", i, j); } ~ **その他 [#t0214a9d] > インクリメント、デクリメント、sizeof演算子を試す。 ~ #include<stdio.h> void main(void) { int i = 9; printf("%d\n",i++); printf("%d\n\n",i--); i = 9; i++; printf("%d\n",i); i--; printf("%d\n\n",i); printf("%d\n",sizeof(i)); } ~