반응형
문제 출처 : 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]); } }
반응형