연재 완료/C Lang 예제코드 모음

C언어 연습문제 풀이 CH6 (13~17)

라이피 (Lypi) 2018. 5. 13. 01:06
반응형

문제 출처 : YES C (정보공학연구소/생능출판사)


13. 문자열을 배열 a[10]에 입력받아 이를 배열 b[10]에 복사하여 아래와 같이 출력하는 프로그램을 작성하라.

input string (a) : Korean

ouput string : a = Korean, b = Korean

#include <stdio.h>
#include <string.h>


int main(void)
{
	char a[10], b[10];

	printf("input string(a) : "); scanf_s("%s", a, sizeof(a));

	strcpy_s(b,a);

	printf("output string : a = %s , b = %s \n", a, b);
}


14. 문자열을 배열 a[10]와 b[10]에 입력받아 이를 교환하여 출력하는 프로그램을 작성하라.

#include <stdio.h>
#include <string.h>


int main(void)
{
	char a[10], b[10];
	char temp[10];

	printf("input string(a) : ");  scanf_s("%s", a, sizeof(a));
	printf("input string(b) : ");  scanf_s("%s", b, sizeof(b));

	strcpy_s(temp,a);
	strcpy_s(a, b);
	strcpy_s(b, temp);

	printf("output string : a = %s , b = %s \n", a, b);
}


15. 2차원 배열 matrix[5][5]를 선언하여 이를 모두 '0'으로 초기화한 다음 아래와 같은 결과가 나오도록 프로그램을 작성하라.

#include <stdio.h>

void show_mat(char matrix[5][5]);
void init_mat(char matrix[5][5]);

int main(void)
{
	char matrix[5][5] = { '0', };

	int select;

	init_mat(matrix);
	
	while (1) {
		printf("T문자 출력 프로그램 \n");
		printf("1. 예제 1 \n");
		printf("2. 예제 2 \n");
		printf("3. 작업 종료 \n");
		printf("원하는 작업을 선택하세요 : "); scanf_s("%d", &select);

		switch (select) {
		case 1:
			init_mat(matrix);
			for (int i = 0; i < 5; i++) {
				for (int k = 0; k < 5; k++) {
					if (i >= k) {
						matrix[i][k] = 'T';
					}
				}
			}
			show_mat(matrix);
			break;

		case 2:
			init_mat(matrix);
			for (int i = 0; i < 5; i++) {
				for (int k = 0; k < 5; k++) {
					if (i <= k) {
						matrix[i][k] = 'T';
					}
				}
			}
			show_mat(matrix);
			break;

		case 3:
			return 0;

		default:
			printf("잘못 입력하셨습니다. 다시 선택해주세요. \n");
			break;
		}

	}
}

void show_mat(char matrix[5][5])
{
	for (int i = 0; i < 5; i++) {
		for (int k = 0; k < 5; k++) {
			printf(" %c ", matrix[i][k]);
		}
		printf("\n");
	}
}

void init_mat(char matrix[5][5])
{
	for (int i = 0; i < 5; i++) {
		for (int k = 0; k < 5; k++) {
			matrix[i][k] = '0';
		}
	}
}


16. 10명의 학생들에 대한 국어, 영어, 수학 성적을 입력받아 총점과 평균을 구하고 석차를 구한 다음 석차 순으로 출력하는 프로그램을 작성하라.

#include <stdio.h>

int main(void)
{
	int score[10][3];
	int totNave[10][2];
	int temp[2];

	//성적 입력받기
	for (int i = 0; i < 10; i++) {
		printf("%d번째 학생의 성적을 입력하세요. : \n",i+1);
		for (int k = 0; k < 3; k++) {
			switch (k) {
			case 0 :
				printf("국어 성적을 입력하세요 : "); scanf_s("%d", &score[i][k]);
				while (score[i][k] < 0 || score[i][k] > 100) {
					printf("잘못 입력하셨습니다. 다시 입력해주세요 : "); scanf_s("%d", &score[i][k]);
				}
				break;

			case 1:
				printf("영어 성적을 입력하세요 : "); scanf_s("%d", &score[i][k]);
				while (score[i][k] < 0 || score[i][k] > 100) {
					printf("잘못 입력하셨습니다. 다시 입력해주세요 : "); scanf_s("%d", &score[i][k]);
				}
				break;

			case 2:
				printf("수학 성적을 입력하세요 : "); scanf_s("%d", &score[i][k]);
				while (score[i][k] < 0 || score[i][k] > 100) {
					printf("잘못 입력하셨습니다. 다시 입력해주세요 : "); scanf_s("%d", &score[i][k]);
				}
				break;
			}
		}
	} //성적 입력 완료

	//합계와 평균 계산
	for (int i = 0; i < 10; i++) {
		totNave[i][0] = score[i][0] + score[i][1] + score[i][2];
		totNave[i][1] = totNave[i][0] / 3;
	} //합계와 평균 계산 끝

	//합계순으로 내림차순 정렬
	for (int i = 0; i < 10 - 1; i++) {
		for (int k = i + 1; k < 10; k++) {
			if (totNave[i] < totNave[k]) {
				temp[0] = totNave[k][0]; 
				totNave[k][0] = totNave[i][0];
				totNave[i][0] = temp[0];

				temp[1] = totNave[k][1];
				totNave[k][1] = totNave[i][1];
				totNave[i][1] = temp[1];
			}
		}
	} //정렬 끝

	//순위 출력
	int n = 1;
	for (int i = 0; i < 9; i++) {
		printf("%d등 총합 : %d, 평균 : %d \n", n, totNave[i][0], totNave[i][1]);
		if (totNave[i][0] != totNave[i + 1][0]) {
			n++;
		}
	}
	printf("%d등 총합 : %d 평균 : %d \n", n, totNave[9][0], totNave[9][1]);
}


17. 다음과 같은 자연수 수열이 있다. 100번째 항까지 배열에 저장한 다음 나열하라.

#include <stdio.h>

int main(void)
{
	int series[100];
	int num = 0, next = 0;

	for (int i = 0; i < 100; i++) {
		if (i == next) {
			next += ++num;
	
		}
		series[i] = num;

	}

	for (int i = 0; i < 100; i++) {
		if (i % 10 == 0) {
			printf("\n");
		}
		printf("%2d ", series[i]);
	}
}


반응형