문제 1
다음 코드가 실행될 때 입력 데이터가 12345□678인 경우 변수 x, y의 값은 무엇인가?
int x;
float y;
scanf("%3d%f", &x, &y);
- A. 12345 678.000000
- B. 123 678.000000
- C. 123 45.678000
- D. 123 45.000000
해설:
%3d는 정수를 읽되 최대 3자리까지만 허용하므로 123이 x에 저장된다. 이후 %f는 남은 부분에서 실수를 찾으려 하지만, 공백 다음에 유효한 실수가 없기 때문에 y는 초기화되지 않은 상태로 남는다.
정답: B
문제 2
다음 프로그램에서 입력이 12a345b789일 때 출력 결과는?
#include <stdio.h>
void main() {
char c1, c2;
int a1, a2;
c1 = getchar();
scanf("%2d", &a1);
c2 = getchar();
scanf("%3d", &a2);
printf("%d, %d, %c, %c\n", a1, a2, c1, c2);
}
- A. 2, 345, 1, a
- B. 12, 345, a, b
- C. 2a, 45b, 1, 3
- D. 2, 789, 1, a
해설:
getchar(): 첫 문자 '1'을c1에 할당.%2d: 두 번째와 세 번째 문자인 '2'를 숫자로 해석하여a1 = 2.getchar(): 네 번째 문자 'a'를c2에 할당.%3d: 다섯 번째부터 일곱 번째까지의 문자 '3','4','5'를 읽어a2 = 345.
정답: A
문제 3
다음 프로그램의 출력 결과는?
#include <stdio.h>
void main() {
int k = 17;
printf("%d, %o, %x\n", k, k, k);
}
해설:
%d: 십진수로 출력 → 17%o: 팔진수로 출력 → 21%x: 십육진수로 출력 → 11
출력 결과: 17, 21, 11
문제 4
다음 프로그램의 출력 결과는?
#include <stdio.h>
void main() {
printf("*%f, %4.3f*\n", 3.14, 3.1415);
}
해설:
%f: 기본적으로 소수점 아래 6자리를 포함하여 출력 →3.140000%4.3f: 전체 너비 4칸 중 소수점 아래 3자리까지 표시 → 반올림 후3.142
출력 결과: *3.140000, 3.142*
문제 5
Dev-C++에서 대문자를 입력받아 해당 소문자를 출력하는 프로그램 작성.
#include <stdio.h>
int main() {
char ch;
scanf("%c", &ch);
printf("%c\n", ch + 32); // ASCII 기준 대소문자 차이는 32
return 0;
}
예: 입력 A → 출력 a
문제 6
다음 프로그램의 문제점을 분석하고 수정하라.
#include <stdio.h>
int main() {
int a;
int b; // 오류: char형으로 선언해야 함
float c;
printf("Please input an integer:");
scanf("%d",&a);
printf("integer:%d\n",a); // 오류: &d → %d
printf("Please input a character:");
scanf("%c",&b); // 오류: 개행 문자(\n)가 버퍼에 남아있음
printf("character:%c\n",b);
printf("Please input a float number:");
scanf("%f",&c);
printf("float:%f\n",b); // 오류: b가 아닌 c를 출력해야 함
return 0;
}
문제 요약:
b는char타입이어야 함.- 두 번째
scanf("%c")전에 남아 있는 개행 문자 제거 필요. printf문 내 오타 수정 (&d→%d)- 마지막
printf에서c를 출력해야 함.
수정된 코드:
#include <stdio.h>
int main() {
int a;
char b;
float c;
printf("Please input an integer: ");
scanf("%d", &a);
printf("integer: %d\n", a);
getchar(); // 이전 입력 버퍼 비우기
printf("Please input a character: ");
scanf("%c", &b);
printf("character: %c\n", b);
printf("Please input a float number: ");
scanf("%f", &c);
printf("float: %f\n", c);
return 0;
}