프로그래밍을 배우는 데 있어서 기초적인 문제 해결 능력은 매우 중요합니다. 이번 포스팅에서는 문제 해결 과정을 익히기 위한 몇 가지 예제를 소개하고, 단계별로 어떻게 문제를 해결할 수 있는지 설명하겠습니다.
1. 프로그래밍 문제 해결 과정
프로그래밍에서 문제를 해결하는 기본 과정은 다음과 같습니다:
- 문제 파악: 주어진 문제를 명확히 이해합니다. 어떤 입력을 받아서 어떤 출력을 내야 하는지를 정리합니다.
- 입력과 출력 변수 결정: 입력 데이터와 출력 데이터를 저장할 변수를 결정합니다.
- 문제 재정의: 문제에서 요구하는 것을 코드로 표현할 수 있도록 다시 정의합니다.
- 과정 세분화: 문제를 해결하기 위한 논리적인 과정을 세분화하여, 코드로 표현할 수 있도록 합니다.
- 코딩: 결정한 절차에 따라 프로그램을 작성합니다.
2. 프로그래밍 연습 문제
1) 난수를 발생하는 프로그램
0부터 100 사이의 난수를 생성하고 출력하는 프로그램을 작성합니다.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main() {
srand((unsigned int)time(NULL)); // 시드 설정
int n = rand() % 101; // 0~100 사이의 난수 생성
printf("난수: %d\n", n);
return 0;
}
2) 홀수와 짝수의 합 구하기
사용자로부터 n개의 양의 정수를 입력받아, 홀수와 짝수의 합을 구하는 프로그램을 작성합니다.
#include <stdio.h>
int main() {
int n, num, oddsum = 0, evensum = 0;
printf("정수의 개수: ");
scanf("%d", &n);
for (int i = 0; i < n; i++) {
printf("정수를 입력하세요: ");
scanf("%d", &num);
if (num % 2 == 0) {
evensum += num;
} else {
oddsum += num;
}
}
printf("홀수의 합: %d\n", oddsum);
printf("짝수의 합: %d\n", evensum);
return 0;
}
3) 숫자 거꾸로 출력하기
양의 정수를 입력받아 끝자리부터 숫자를 출력하는 프로그램을 작성합니다.
#include <stdio.h>
int main() {
int num;
printf("양의 정수를 입력하세요: ");
scanf("%d", &num);
while (num > 0) {
printf("%d", num % 10); // 끝자리 출력
num /= 10; // 끝자리 제거
}
return 0;
}
4) 성적 평균과 최고점 구하기
학생들의 성적을 입력받아 평균과 최고점을 계산하는 프로그램을 작성합니다.
#include <stdio.h>
int main() {
int n, score, sum = 0, max = 0;
printf("학생 수를 입력하세요: ");
scanf("%d", &n);
for (int i = 0; i < n; i++) {
printf("성적을 입력하세요: ");
scanf("%d", &score);
sum += score;
if (score > max) {
max = score;
}
}
printf("평균: %.2f\n", (float)sum / n);
printf("최고 성적: %d\n", max);
return 0;
}
5) 양수의 수와 최대값 구하기
양수를 입력받고, 음수가 나올 때까지 입력된 양수의 수와 최대값을 구하는 프로그램을 작성합니다. 처음부터 음수가 입력되면 "No data!!"를 출력합니다.
#include <stdio.h>
int main() {
int num, count = 0, max = -1;
while (1) {
printf("숫자를 입력하세요: ");
scanf("%d", &num);
if (num <= 0) break; // 음수가 입력되면 반복 종료
count++;
if (num > max) max = num;
}
if (count == 0) {
printf("No data!!\n");
} else {
printf("입력된 양수의 수: %d\n", count);
printf("최대값: %d\n", max);
}
return 0;
}