[C언어] 1차원 배열 문제

yunssup·2023년 6월 6일

C언어

목록 보기
8/13
post-thumbnail
  1. 주사위를 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;
}
  1. 배열을 이용하여 간단한 극장 예약 시스템을 작성해라.
    좌석은 총 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;
}
  1. 학생 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;
}
  1. 학생 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;
}
  1. 숫자 여섯 개를 각각 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;
}
  1. 숫자 다섯 개를 사용자에게 입력받아 입력받은 순서대로 출력하는 프로그램을 만드시오.
#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;
}
  1. 숫자 다섯 개를 사용자에게 입력받아 입력받은 순서와 반대로 출력하는 프로그램을 만드시오.
#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;
}
  1. 숫자 다섯 개를 사용자에게 입력받아 두 번째로 낮은 숫자를 출력해주는 프로그램을 만드시오.
#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;
}
  1. 숫자 다섯 개를 사용자에게 입력받아 두 번째로 낮은 숫자가 위치한 배열 번호와 그 값을 출력해주는 프로그램을 만드시오.
#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;
}
  1. 배열을 사용해 짝수와 홀수 구분해서 출력하기
#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;
}
  1. 오름차순으로 정렬된 숫자 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]);
	} //배열을 출력하면 끝 !!
}

0개의 댓글