演算とデータ型


[2−1]整数値を取得した後、10を加算した値、減算値、乗算値、10を除算したシェア、残数を出力するプログラムを作成する。

#include <stdio.h>

int main() {
	/* a를 b로 나눈 몫은 / 를 이용해서, 나머지는 %를 이용해서 구한다. */

	int n;

	printf("정수 를 입력하시오 : ");
	scanf("%d", &n);

	printf("10을 더한 값 : %d \n", n + 10);
	printf("10을 뺸 값 : %d \n", n - 10);
	printf("10을 곱한 값 : %d \n", n * 10);
	printf("10으로 나눈 값의 몫 : %d \t 10으로 나눈 값의 나머지 : %d \n", n / 10, n%10);

	return 0;
}

[2−1]整数値を取得し、プログラムを作成し、5で割ったシェアと残りの部分を出力する。

#include <stdio.h>

int main() {
	/* 형식 문자열이 아닌 %를 표시하고 싶은 경우에는 %%를 쓴다. 그 경우 printf("%%") 를 입력하면 %로 출력된다. 
	단, puts 함수는 형식 문자열 기능이 없기 때문에 %%가 그대로 %%로 출력됨! */

	int n;

	printf("정수 를 입력하시오 : ");
	scanf("%d", &n);

	printf("n / 5 = %d 이고, n %% 5 = %d 이다. \n", n / 5, n%5);

	return 0;
}

[2−3]取得された2つの整数値のパーセンテージをパーセンテージ形式で出力するプログラムを作成する。

#include <stdio.h>

int main() {
	int x,y;

	printf("정수 x 를 입력하시오 : ");
	scanf("%d", &x);
	printf("정수 y 를 입력하시오 : ");
	scanf("%d", &y);
	printf("\n");

	// printf("백분율 : %d \n ", x / y * 100);
	printf("백분율 : %d \n ", 100 * x / y );

	// x / y * 100 하는 경우 앞에서부터 계산해서 0 * 100 으로 계산 될 여지가 있으므로 주의! 

	return 0;
}

[2−4]2つの整数値を検索し,それらと和を出力するプログラムを記述する.

#include <stdio.h>

int main() {
	int x,y;

	printf("정수 x 를 입력하시오 : ");
	scanf("%d", &x);
	printf("정수 y 를 입력하시오 : ");
	scanf("%d", &y);
	printf("\n");

	printf("합 : %d , 곱 : %d\n ", x+y, x*y );

	return 0;
}

[2-5]で取得した2つの整数の平均値記号を反転させて出力するプログラムを作成します。

#include <stdio.h>

int main() {
	int x,y;

	printf("정수 x 를 입력하시오 : ");
	scanf("%d", &x);
	printf("정수 y 를 입력하시오 : ");
	scanf("%d", &y);
	printf("\n");

	printf(" >> %d\n ", -1*(x+y)/2 );

	return 0;
}

[2−6]入力された実数値をそのまま出力するプログラムを作成する。

#include <stdio.h>

int main() {
	/* double 형 변수로 값을 읽어 들일 때 scanf 함수에 부여할 형식 지정사는 %lf이고, 
	printf 함수에 부여할 형식 지정자는 %f 이다. */

	double a; 

	printf("실수 값을 입력해주세요 : ");
	scanf("%lf", &a);

	printf("입력한 실수 값 : %f \n", a);

	return 0;
}

[2−7]実数値を検索し、その値を半径とする円の幅を求め、出力プログラムを記述する。

#include <stdio.h>

int main() {
	double r; 

	printf("반지름을 입력해주세요 : ");
	scanf("%lf", &r);

	printf("원의 넓이 : %f \n", r*r*3.14);

	return 0;
}

[2−8]整数定数、浮動小数点定数、int型変数、双形変数の乗算または除算などの各種演算を実行するプログラムを記述し、データ型および演算に関する規則を決定する。

/* 양쪽 피연산자의 자료형이 같은 경우 얻어지는 결과는
연산 대상인 피연산자와 같은 자료형이지만, 
양쪽이 다른 경우 작은 쪽의 자료형 피연산자가 더 큰 쪽의 자료형으로 변환된 다음 연산이 수행된다. 

따라서 int형 자료형과 double형 자료형끼리 연산을 수행하면 
int형 피연산자의 값이 double 형으로 변환되는 암묵적 형 변환이 수행된다. 

*/

2つの[2-9]実数値を取得し、前の値を後の値の数パーセントに出力するプログラムを作成します。

#include <stdio.h>

int main() {
	double a, b;

	printf("a값을 입력하시오 : ");
	scanf("%lf", &a); 
	printf("b값을 입력하시오 : ");
	scanf("%lf", &b);

	printf("답 : %lf %% \n", a / b * 100);

	return 0;
}

[2−10]2つの整数値を取得し、前の値が後の値の数パーセントであることを誤って出力するプログラムを作成する。

#include <stdio.h>

int main() {
	int a, b;

	printf("a값을 입력하시오 : ");
	scanf("%d", &a); 
	printf("b값을 입력하시오 : ");
	scanf("%d", &b);

	printf("답 : %lf %% \n", (double)a / b * 100);

	return 0;
}
整数/整数演算では、小数部を破棄する割合(値)が得られますが、浮動小数点数間の演算は実行されません.そこで、双形aとbの値を求めるa/b演算では、
  • a、bが正の値の場合、100 xa/bとa/b x 100は異なる場合があります.
  • a,bが実数の場合、a/b x 100も結果を変更しません.
  • [2−11]台形面積を求めるプログラムを記述する。このとき、上、下、高を整数値に読み込み、幅を実数値に出力します。

    #include <stdio.h>
    
    int main() {
    	int a, b, c;
    
    	printf("윗변의 길이를 입력하시오 : ");
    	scanf("%d", &a); 
    	printf("밑변의 길이를 입력하시오 : ");
    	scanf("%d", &b);
    	printf("높이를 입력하시오 : ");
    	scanf("%d", &c);
    
    	printf("답 : %lf \n", (a + b) * c / 2.0);
    
    	return 0;
    }

    [2-12]キーを整数値に読み込み、標準ボディから誤って出力するプログラムを作成します。標準体では、(キー-100)*0.9を使用して解き、小数点以下の位置に出力します。

    #include <stdio.h>
    
    int main() {
    	int a;
    
    	printf("키를 입력하시오 : ");
    	scanf("%d", &a); 
    
    	printf("표준체중은 %.1f입니다 \n", (a - 100) * 0.9);
    
    	return 0;
    }

    [2−13]身長と体重を実数に読み込み、BMIを出力するプログラムを作成する。BMIは体重/身長^2で求めますが、小数点以下は2桁まで出力します。

    #include <stdio.h>
    
    int main() {
    	double a, b;
    
    	printf("키를 입력하시오 : ");
    	scanf("%lf", &a); 
    	printf("몸무게를 입력하시오 : ");
    	scanf("%lf", &b);
    
    	printf("BMI는 %.2f입니다 \n", b / (( a/100.0)* (a / 100.0)));
    
    	return 0;
    }