# 기본과제 및 제출 양식
1. 증감연산자가 무엇인지 찾아보고 x의 초기값이 1일때의 사용 예시를 적고 결과값을 printf해 보시오. (0.5시간 소요)
증감연산자 : 피연산자로부터 더하거나 빼는 등 단항 연산을 위한 연산자이다.
가. x++ : 변수 뒤에 증감연산자를 선언한 것을 후위 연산자라고 부르는데, 이 때 y = x++; 이라는 문장을 실행하게 되면, x를 y에 먼저 대입 한 후에 x를 1 증가 시킨다.
나. x-- : z = x--; 라는 문장을 실행시킨다면 우선 x를 z에 먼저 대입한 후에 x값을 1 감소시키는 것이다.
#include<stdio.h>
int main()
{
int x = 1;
int y, z;
y = x++; // y=1 이 되고, x는 2가 된다.
z = x--; // z는 2가 되고, x는 1이 된다.
printf("%d %d %d", y, z, x);
return 0;
}
2. 자동형변환(올림변환, 내림변환)에 대해 조사하고 아래 문항을 해결하시오(1시간 소요)
가. 자동형변환(올림변환, 내림변환) 에 대해 50자 이내로 요약하여 설명해보시오.
: 데이터 형식(type)을 자동으로 변환해주는 것을 의미하며, 대입 연산자 (=) 를 기준으로 오른쪽에서 왼쪽으로 자동 형 변환된다. 메모리 크기가 작은 자료형에서 큰 자료형으로 변환되는 것을 우선순위로 두며 (올림변환) 이와 반대로 큰 자료형에서 작은 자료형으로 변환하게 되면 내림 변환이라 하고, 이 때는 데이터 손실이 일어날 수 있다.
나. double a = 10, double b=3 일때 a/b=3.333... 이지만, int c = a/b처럼 짜면 어떤 값이 나오는지 printf 로 확인하고 그 이유를 설명하시오.
결과 : 3
이유 : a/b=3.333... 이지만 대입하려는 c가 int 타입 이기때문에 정수부분인 3만 대입 가능하다
다. int a = 10, int b=3일때 a/b=3 이지만, 캐스팅 연산자 (double)를 사용하여 (double)a/ (double)b 처럼 계산 후 이것을 double x에 대입한 후 값을 확인하면 3.333.... 이 정상적으로 나옴을 확인하시오. 그리고 이유를 설명하시오.
결과 : 정상적으로 3.333... 이 나오게 됨.
이유 : a와 b 모두 int형 type이지만 강제 형 변환으로 double로 만들었기 때문에, a = 10.000000 , b = 3.000000으로 변환 되어 double형의 값이 나오게 된다. 그것을 double type 변수 x에 대입하므로 값이 3.3333..으로 나오게 된다.
라. 임의의 유리수를 입력받아 소수점자리에서 올림, 버림 하여 정수부분만 뽑아주는 프로그램을 구현하시오.
마. '라'를 이용하여 임의의 유리수의 소수부분을 뽑아주는 프로그램을 구현하시오.
#include<stdio.h>
#pragma warning (disable:4996)
int main()
{
double a;
printf("임의의 유리수를 입력하시오 :\n");
scanf("%lf", &a);
int b = a;
printf("정수 부분 : %d ", b);
double c = a- b;
printf("소수 부분 : %lf", c);
return 0;
}
바. math.h를 include 한 뒤 '라,마'를 이용하여 임의의 유리수의 log값을 알 때 그 숫자를 소수넷째짜리까지 찾아주는 프로그램을 만드시오.
#include<stdio.h>
#pragma warning (disable:4996)
#include<math.h>
int main()
{
double a;
printf("임의의 유리수를 입력하시오 :\n");
scanf("%lf", &a);
double b = pow(10.00, a);
printf("log%.4f 입니다.", b);
return 0;
}
3. 구구단 2~9단을 출력해보시오. 단, 반복문을 사용하지 마시오 (3시간 소요)
가. int a=2, int b=1로 시작하시오.
나. a * b = c라고 출력해보시오.
다. b++를 하여 b를 2로 만드시오.
라. a * b = c라고 출력해보시오.
마. b++를 하여 b를 3로 만드시오.
바. a * b = c라고 출력해보시오.
사. b++를 하여 b를 4로 만드시오.
아. a * b = c라고 출력해보시오.
자. 나~아의 방식으로 b가 9일때까지 출력해보시오
차. 자 항이 끝나면 a++를 하여 a=3으로 만드시오. b=1을 주어 초기화하시오.
카. 다시 나~아의 방식으로 b가 9일때까지 출력해보시오.
타. 가~카의 방식으로 a가 9일때까지 출력해보시오.
#include<stdio.h>
#pragma warning (disable:4996)
int main()
{
int a = 2;
int b = 1;
printf("%d * %d = %d\n", a, b, a*b);
b++;
printf("%d * %d = %d\n", a, b, a * b);
b++;
printf("%d * %d = %d\n", a, b, a * b);
b++;
printf("%d * %d = %d\n", a, b, a * b);
b++;
printf("%d * %d = %d\n", a, b, a * b);
b++;
printf("%d * %d = %d\n", a, b, a * b);
b++;
printf("%d * %d = %d\n", a, b, a * b);
b++;
printf("%d * %d = %d\n", a, b, a * b);
b++;
printf("%d * %d = %d\n", a, b, a * b);
a++;
b = 1;
printf("%d * %d = %d\n", a, b, a * b);
b++;
printf("%d * %d = %d\n", a, b, a * b);
b++;
printf("%d * %d = %d\n", a, b, a * b);
b++;
printf("%d * %d = %d\n", a, b, a * b);
b++;
printf("%d * %d = %d\n", a, b, a * b);
b++;
printf("%d * %d = %d\n", a, b, a * b);
b++;
printf("%d * %d = %d\n", a, b, a * b);
b++;
printf("%d * %d = %d\n", a, b, a * b);
b++;
printf("%d * %d = %d\n", a, b, a * b);
a++;
b = 1;
printf("%d * %d = %d\n", a, b, a * b);
b++;
printf("%d * %d = %d\n", a, b, a * b);
b++;
printf("%d * %d = %d\n", a, b, a * b);
b++;
printf("%d * %d = %d\n", a, b, a * b);
b++;
printf("%d * %d = %d\n", a, b, a * b);
b++;
printf("%d * %d = %d\n", a, b, a * b);
b++;
printf("%d * %d = %d\n", a, b, a * b);
b++;
printf("%d * %d = %d\n", a, b, a * b);
b++;
printf("%d * %d = %d\n", a, b, a * b);
a++;
b = 1;
printf("%d * %d = %d\n", a, b, a * b);
b++;
printf("%d * %d = %d\n", a, b, a * b);
b++;
printf("%d * %d = %d\n", a, b, a * b);
b++;
printf("%d * %d = %d\n", a, b, a * b);
b++;
printf("%d * %d = %d\n", a, b, a * b);
b++;
printf("%d * %d = %d\n", a, b, a * b);
b++;
printf("%d * %d = %d\n", a, b, a * b);
b++;
printf("%d * %d = %d\n", a, b, a * b);
b++;
printf("%d * %d = %d\n", a, b, a * b);
a++;
b = 1;
printf("%d * %d = %d\n", a, b, a * b);
b++;
printf("%d * %d = %d\n", a, b, a * b);
b++;
printf("%d * %d = %d\n", a, b, a * b);
b++;
printf("%d * %d = %d\n", a, b, a * b);
b++;
printf("%d * %d = %d\n", a, b, a * b);
b++;
printf("%d * %d = %d\n", a, b, a * b);
b++;
printf("%d * %d = %d\n", a, b, a * b);
b++;
printf("%d * %d = %d\n", a, b, a * b);
b++;
printf("%d * %d = %d\n", a, b, a * b);
a++;
b = 1;
printf("%d * %d = %d\n", a, b, a* b);
b++;
printf("%d * %d = %d\n", a, b, a* b);
b++;
printf("%d * %d = %d\n", a, b, a* b);
b++;
printf("%d * %d = %d\n", a, b, a* b);
b++;
printf("%d * %d = %d\n", a, b, a* b);
b++;
printf("%d * %d = %d\n", a, b, a* b);
b++;
printf("%d * %d = %d\n", a, b, a* b);
b++;
printf("%d * %d = %d\n", a, b, a* b);
b++;
printf("%d * %d = %d\n", a, b, a* b);
a++;
b = 1;
printf("%d * %d = %d\n", a, b, a* b);
b++;
printf("%d * %d = %d\n", a, b, a* b);
b++;
printf("%d * %d = %d\n", a, b, a* b);
b++;
printf("%d * %d = %d\n", a, b, a* b);
b++;
printf("%d * %d = %d\n", a, b, a* b);
b++;
printf("%d * %d = %d\n", a, b, a* b);
b++;
printf("%d * %d = %d\n", a, b, a* b);
b++;
printf("%d * %d = %d\n", a, b, a* b);
b++;
printf("%d * %d = %d\n", a, b, a* b);
a++;
b = 1;
printf("%d * %d = %d\n", a, b, a* b);
b++;
printf("%d * %d = %d\n", a, b, a* b);
b++;
printf("%d * %d = %d\n", a, b, a* b);
b++;
printf("%d * %d = %d\n", a, b, a* b);
b++;
printf("%d * %d = %d\n", a, b, a* b);
b++;
printf("%d * %d = %d\n", a, b, a* b);
b++;
printf("%d * %d = %d\n", a, b, a* b);
b++;
printf("%d * %d = %d\n", a, b, a* b);
b++;
printf("%d * %d = %d\n", a, b, a* b);
return 0;
}
# 심화과제 제출 양식( 안해도 됨 )
1. 다음 증감연산자의 역할과 차이를 설명하고 이를 printf로 보이시오. http://tujanote.cafe24.com/bbs/board.php?bo_table=pds2&wr_id=55&sca=C&page=2 을 참조하시오.
가. x++ : x++ 하기 전 x값, 후의 x값 비교하여 printf
나. ++x : ++x 하기 전 x값, 후의 x값 비교하여 printf
다. x-- : x-- 하기 전 x값, 후의 x값 비교하여 printf
라. --x : --x 하기 전 x값, 후의 x값 비교하여 printf
#include<stdio.h>
#pragma warning (disable:4996)
int main()
{
int x = 0;
printf("x++하기 전 x 값:%d\n", x); // x = 0
printf("x++한 후 x 값:%d\n", x++); // x = 0 출력, x = 1 저장
printf("++x하기 전 x 값:%d\n", x); // x = 1
printf("++x한 후 x 값:%d\n", ++x); // x = 2 저장, x = 2 출력
printf("x--하기 전 x 값:%d\n", x); // x = 2
printf("x-- 한 후 x 값: %d\n", x--); // x = 2 출력, x = 1 저장
printf("--x하기 전 x 값:%d\n", x); // x = 1
printf("--x한 후 x 값:%d\n", --x); // x = 0 저장, x = 0 출력
return 0;
}
2. 나눗셈을 하는 프로그램을 만들되 %를 사용하지 마시오.
가. 제수와 피제수를 int형으로 입력받으시오.
나. 두 수를 나누어 몫을 구하고 int형 변수에 넣으시오
다. 두수를 나눈 제수, 피제수, 몫으로 부터 나머지 정리(검산식)를 이용하여 나머지를 구하시오. 힌트 : b=aQ+R, b-aQ=R
라. 제수, 피제수, 몫, 나머지를 출력하시오. 예를들어, ~을 ~으로 나누면 몫은~이고 나머지는~이다 로 출력하시오.
#include<stdio.h>
#pragma warning (disable:4996)
int main()
{
int divisor;
int dividend;
printf("제수를 입력하시오: ");
scanf("%d", &divisor);
printf("피제수를 입력하시오: ");
scanf("%d", ÷nd);
int a = dividend / divisor;
int b = dividend - (divisor * a);
printf("%d을 %d으로 나누면 몫은 %d이고 나머지는 %d이다.", dividend, divisor, a, b);
return 0;
}
'프로그래밍 > C' 카테고리의 다른 글
C언어 6주차 과제 (0) | 2020.11.02 |
---|---|
C언어 5주차 과제 (0) | 2020.11.02 |
C언어 3주차 과제 (0) | 2020.10.12 |
C언어 2주차 과제 (0) | 2020.10.06 |
C 언어 1주차 과제 (0) | 2020.10.06 |