주요 문법 확인
1. 대입 연산자를 사용한 아래 식을 설명 해 보시오.
A. x = 100, 이처럼 x에 100을 할당하는 연산자 '='을 대입 연산자 라고 부른다.
1) | x = 100; | x는 100이다. |
2) | y = x + 1; | y는 x+1이다. |
3) | ch = 'a' | char 변수 ch에 'a'가 들어있다. |
2. 아래 산술 연산자를 포함하는 식의 계산 과정과 결과를 설명 해 보시오.
A. +, - , *. /. % 같은 산술 연산자가 있으며 덧셈, 뺄셈, 곱셈, 나눗셈, 나누고 남은 나머지를 반환하는 것들이 있다.
1) | 5 / 2 | int x = 5; int y = 2; printf("%d",x / y); |
/ 연산자는 값을 나누고 몫을 출력한다. %d로 출력할 경우 2가 나올 것이다. |
2) | 5.0 / 2 | float x = 5.0; int y = 2; printf("%f", x / y); |
여기서 몫은 2.500000이 나올 것이다. 정수의 표현 범위보다 실수의 표현 범위가 넓기 때문에 int y는 형 넓힘을 할 것이다. |
3) | 5.0 / 2.0 | float x = 5.0; float y = 2.0; printf("%f", x / y); |
여기서 몫은 2.500000이 나올 것이다. |
3. 다음 printf문의 출력 결과를 설명하시오.
1) printf("%d>%d의 결과는 %d입니다.\n", 3, 2, 3>2);
A. 첫 번째, 두 번째 %d는 3과 2를 %d(정수)값에 넣어 주고 세 번째 3>2는 bool형식임으로 1 또는 0밖에 나오지 않는다. 이러한 이유로 3>2는 true이기 때문에 1이 출력 될 것이다. [3>2의 결과는 1입니다.]
4. 자동 형넓힘, 자동 형좁힘의 예를 들어 설명 해 보시오.
A. int x와 double y를 더할 때 자동으로 int형 x가 double형으로 형 변환 되는 경우가 자동 형넓힘이다. 반대로, int x = 3.14 일 때 정수 범위인 3만 출력 할 수 있기 때문에 이러한 경우를 자동 형좁힘이라고 부른다.
5. 강제 형변환이 적용된 예를 들어 간단히 설명하시오.
#include <stdio.h>
int main(void) {
int x = 3;
double y = 3.14;
printf("%d", x + (int)y);
}
A. double y = 3.14인데 더할 때 (int)y로 강제 형변환을 했기 때문에 3이 되므로 여기선 3+3 즉 6이 출력 된다.
6. p.146의 프로그램 4-14를 수행하기 ㅓㅈㄴ에 출력 결과를 예상 해 보고 실행 결과와 비교 해 보시오.
#include <stdio.h>
int main(void) {
int x=1, y=2, z=3;
printf("%d\n", 10 * 2 / 5 * 2);
printf("%d\n", 10 - 2 * 5
+ 2 / 2);
printf("%d\n", ++x * z--);
printf("%d\n", x + z >= z + !y);
printf("%d\n", x || y && z);
printf("%d\n", z+= x >> 2 + ++y);
printf("%d\n", x = y = z = 5);
printf("%d\n", x = 1 + 2, 2 - 1);
}
연습문제 풀이
프로그램 연습
1. 아래에 주어진 함수에서 x의 값이 15일 때 함수의 결과를 출력하는 프로그램을 작성하시오.
#include <stdio.h>
int main(void) {
int x = 15;
printf("%d", (1/2*x*x) + (5/2*x) + 5);
}
A. 35
2. 근의 공식을 이용하여 주어진 함수의 두 근(x1, x2)을 출력하는 프로그램을 작성 하시오.
#include <stdio.h>
#include <math.h>
int main(void) {
int a = 4, b = 12, c = 5;
double x = (-b + (sqrt(b*b-4*a*c))) / (2 * a);
double y = (-b - (sqrt(b*b-4*a*c))) / (2 * a);
printf("%.1lf %.1lf", x, y);
}
A. x1 =- 0.5, x2 = -2.5
3. 길을 걸을 때 거리가 멀어지더라도 가까운 곳을 갈 때에 비해 걸으 모양이 달라지지 않는다. 단지 걸어야 할 걸음 수가 많아질 뿐이다. 마찬가지로 밥을 먹을 때도 밥의 양이 많고 적음에 따라 밥을 먹는 방법이 달라지지는 않는다. 밥이 많아지면 밥을 퍼는 횟수만 많아질 뿐이다.
정수를 입력하여 최대 값과 최소 값을 출력하려 한다. 조건 연산자를 사용하여 프로그램을 각각 작성해보자. 작성될 프로그램에서 수행하는 작업은 자료의 수가 증가함에 따라 할 작업의 횟수가 증가하는 형태여야 하며, 일하는 방식은 달라지지 않아야 한다.
1) 2개의 정수를 입력하여 최대값과 최소값을 출력하는 프로그램
2) 3개의 정수를 입력하여 최대값과 최소값을 출력하는 프로그램
3) 5개의 정수를 입력하여 최대값과 최소값을 출력하는 프로그램
4) 위 작성한 1), 2), 3)의 프로그램을 3개의 변수만 사용하도록 수정하여 보시오.
#include <stdio.h>
int main(void) {
int x[5];
for(int i=0; i<5; i++){
scanf("%d", &x[i]);
}
int value = 0;
for(int i=0; i<5; i++){
if(value < x[i]){
value = x[i];
}
}
printf("%d\n", value);
for(int i=0; i<5; i++){
if(value >= x[i]){
value = x[i];
}
}
printf("%d\n", value);
}
'대학교 수업 > C 프로그래밍' 카테고리의 다른 글
[C프로그래밍 실습과제 04/5장] 정답 풀이 (0) | 2021.10.01 |
---|---|
[C프로그래밍 실습과제 02/3장] 정답 풀이 (0) | 2021.09.17 |
[C프로그래밍 실습과제 01/2장] 정답 풀이 (0) | 2021.09.10 |