http://www.jungol.co.kr/bbs/board.php?bo_table=pbank&sca=1090
JUNGOL
www.jungol.co.kr
사이트에서 직접 프로그램을 돌려볼 수 있습니다.
교재 P.168 연습문제1 - 소스1
#include <stdio.h>
int main(){
int a, b, c, d, e;
scanf("%d %d %d %d %d", &a, &b, &c, &d, &e);
printf("%d %d %d %d %d", a, b, c, d, e);
return 0;
}
교재 P.169 연습문제 - 소스2
#include <stdio.h>
int main(){
int a[5];
scanf("%d %d %d %d %d", &a[0], &a[1], &a[2], &a[3], &a[4]);
printf("%d %d %d %d %d", a[0], a[1], a[2], a[3], a[4]);
return 0;
}
교재 P.170 연습문제1 - 소스3
#include <stdio.h>
int main(){
int a[5], i;
for(i=0;i<5;i++){
scanf("%d", &a[i]);
}
for(i=0;i<5;i++){
printf("%d ", a[i]);
}
printf("\n");
return 0;
}
교재 P.171 자가진단1
#include <stdio.h>
int main(){
int i;
char alpha[10];
for(i=0;i<10;i++){
scanf(" %c", &alpha[i]);
}
for(i=0;i<10;i++){
printf("%c", alpha[i]);
}
return 0;
}
※ 배열은 a[0] 부터 시작하므로 for(i=1;i<=10;i++)로 하지 않고 for(i=0;i<10;i++)로 작성하였습니다.
교재 P.172 연습문제2
#include <stdio.h>
int main(){
char c[26];
int i;
for(i=0;i<26;i++){
c[i] = 'A' + i;
}
for(i=25;i>=0;i--){
printf("%c ", c[i]);
}
printf("\n");
return 0;
}
교재 P.173 자가진단2
#include <stdio.h>
int main(){
int i, array[10];
for(i=0;i<10;i++){
array[i] = i+1;
}
for(i=0;i<10;i++){
printf("%d ", array[i]);
}
return 0;
}
교재 P.174 연습문제3
#include <stdio.h>
int main(){
int num[10], i;
for(i=0;i<10;i++){
scanf("%d", &num[i]);
}
printf("%d %d %d\n", num[2], num[4], num[9]);
return 0;
}
교재 P.175 자가진단3
#include <stdio.h>
int main(){
int i;
char array[10];
for(i=0;i<10;i++){
scanf(" %c", &array[i]);
}
printf("%c %c %c", array[0], array[3], array[6]);
return 0;
}
교재 P.175 연습문제4
#include <stdio.h>
int main(){
int num[100], i, count;
for(i=0;i<100;i++){
scanf("%d", &num[i]);
if(num[i] == 0)
break;
}
count = i;
for(i=1;i<count;i+=2){
printf("%d ", num[i]);
}
printf("\n");
return 0;
}
교재 P.176 자가진단4
#include <stdio.h>
int main(){
int i, cnt, array[100];
for(i=0;i<100;i++){
scanf("%d", &array[i]);
if(array[i] == 0)
break;
}
cnt = i-1;
for(i=cnt;i>=0;i--){
printf("%d ", array[i]);
}
return 0;
}
※ cnt = i-1에서 마지막에 입력된 0을 빼 주었습니다.
교재 P.177 연습문제5
#include <stdio.h>
int main(){
int days[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int year, month;
while(1){
printf("YEAR = ");
scanf("%d", &year);
printf("MONTH = ");
scanf("%d", &month);
if(month == 0){
break;
}
else if(month <= 0 || month > 12){
printf("잘못 입력하였습니다.\n\n");
}
else{
if(year % 400 == 0) days[2] = 29;
else if(year % 4 ==0 && year % 100 != 0) days[2] = 29;
else days[2] = 28;
printf("입력하신 달의 날 수는 %d일입니다.\n\n", days[month]);
}
}
return 0;
}
교재 P.179 자가진단5
#include <stdio.h>
int main(){
int a, b;
double sum=0;
double array[6] = {85.6, 79.5, 83.1, 80.0, 78.2, 75.0};
scanf("%d %d", &a, &b);
sum = array[a-1] + array[b-1];
printf("%.1lf", sum);
}
※ array[6]배열에 반의 평균 점수를 입력하였습니다.
배열은 0부터 시작하기 때문에 1반을 입력받고 싶어서 1을 입력하면 2반의 점수를 불러오기 때문에 a-1로 하여 한칸씩 앞당겼습니다.
교재 P.180 연습문제6
#include <stdio.h>
int main(){
int num[10];
int max = 0;
int i;
for(i=0;i<10;i++){
scanf("%d", &num[i]);
}
for(i=0;i<10;i++){
if(max < num[i]){
max = num[i];
}
}
printf("%d\n", max);
return 0;
}
교재 P.181 자가진단6
#include <stdio.h>
int main(){
int i, min = 1000, array[10];
for(i=0;i<10;i++){
scanf("%d", &array[i]);
if(min > array[i]){
min = array[i];
}
}
printf("%d", min);
return 0;
}
※ 문제에서 입력으로 주어지는 정수는 1000을 넘지 않는다고 하였으므로 min의 초기값으로 1000을 대입하였습니다.
min의 초기값은 입력 받을 값보다 큰 값을 지정해 두어야 합니다.
교재 P. 182 연습문제7
#include <stdio.h>
int main(){
int num[10];
int max = -10000, min = 10000;
int i;
for(i=0;i<10;i++){
scanf("%d", &num[i]);
}
for(i=0;i<10;i++){
if(num[i] % 2 == 0){
if(max < num[i]){
max = num[i];
}
}
else
if(min > num[i]){
min = num[i];
}
}
printf("%d %d\n", min, max);
return 0;
}
교재 P.183 자가진단7
#include <stdio.h>
int main(){
int i, max=-10000, min=100000;
int array[10];
for(i=0;i<10;i++){
scanf("%d", &array[i]);
}
for(i=0;i<10;i++){
if(array[i] < 100){
if(max < array[i]){
max = array[i];
}
}
else
if(min > array[i]){
min = array[i];
}
}
if(max == -10000)
max = 100;
if(min == 100000)
min = 100;
printf("%d %d", max, min);
return 0;
}
※ for반목문에서는 100 미만의 수 중 최댓값과 100 이상의 수 중 최소값을 구하는 부분을 구현하였고
문제에서 해당하는 수가 없으면 100을 출력한다고 하였으므로
max의 값과 min의 값이 초기값에서 변하지 않았다면(해당하는 수가 없으면) 100으로 초기화 시켜주었습니다.
교재 P.184 연습문제8
#include <stdio.h>
int main(){
int score[10];
int sum = 0;
double avg;
int i;
for(i=0;i<10;i++){
scanf("%d", &score[i]);
}
for(i=0;i<10;i++){
sum += score[i];
}
avg = sum / 10.0;
printf("총점 = %d\n", sum);
printf("평균 = %.1lf", avg);
return 0;
}
교재 P.185 자가진단8
#include <stdio.h>
int main(){
int odd_sum=0, even_sum=0, i, array[10];
double avg;
for(i=0;i<10;i++){
scanf("%d", &array[i]);
if(i % 2 != 0){
odd_sum += array[i];
}
else
even_sum += array[i];
}
avg = (double)even_sum / 5;
printf("sum : %d\n", odd_sum);
printf("avg : %.1lf", avg);
return 0;
}
교재 P.186 연습문제9
#include <stdio.h>
int main(){
int a[5] = {95, 75, 85, 100, 50};
int i, j, tmp;
for(i=0;i<4;i++){
for(j=i+1;j<5;j++){
if(a[i] > a[j]){
tmp = a[i];
a[i] = a[j];
a[j] = tmp;
}
}
}
for(i=0;i<5;i++){
printf("%d ", a[i]);
}
return 0;
}
교재 P.189 자가진단9
#include <stdio.h>
int main(){
int i, j, temp, array[10];
for(i=0;i<10;i++){
scanf("%d", &array[i]);
}
for(i=0;i<10;i++){
for(j=0;j<10-1-i;j++){
if (array[j] < array[j+1]) {
temp = array[j];
array[j] = array[j+1];
array[j+1] = temp;
}
}
}
for(i=0;i<10;i++){
printf("%d ", array[i]);
}
return 0;
}
※ for(j=0;j<10-1-i;j++)부분은 j값이 증가할 수록 앞부분은 정렬이 되어 뒷부분의 계산 식을 줄이기 위해 이렇게 작성하였습니다.
'C언어(자기주도C언어프로그래밍) > Chapter09. 배열1' 카테고리의 다른 글
자기주도C언어프로그래밍 Chapter09. 배열1 - 형성평가 (0) | 2023.02.28 |
---|