- 주사위를 10000번 던져서 각 면이 나오는 횟수를 출력하여 보자.
#include<stdio.h>
#include <stdlib.h>
#include<time.h>
#define SIZE 6 /*주사위 면의 개수*/
int main(void) {
int freq[SIZE] = { 0 };
int i;
srand((unsigned)time(NULL));
for (i = 0; i < 10000; i++)
++freq[rand() % 6];
printf("면 빈도\n");
for (i = 0; i < SIZE; i++)
printf("%d %d\n", i, freq[i]);
return 0;
}
- 배열을 이용하여 간단한 극장 예약 시스템을 작성해라.
좌석은 총 10개, 예약이 끝난 좌석 : 1, 예약이 안 된 좌석 : 0
#include <stdio.h>
#define SIZE 10 //좌석 개수
int main(void)
{
char answer1; //첫번째 응답
int answer2, i;
int seats[SIZE] = { 0 }; // 배열을 0으로 초기화
while (1) //무한반복
{
printf("좌석을 예약하시겠습니까? (y또는 n)");
scanf_s("%c", &answer1);
if (answer1 == 'y')
{
printf("1 2 3 4 5 6 7 8 9 10\n");
for (i = 0; i < SIZE; i++)
printf("%d", seats[i]);
printf("\n");
printf("몇번째 좌석을 예약하시겠습니까?");
scanf_s("%d", &answer2);
if (answer2 <= 0 || answer2 > SIZE) {
printf("1부터 10사이의 숫자를 입력하시오\n");
continue;
}
if (seats[answer2 - 1] == 0) { //예약되지 않았으면
seats[answer2 - 1] = 1;
printf("예약되었습니다.\n");
}
else
printf("이미 예약된 자리입니다.\n"); //이미 예약되었으면
}
else if (answer1 == 'n')
break;
} //while문 끝
return 0;
}
3-1. 같은 물건 중 최소 가격 찾기
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define SIZE 10 //비교하고자 하는 물건 개수
int main(void)
{
int prices[SIZE] = { 0 }; //배열의 초기화
int i, minimum;
printf("1 2 3 4 5 6 7 8 9 10\n");
srand((unsigned)time(NULL)); //난수 설정 (가격들이 랜덤으로 출력됨)
for (i = 0; i < SIZE; i++) {
prices[i] = (rand() % 100) + 1;
printf("%-3d", prices[i]); //%-3d는 형식 지정자, prices[i] 값을 3자리 정수로 출력
} //물건 가격 출력
printf("\n\n");
minimum = prices[0]; //첫번째 배열 원소를 최소값으로 가정
for (i = 1; i < SIZE; i++)
{
if (prices[i] < minimum)
minimum = prices[i];
} //현재의 최소값보다 배열 원소가 작으면, 배열 원소를 최소값으로 복사
printf("최소값은 %d입니다.\n", minimum);
return 0;
}
3-2. 같은 물건 중 최대 가격 찾기
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define SIZE 10 //비교하고자 하는 물건 개수
int main(void)
{
int prices[SIZE] = { 0 }; //배열의 초기화
int i, max;
printf("1 2 3 4 5 6 7 8 9 10\n");
srand((unsigned)time(NULL)); //난수 설정 (가격들이 랜덤으로 출력됨)
for (i = 0; i < SIZE; i++) {
prices[i] = (rand() % 100) + 1;
printf("%-3d", prices[i]); //%-3d는 형식 지정자, prices[i] 값을 3자리 정수로 출력
} //물건 가격 출력
printf("\n\n");
max = prices[0]; //첫번째 배열 원소를 최대값으로 가정
for (i = 1; i < SIZE; i++)
{
if (prices[i] > max)
max = prices[i];
} //현재의 최대값보다 배열 원소가 크면, 배열 원소를 최대값으로 복사
printf("최댓값은 %d입니다.\n", max);
return 0;
}
- 학생 100명의 점수를 번호 순서대로 받을 수 있는 프로그램을 만드시오.
#include <stdio.h>
int main(void)
{
int score[10]; //배열 선언
int i;
for (i = 0; i < 10; i++) {
printf("%d번 학생 점수 : ", i + 1);
scanf_s("%d", &score[i]);
}
return 0;
}
- 학생 5명의 점수를 번호 순서대로 0번은 50점, 1번은 40점, 2번은 30점, 3번은 60점, 4번은 70점으로 초기화해주고, 그 점수를 순서대로 출력하여 보여주는 프로그램을 만드시오.
#include <stdio.h>
int main(void)
{
int score[5]={50,40,30,60,70}; //배열 초기화
int i;
for (i = 0; i < 5; i++) {
printf("%d번 학생 점수 : %d\n ", i, score[i]);
}
return 0;
}
- 숫자 여섯 개를 각각 9, 5, 7, 2, 4, 0으로 선언 및 초기화하고 입력된 순서대로 출력하는 프로그램을 만드시오.
#include <stdio.h>
int main(void)
{
int num[6]={9,5,7,2,4,0}; //배열 초기화
int i;
for (i = 0; i < 6; i++) {
printf("%d ", num[i]);
}
return 0;
}
- 숫자 다섯 개를 사용자에게 입력받아 입력받은 순서대로 출력하는 프로그램을 만드시오.
#include <stdio.h>
int main(void)
{
int num[5];
int i;
for (i = 0; i < 5; i++) {
printf("%d번 숫자 : ", i);
scanf_s("%d", &num[i]);
}
printf("--출력--\n");
for (i = 0; i < 5; i++) {
printf("%d번 숫자 : %d ", i,num[i]);
}
return 0;
}
- 숫자 다섯 개를 사용자에게 입력받아 입력받은 순서와 반대로 출력하는 프로그램을 만드시오.
#include <stdio.h>
int main(void)
{
int num[5]; //배열 5칸
int i;
for (i = 0; i < 5; i++) { //0~4
printf("%d번 숫자 : ", i);
scanf_s("%d", &num[i]);
}
printf("--출력--\n");
for (i = 4; i >= 0숫자 다섯 개를 사용자에게 입력받아 두 번째로 낮은 숫자를 출력해주는 프로그램을 만드시오.
; i--) {//4~0
printf("%d번 숫자 : %d \n", i,num[i]);
}
return 0;
}
- 숫자 다섯 개를 사용자에게 입력받아 두 번째로 낮은 숫자를 출력해주는 프로그램을 만드시오.
#include <stdio.h>
int main(void)
{
int num[5]; //배열 5칸
int i;
int low1=999999;//가장 작은 값 저장
int low2=999999;//두번째로 작은 값 저장
for (i = 0; i < 5; i++) { //0~4
printf("%d번 숫자 : ", i);
scanf_s("%d", &num[i]);
if (num[i] < low1) { //저장된 LOW1값 보다 NUM가 작다변
low2 = low1;//두번째 낮은 값으로 전달
low1 = num[i];
}
else if (num[i] < low2) {
low2 = num[i];
}
}
printf("--출력--\n");
printf("두번째로 낮은 값은 %d입니다.\n",low2);
return 0;
}
- 숫자 다섯 개를 사용자에게 입력받아 두 번째로 낮은 숫자가 위치한 배열 번호와 그 값을 출력해주는 프로그램을 만드시오.
#include <stdio.h>
int main(void)
{
int num[5]; //배열 5칸
int i;
int low1=999999;//가장 작은 값 저장
int low2=999999;//두번째로 작은 값 저장
for (i = 0; i < 5; i++) { //0~4
printf("%d번 숫자 : ", i);
scanf_s("%d", &num[i]);
if (num[i] < low1) { //저장된 LOW1값 보다 NUM가 작다변
low2 = low1;//두번째 낮은 값으로 전달
low1 = num[i];
}
else if (num[i] < low2) {
low2 = num[i];
}
}
printf("--출력--\n");
printf("두번째로 낮은 값은 num[%d]의 %d입니다.\n",num[low2],low2);
return 0;
}
- 배열을 사용해 짝수와 홀수 구분해서 출력하기
#include <stdio.h>
int main(void)
{
int num[10]; //배열 10칸
int i;
for (i = 0; i < 10; i++) {
scanf_s("%d", &num[i]);
}
printf("\n");
for (i = 0; i < 10; i++) {
if (num[i] % 2 == 1)
printf("%d ", num[i]);
}
printf("\n");
for (i = 0; i < 10; i++) {
if (num[i] % 2 == 0)
printf("%d ", num[i]);
}
return 0;
}
- 오름차순으로 정렬된 숫자 6개가 저장되는 배열 선언 후, 숫자를 입력받았을 때 그 숫자가 배열 안에서 자기 자리를 찾아가는 프로그램
#include <stdio.h>
int main(void)
{
int num[7];
int i,j;
int temp; // 삽입 위치 기억 변수
int insert; //삽입할 숫자
for (i = 0; i < 6; i++) {
scanf_s("%d", &num[i]);
} // 6개의 배열 입력
scanf_s("%d", &insert); // 삽입할 숫자 입력
for (i = 5; i >= 0; i--) { //오름차순으로 for문을 5부터 0까지
if (num[i] > insert) { // 만약 num[i]가 insert보다 크면
num[i + 1] = num[i]; //num[i]에 들어있는 숫자를 num[i + 1]에 저장하고
temp = i; //빈 자리에 temp 변수를 넣어준다
}
else break;
}
num[temp] = insert; // num[temp]값에 insert 값을 넣어주고
for (j = 0; j < 7; j++) {
printf("%d ", num[j]);
} //배열을 출력하면 끝 !!
}