[[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));
}
~
#comment