- 등차수열은 앞의 항에 항상 일정한 수(공차)를 더하여 만들어가는 수열이다.
크기가 10인 정수형 배열에 대하여 등차수열로 값을 채우려고 한다. 첫 번째 항의 값과 공차를 입력받아 배열을 채우고 출력하는 프로그램을 작성하시오.
👉코드
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#define SIZE 10
int main(void)
{
int arr[SIZE];
int i;
int diff;
printf("첫 번째 항? ");
scanf("%d", &i);
printf("공차? ");
scanf("%d", &diff);
for (int j = 0; j < SIZE; j++)
arr[j] = i + diff * j;
printf("등차수열: ");
for (int j = 0; j < SIZE; j++)
printf("%d ", arr[j]);
printf("\n");
return 0;
}
👉실행 결과
첫 번째 항? 3
공차? 4
등차수열: 3 7 11 15 19 23 27 31 35 39
- n(<=20)명의 학생 성적을 별 막대그래프로 나타내는 프로그램을 작성하시오.
👉코드
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#define SIZE 20
int main(void)
{
int num;
int score[SIZE];
printf("Enter the number of scores(<=20): ");
scanf("%d", &num);
for (int i = 0; i < SIZE; i++)
{
if (i == num)
break;
printf("Enter a score: ");
scanf("%d", &score[i]);
}
for (int i = 0; i < SIZE; i++)
{
if (i == num)
break;
printf("Student %d: ", i + 1);
for (int j = 0; j < score[i]; j++)
printf("*");
printf("\n");
}
return 0;
}
👉실행 결과
Enter the number of scores(<=20): 6
Enter a score: 7
Enter a score: 3
Enter a score: 4
Enter a score: 1
Enter a score: 9
Enter a score: 11
Student 1: *******
Student 2: ***
Student 3: ****
Student 4: *
Student 5: *********
Student 6: ***********
- 실수형 세 개의 배열 arrayA, arrayB, arrayC을 아래의 코드에서처럼 선언, 초기화한 후 다음과 같은 프로그램을 작성하시오.
(arrayB는 arrayA 값을 복사한 값, arrayC는 arrayA 값의 역순을 복사한 값)
👉코드
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#define SIZE 10
int main(void)
{
double arrayA[SIZE] = { 1.2, 3.1, 4.3, 4.5, 6.7, 2.3, 8.7, 9.5, 2.3, 5.8 };
double arrayB[SIZE];
double arrayC[SIZE];
printf("arrayA: ");
for (int i = 0; i < SIZE; i++)
printf("%.1f ", arrayA[i]);
printf("\n");
printf("arrayB: ");
for (int i = 0; i < SIZE; i++)
{
arrayB[i] = arrayA[i];
printf("%.1f ", arrayB[i]);
}
printf("\n");
printf("arrayC: ");
for (int i = 0; i < SIZE; i++)
{
arrayC[i] = arrayA[SIZE - 1 - i];
printf("%.1f ", arrayC[i]);
}
printf("\n");
return 0;
}
👉실행 결과
arrayA: 1.2 3.1 4.3 4.5 6.7 2.3 8.7 9.5 2.3 5.8
arrayB: 1.2 3.1 4.3 4.5 6.7 2.3 8.7 9.5 2.3 5.8
arrayC: 5.8 2.3 9.5 8.7 2.3 6.7 4.5 4.3 3.1 1.2
- 상품 가격이 저장된 정수형 배열에 대하여 할인율(%)을 입력받아 할인된 가격을 계산해서 출력하는 프로그램을 작성하시오.
👉코드
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#define SIZE 5
int main(void)
{
int price[SIZE], ratePrice[SIZE];
int rate;
printf("상품가 5개를 입력하세요: ");
for (int i = 0; i < SIZE; i++)
scanf("%d", &price[i]);
printf("할인율(%%)? ");
scanf("%d", &rate);
for (int i = 0; i < SIZE; i++)
{
ratePrice[i] = price[i] - price[i] * rate / 100;
printf("가격: %6d --> 할인가: %6d\n", price[i], ratePrice[i]);
}
return 0;
}
👉실행 결과
상품가 5개를 입력하세요: 10000 23000 39000 9900 19000
할인율(%)? 20
가격: 10000 --> 할인가: 8000
가격: 23000 --> 할인가: 18400
가격: 39000 --> 할인가: 31200
가격: 9900 --> 할인가: 7920
가격: 19000 --> 할인가: 15200
- 정수형 2차원 배열을 선언하여 그 안에 구구단의 결과를 9단까지 저장한 후 출력하는 프로그램을 작성하시오. 사용자 입력으로 숫자를 읽어들여서 선언한 2차원 배열을 이용하여 해당 구구단을 출력하는 프로그램을 작성하시오.
👉코드
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#define ROW 8
#define COL 9
int main(void)
{
int gugudan[ROW][COL];
int num;
printf("--구구단 표는 다음과 같습니다.\n");
for (int i = 0; i < ROW; i++)
{
for (int j = 0; j < COL; j++)
{
gugudan[i][j] = (i + 2) * (j + 1);
printf("%4d", gugudan[i][j]);
}
printf("\n");
}
printf("--원하는 구구단은? ");
scanf("%d", &num);
for (int j = 0; j < COL; j++)
printf("%4d", gugudan[num-2][j]);
printf("\n");
return 0;
}
👉실행 결과
--구구단 표는 다음과 같습니다.
2 4 6 8 10 12 14 16 18
3 6 9 12 15 18 21 24 27
4 8 12 16 20 24 28 32 36
5 10 15 20 25 30 35 40 45
6 12 18 24 30 36 42 48 54
7 14 21 28 35 42 49 56 63
8 16 24 32 40 48 56 64 72
9 18 27 36 45 54 63 72 81
--원하는 구구단은? 3
3 6 9 12 15 18 21 24 27
- 한 학기 성적은 중간고사 30점, 기말고사 30점, 팀 프로젝트 30점, 출석 10점으로 계산된다. 학생이 모두 5명일 때, 각 학생별 총점을 구하고 중간고사, 기말고사, 팀프로젝트, 출석, 총점의 평균을 구하여 출력하는 프로그램을 작성하시오. 성적을 저장하는 2차원 배열은 다음과 같이 초기화해서 사용하시오.
👉코드
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#define SIZE 5
int main(void)
{
int scores[SIZE][SIZE] = { {28, 28, 26, 9}, {30, 27, 30, 10},
{25, 26, 24, 8}, {18, 22, 22, 5}, {24, 25, 30, 10} };
double averages[SIZE] = { 0 };
for (int i = 0; i < SIZE; i++)
for (int j = 0; j < SIZE - 1; j++)
scores[i][SIZE - 1] += scores[i][j];
for (int i = 0; i < SIZE; i++)
{
for (int j = 0; j < SIZE; j++)
averages[i] += scores[j][i];
averages[i] /= SIZE;
}
printf("\t\t 중간\t기말\t팀플\t출석\t총점\n");
for (int i = 0; i < SIZE; i++)
{
printf("학 생 %3d 번:", i + 1);
for (int j = 0; j < SIZE; j++)
printf("\t%4d", scores[i][j]);
printf("\n");
}
printf("항목별 평균: ");
for (int i = 0; i < SIZE; i++)
printf("\t%4.1f", averages[i]);
printf("\n");
return 0;
}
👉실행 결과
중간 기말 팀플 출석 총점
학 생 1번: 28 28 26 9 91
학 생 2번: 30 27 30 10 97
학 생 3번: 25 26 24 8 83
학 생 4번: 18 22 22 5 67
학 생 5번: 24 25 30 10 89
항목별 평균: 25.0 25.6 26.4 8.4 85.4
- 음악 재생 프로그램에는 재생 목록에 있는 곡들을 임의의 순서로 뒤섞는 셔플 기능이 있다. 이 셔플 기능처럼 크기가 10인 정수형 배열의 원소를 임의의 순서로 뒤섞는 프로그램을 작성하시오. 크기가 10인 정수형 배열은 다음과 같이 초기화해서 사용한다.
👉코드
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define MAX 10
void print_array(int arr[], int size);
int main(void)
{
int arr[MAX] = { 12, 43, 39, 98, 71, 63, 8, 16, 54, 85 };
srand((unsigned int)time(NULL));
printf("셔플 전: ");
print_array(arr, MAX);
for (int i = 0; i < MAX - 1; i++)
{
int shuffle1 = rand() % MAX;
int shuffle2 = rand() % MAX;
int tmp;
tmp = arr[shuffle1];
arr[shuffle1] = arr[shuffle2];
arr[shuffle2] = tmp;
}
printf("셔플 후: ");
print_array(arr, MAX);
return 0;
}
void print_array(int arr[], int size)
{
for (int i = 0; i < MAX; i++)
printf("%2d ", arr[i]);
printf("\n");
}
👉실행 결과
셔플 전: 12 43 39 98 71 63 8 16 54 85
셔플 후: 16 54 12 85 8 63 39 98 43 71
- 기차표 예매 프로그램을 작성하려고 한다. 간단하 구현을 위해 좌석은 모두 10개라고 하자. 예매할 좌석수를 입력받아 빈 자리를 할당한다. 에매할 때마다 각 좌석은 상태를 출력한다. 이면 예매 가능, x는 예매 불가를 의미한다. 더 이상 예매할 수 없으면 프로그램을 종료한다.
👉코드
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#define MAX_SEATS 10
void print_seat(char seats[], int size);
int main(void)
{
char seats[MAX_SEATS] = { 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O' };
int occupied = 0, want = 0;
int empty = 0;
while (1)
{
print_seat(seats, MAX_SEATS);
printf("\n예매할 좌석수? ");
scanf("%d", &want);
empty = MAX_SEATS - occupied;
if (want > empty)
{
printf("남은 좌석 수가 %d이므로 %d좌석을 예매할 수 없습니다\n", empty, want);
break;
}
for (int i = 0; i < want + occupied; i++)
seats[i] = 'X';
for(int i = occupied; i < want + occupied; i++)
printf("%d ", i+1);
printf("번 좌석을 예매했습니다.\n");
occupied += want;
}
return 0;
}
void print_seat(char seats[], int size)
{
printf("-----------------------------------------\n");
printf("현재 좌석: [ ");
for (int i = 0; i < MAX_SEATS; i++)
printf("%c ", seats[i]);
printf("]\n");
printf("-----------------------------------------\n");
}
👉실행 결과
-----------------------------------------
현재 좌석: [ O O O O O O O O O O ]
-----------------------------------------
예매할 좌석수? 5
1 2 3 4 5 번 좌석을 예매했습니다.
-----------------------------------------
현재 좌석: [ X X X X X O O O O O ]
-----------------------------------------
예매할 좌석수? 3
6 7 8 번 좌석을 예매했습니다.
-----------------------------------------
현재 좌석: [ X X X X X X X X O O ]
-----------------------------------------
예매할 좌석수? 5
남은 좌석 수가 2이므로 5좌석을 예매할 수 없습니다