혼공C 2주차 미션 |
---|
- 진도: Chapter 03-04 |
- 기본: 3-2 데이터 입력(p.109~110), 4-2 그 외 유용한 연산자(p.146~147) 확인 문제 풀고 인증하기 |
- 선택: Ch.04 도전 실전 예제(p.148) 풀고 인증하기 |
1. 다음과 같이 변수가 선언되어 있을 때, scanf 함수의 사용법이 옳은 것을 고르세요.
char ch; short sh; int in; float ft; double db;
① scanf("%d", &ch);
② scanf("%d", &sh);
③ scanf("%d%f", &in, &ft);
④ scanf("%f", &db);
🗣️풀이과정
scanf 함수는 입력 받을 값의 자료형에 따라 형식 지정자를 사용해야한다. 주어진 변수 선언을 기준으로 살펴보면,
위에 따라, 옳은 것은 3번이다.
⁂ 3번
2. 다음 프로그램의 빈칸에 알맞은 내용을 채워보세요.
#include <stdio.h> int main(void) { char fruit[20]; int cnt; printf("좋아하는 과일 : "); scanf("%s", ①); printf("몇 개 : "); scanf("%d", ②); printf("%s를 %d개 드립니다.", fruit, cnt); return 0; }
실행결과 좋아하는 과일 : 망고 몇 개 : 3 망고를 3개 드립니다.
🗣️풀이과정
배열은 이름만 사용하면 해당 배열의 첫 번째 요소를 가리키는 포인터로 간주되기 때문에 따로 주소 연산자(&)를 사용하지 않는다. 하지만 일반 변수에 대해서는 주소 연산자(&)를 사용하여 변수의 주소를 전달해야 한다.
따라서 위의 실행결과처럼 출력되려면,
①: fruit
②: &cnt
를 입력해야 한다.
⁂ ①: fruit, ②: &cnt
1. short형과 long형의 자료형의 크기를 비교하여 크기가 큰 자료형이 무엇인지 출력하세요.
#include <stdio.h> int main(void) { int res; //결과 변수 <<<>>> //sizeof의 피연산자로 자료형 이름을 사용하여 크기를 바이트 단위로 계산한다. //short형의 크기가 long형보다 크면 참이므로 1, 그렇지 않으먼 0을 res에 저장한다. <<<>>> //res가 1과 같으면 shrot형의 크기가 크므로 출력하고 //그렇지 않으면 long형을 출력한다. return 0; }
실행결과 long
🗣️풀이과정
#include <stdio.h>
int main(void)
{
int res; //결과 변수
//sizeof의 피연산자로 자료형 이름을 사용하여 크기를 바이트 단위로 계산한다.
//short형의 크기가 long형보다 크면 참이므로 1, 그렇지 않으먼 0을 res에 저장한다.
res = sizeof(short) > sizeof(long);
//res가 1과 같으면 shrot형의 크기가 크므로 출력하고
//그렇지 않으면 long형을 출력한다.
if(res == 1)
{
printf("short\n");
}
else
{
printf("long\n");
}
return 0;
}
2. 야구경기장의 좌석 수가 70개고 입장객 수가 65명일 때 입장률을 출력하세요.
#include <stdio.h> int main(void) { <<<>>> //경기장의 좌석수(seats) 초기화 <<<>>> //관중수(audience) 초기화 <<<>>> //입장률(rate)을 저장할 변수 <<<>>> //'audience/seats'를 바로 연산하면 둘 다 int형이므로 몫을 계산한다. //이 경우 관중수가 좌석 수보다 크지 않으므로 항상 0이 출력된다. //따라서 소수점까지 계산할 수 있도록 double형으로 형 변환한다. //나누기(/)와 곱하기(*)는 우선순위가 같으므로 연산 방향에 따라 왼쪽부터 //나누기 연산이 먼저 수행된다. <<<>>> //입장률 출력 return 0; }
실행결과 입장률 : 92.9%
🗣️풀이과정
#include <stdio.h>
int main(void)
{
int seats = 70; //경기장의 좌석수(seats) 초기화
int audience = 65; //관중수(audience) 초기화
double rate; //입장률(rate)을 저장할 변수
rate=(double)audience/seats*100;
//'audience/seats'를 바로 연산하면 둘 다 int형이므로 몫을 계산한다.
//이 경우 관중수가 좌석 수보다 크지 않으므로 항상 0이 출력된다.
//따라서 소수점까지 계산할 수 있도록 double형으로 형 변환한다.
//나누기(/)와 곱하기(*)는 우선순위가 같으므로 연산 방향에 따라 왼쪽부터
//나누기 연산이 먼저 수행된다.
printf("입장률 : %.1lf%\n", rate);
//입장률 출력
return 0;
}
3. 3.76시간은 몇 시간, 몇 분, 몇 초인지 출력하세요.
#include <stdio.h> int main(void) { int hour, min, sec; //시, 분, 초를 저장할 변수 double time = 3.76; //시간 초기화 <<<>>> //형 변환으로 정수 부분만을 골라낸다. <<<>>> //한 시간이 안되는 부분만을 다시 저장한다. <<<>>> //분 단위로 환산 <<<>>> //정수 부분만을 골라내어 분으로 저장한다. <<<>>> //일분이 안되는 부분만을 다시 저장한다. <<<>>> //초 단위로 환산 <<<>>> //정수 부분만을 골라내어 초로 저장한다. <<<>>> //변환한 시간 출력 return 0; }
실행결과 3.76시간은 3시간 45분 35초입니다.
🗣️풀이과정
#include <stdio.h>
int main(void)
{
int hour, min, sec; //시, 분, 초를 저장할 변수
double time = 3.76; //시간 초기화
hour = (int)time; //형 변환으로 정수 부분만을 골라낸다.
time = (time-hour)*60; //한 시간이 안되는 부분만을 다시 저장한다.
min = (int)time; //분 단위로 환산
time = (time-min)*60; //정수 부분만을 골라내어 분으로 저장한다.
sec = (int)time; //일분이 안되는 부분만을 다시 저장한다.
//초 단위로 환산
//정수 부분만을 골라내어 초로 저장한다.
//변환한 시간 출력
printf("%.2f시간은 %d시간 %d분 %d초입니다.\n", 3.76, hour, min, sec);
return 0;
}