일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- java
- 디지몬
- rails7
- 건담
- 건담베이스
- CSS
- 일본어
- DART
- 비즈니스일본어
- 반다이몰
- Flutter
- ruby
- 자바
- 연습문제
- Web
- Python
- springboot
- nico
- 単語
- メソッド
- jsp
- vscode
- Spring
- 一日一つメソッド
- html
- 日本語
- javascript
- rails
- 인프런
- C로 시작하는 컴퓨터 프로그래밍4판
- Today
- Total
AR삽질러
C로 시작하는 컴퓨터 프로그래밍4판 - 7장 배열 본문
혼자해보기 7-1
다음 배열 선언에서 오류를 찾아 수정하시오.
1) int a[4] = {1,2,3,4,5};
-> int a[5] = {1,2,3,4,5} or int a[4] = {1,2,3,4}
2) int b[3];
b[1] = 10;
b[2] = 10;
b[3] = 10;
혼자해보기 7-2
다음에 제시된 배열의 원소를 모두 곱한 결과를 출력하는 프로그램을 작성하시오.
#include <stdio.h>
int main(void) {
int mult[] = { 4, 2, 5, 1, 3 };
int sum = 1;
for (int i = 0; i < 5; i++) {
sum *= mult[i];
}
printf("원소들을 곱한 합 : %d", sum);
return 0;
}
혼자해보기 7-3
다음과 같이 2차원 배열을 선언하시오. 그리고 3열로 구성되어 있는 배열의 각 열별로 더한 값을 출력하는 프로그램을 작성하시오.
#include <stdio.h>
int main(void) {
int a[3][3] = { {1,2,3},{4,5,6},{7,8,9} };
int sum1 = 0, sum2 = 0, sum3 = 0;
for (int i = 0; i < 3; i++) {
sum1 += a[i][0];
sum2 += a[i][1];
sum3 += a[i][2];
}
printf("1열의 원소를 다 더하면 : %d\n", sum1);
printf("2열의 원소를 다 더하면 : %d\n", sum2);
printf("3열의 원소를 다 더하면 : %d", sum3);
return 0;
}
01. 다음 프로그램의 문법적인 오류나 논리적인 오류를 수정하시오.
1) int a[4] = {10,20,30,40,50};
-> int a[5] = {10, 20, 30, 40, 50};
2) int a[3][] = {5, 15, 10, 35, 40, 20};
-> 마지막 차원의 크기는 생략할 수 없다.
int a[3][2] = {{5,15}, {10, 35}, {40, 20}};
3) char str[5] = "Error";
-> char[6] = "Error";
4)
#include <stdio.h>
int main(void) {
int a[3] = { 4, 5, 10 };
int sum = 0;
printf("배열의 원소를 모두 더합니다.\n");
for (int i = 0; i < 3; i++) {
sum += a[i];
}
printf("결과는 %d입니다.\n", sum);
return 0;
}
5)
#include <stdio.h>
int main(void) {
char name[] = "Peter";
printf("반복문을 이용해서 문자열을 출력합니다.\n");
for (int i = 0; i < 5; i++) {
printf("%c", name[i]);
}
return 0;
}
6)
#include <stdio.h>
int main(void) {
char subject[] = "English";
int i = 0;
printf("반복문을 이용해서 문자열을 출력합니다.\n");
while (subject[i]) {
putchar(subject[i++]);
}
return 0;
}
7)
#include <stdio.h>
int main(void) {
int aryTmp[] = { 10, 20, 30, 40 };
int i, aryLength;
aryLength = sizeof(aryTmp) / sizeof(int);
printf("배열명을 이용해서 주소를 출력합니다.\n");
for (i = 0; i < aryLength; i++) {
printf("aryTmp의 %d의 주소는 %p이다.\n", i + 1, &aryTmp[i]);
}
return 0;
}
02. 정수형인 1차원 배열 a,b를 선언하고 두 배열의 각 원소를 합한 결과를 배열 c로 만들어 화면에 출력하시오.
- 배열 a : 45, 20, 5, 9, 30, 15
- 배열 b: 23, 18, 28, 3, 11, 22
#include <stdio.h>
int main(void) {
int a[] = { 45, 20, 5, 9, 30, 15 };
int b[] = { 23, 18, 28, 3, 11, 22 };
int c[6];
for (int i = 0; i < 6; i++) {
c[i] = a[i] + b[i];
printf("c[%d] = %d\n", i, c[i]);
}
return 0;
}
03. 02번 문제에서 선언한 배열 a,b에서 배열 a의 각 원소와 배열 b의 각 원소를 비교하여 배열 a의 원소가 크면 'Y'를 아니면 'N'을 가진 문자형 배열 d를 if문을 이용하여 작성하시오.
#include <stdio.h>
int main(void) {
int a[] = { 45, 20, 5, 9, 30, 15 };
int b[] = { 23, 18, 28, 3, 11, 22 };
char d[6];
for (int i = 0; i < 6; i++) {
if (a[i] > b[i]) {
d[i] = 'Y';
}
else {
d[i] = 'N';
}
}
printf("결과 : ");
for (int i = 0; i < 6; i++) {
printf("%c ", d[i]);
}
return 0;
}
05. 비밀번호를 입력받아 시스템에 저장되어 있는 비밀번호와 일치하면 종료 메시지를 출력하고, 일치하지 않으면 비밀번호를 다시 물어보는 프로그램을 작성하시오. 이때 시스템 비밀번호는 'code'. 종료 메시지는 '프로그램을 종료합니다.'로 작성하시오.
#include <stdio.h>
#pragma warning(disable:4996)
int main(void) {
char input[20];
char code[] = "code";
int count = 0;
while (!count) {
printf("비밀번호를 입력해 주세요 : ");
scanf("%s", input);
if (strcmp(input, code) == 0) { // strcmp함수는 문자열을 비교하는 함수로
count = 1; // 두 문자열이 같으면 0을 다르면 0이 아닌값을 반환해서 문자열의 길이를 비교할떄 용이하다.
printf("비밀번호가 일치합니다!\n");
printf("프로그램을 종료합니다.");
}
else {
printf("비밀번호가 일치하지 않습니다.\n");
}
}
return 0;
}
07. 성적을 계산하는 프로그램을 작성한다고 한다. 아래 질문에 답하시오.
1) 철수, 민수, 영희의 국어, 영어, 수학 점수를 각각 입력받아 kor, eng, math의 1차원 배열로 저장하시오.(단, 각 배열의 첫번째 요소는 철수, 두번째 요소는 민수, 세번째 요소는 영희로 한다.)
#include <stdio.h>
#pragma warning(disable:4996)
int main(void) {
int kor[3], eng[3], math[3];
printf("철수의 국어, 영어, 수학 점수를 입력하세요 : ");
scanf("%d %d %d", &kor[0], &eng[0], &math[0]);
printf("민수의 국어, 영어, 수학 점수를 입력하세요 : ");
scanf("%d %d %d", &kor[1], &eng[1], &math[1]);
printf("영희의 국어, 영어, 수학 점수를 입력하세요 : ");
scanf("%d %d %d", &kor[2], &eng[2], &math[2]);
printf("\n");
printf("철수의 국어점수 : %d\n", kor[0]);
printf("철수의 영어점수 : %d\n", eng[0]);
printf("철수의 수학점수 : %d\n\n", math[0]);
printf("민수의 국어점수 : %d\n", kor[1]);
printf("민수의 영어점수 : %d\n", eng[1]);
printf("민수의 수학점수 : %d\n\n", math[1]);
printf("영희의 국어점수 : %d\n", kor[2]);
printf("영희의 영어점수 : %d\n", eng[2]);
printf("영희의 수학점수 : %d\n\n", math[2]);
return 0;
}
2) 세 과목의 평균을 각각 구하고 평균이 가장 높은 과목의 평균 점수를 출력하시오.
#include <stdio.h>
#pragma warning(disable:4996)
int main(void) {
int kor[3], eng[3], math[3];
float koravg, engavg, mathavg;
printf("철수의 국어, 영어, 수학 점수를 입력하세요 : ");
scanf("%d %d %d", &kor[0], &eng[0], &math[0]);
printf("민수의 국어, 영어, 수학 점수를 입력하세요 : ");
scanf("%d %d %d", &kor[1], &eng[1], &math[1]);
printf("영희의 국어, 영어, 수학 점수를 입력하세요 : ");
scanf("%d %d %d", &kor[2], &eng[2], &math[2]);
koravg = (kor[0] + kor[1] + kor[2]) / 3.0;
engavg = (eng[0] + eng[1] + eng[2]) / 3.0;
mathavg = (math[0] + math[1] + math[2]) / 3.0;
printf("\n");
printf("철수의 국어점수 : %d\n", kor[0]);
printf("철수의 영어점수 : %d\n", eng[0]);
printf("철수의 수학점수 : %d\n\n", math[0]);
printf("민수의 국어점수 : %d\n", kor[1]);
printf("민수의 영어점수 : %d\n", eng[1]);
printf("민수의 수학점수 : %d\n\n", math[1]);
printf("영희의 국어점수 : %d\n", kor[2]);
printf("영희의 영어점수 : %d\n", eng[2]);
printf("영희의 수학점수 : %d\n\n", math[2]);
printf("세과목의 평균\n");
printf("국어점수 평균 : %.1f\n", koravg);
printf("영어점수 평균 : %.1f\n", engavg);
printf("수학점수 평균 : %.1f\n\n", mathavg);
if (koravg >= engavg && koravg >= mathavg) {
printf("국어점수의 평균이 [%1.f]점으로 가장 높습니다.", koravg);
}
else if (engavg >= koravg && engavg >= mathavg) {
printf("영어점수의 평균이 [%1.f]점으로 가장 높습니다.", engavg);
}
else {
printf("수학점수의 평균이 [%1.f]점으로 가장 높습니다.", mathavg);
}
return 0;
}
3) 세 과목의 합이 가장 높은 학생의 이름을 출력하시오.
#include <stdio.h>
#pragma warning(disable:4996)
int main(void) {
int kor[3], eng[3], math[3], total[3];
float koravg, engavg, mathavg;
char topname[3][10] = { "철수", "민수", "영희" }; // null을 포함한 크기
printf("철수의 국어, 영어, 수학 점수를 입력하세요 : ");
scanf("%d %d %d", &kor[0], &eng[0], &math[0]);
printf("민수의 국어, 영어, 수학 점수를 입력하세요 : ");
scanf("%d %d %d", &kor[1], &eng[1], &math[1]);
printf("영희의 국어, 영어, 수학 점수를 입력하세요 : ");
scanf("%d %d %d", &kor[2], &eng[2], &math[2]);
koravg = (kor[0] + kor[1] + kor[2]) / 3.0;
engavg = (eng[0] + eng[1] + eng[2]) / 3.0;
mathavg = (math[0] + math[1] + math[2]) / 3.0;
for (int i = 0; i < 3; i++) {
total[i] = kor[i] + eng[i] + math[i];
}
int max = 0;
int top = 0;
for (int i = 0; i < 3; i++) {
if (total[i] > max) {
max = total[i];
top = i;
}
}
printf("\n");
printf("철수의 국어점수 : %d\n", kor[0]);
printf("철수의 영어점수 : %d\n", eng[0]);
printf("철수의 수학점수 : %d\n\n", math[0]);
printf("민수의 국어점수 : %d\n", kor[1]);
printf("민수의 영어점수 : %d\n", eng[1]);
printf("민수의 수학점수 : %d\n\n", math[1]);
printf("영희의 국어점수 : %d\n", kor[2]);
printf("영희의 영어점수 : %d\n", eng[2]);
printf("영희의 수학점수 : %d\n\n", math[2]);
printf("세과목의 평균\n");
printf("국어점수 평균 : %.1f\n", koravg);
printf("영어점수 평균 : %.1f\n", engavg);
printf("수학점수 평균 : %.1f\n", mathavg);
if (koravg >= engavg && koravg >= mathavg) {
printf("국어점수의 평균이 [%1.f]점으로 가장 높습니다.", koravg);
}
else if (engavg >= koravg && engavg >= mathavg) {
printf("영어점수의 평균이 [%1.f]점으로 가장 높습니다.", engavg);
}
else {
printf("수학점수의 평균이 [%1.f]점으로 가장 높습니다.", mathavg);
}
printf("\n\n%s의 합계가 가장 높습니다.", topname[top]);
return 0;
}
08. 1차원 배열 A[10] = {15, 12, 3, 35, 78, 22, 11, 2, 49, 19}의 최대값과 최소값을 출력하는 프로그램을 작성하시오.
#include <stdio.h>
#pragma warning(disable:4996)
int main(void) {
int A[10] = { 15, 12, 3, 35, 78, 22, 11, 2, 49, 19 };
int max = A[0], min = A[0];
for (int i = 0; i < 10; i++) {
if (A[i] > max) {
max = A[i];
}
if (A[i] < min) {
min = A[i];
}
}
printf("최대값 : %d\n", max);
printf("최소값 : %d\n", min);
return 0;
}
'C' 카테고리의 다른 글
C로 시작하는 컴퓨터 프로그래밍4판 - 9장 변수영역 (0) | 2023.04.10 |
---|---|
C로 시작하는 컴퓨터 프로그래밍4판 - 8장 함수 (0) | 2023.04.02 |
C로 시작하는 컴퓨터 프로그래밍4판 - 6장 반복문 (0) | 2023.03.27 |
C로 시작하는 컴퓨터 프로그래밍4판 - 5장 선택문 (0) | 2023.03.21 |
C로 시작하는 컴퓨터 프로그래밍4판 - 4장 연산자 (0) | 2023.03.16 |