C언어(자기주도C언어프로그래밍)/Chapter09. 배열1

자기주도C언어프로그래밍 Chapter09. 배열1 - 형성평가

사상 2023. 2. 28. 08:58

1. 10개의 문자를 입력받아 마지막으로 입력받은 문자부터 첫 번째 입력받은 문자까지 차례로 출력하는 프로그램을 작성하시오.

입력 예

A E C X Y Z c b z e

출력 예

e z b c Z Y X C E A

 

#include <stdio.h>
int main(){
    int i;
    char array[10];

    for(i=0;i<10;i++){
        scanf(" %c", &array[i]);
    }
    for(i=9;i>=0;i--){
        printf("%c ", array[i]);
    }
    return 0;
}

 

2. 5개의 정수를 입력받은 후 첫 번째, 세 번째, 다섯 번째 입력받은 정수의 합을 출력하는 프로그램을 작성하시오.

입력 예

15 20 33 10 9

출력 예

57

 

#include <stdio.h>
int main(){
    int i, sum=0, array[5];

    for(i=0;i<5;i++){
        scanf("%d", &array[i]);
    }

    sum = array[0] + array[2] + array[4];
    printf("%d", sum);

    return 0;
}

 

※ 첫 번째, 세 번째, 다섯 번째의 합을 구하라고 하였으므로 직접 배열의 0번째, 두 번째, 세 번째 합을 더하여 sum이라는 변수에 저장하였습니다.

 

3. 10개의 정수를 입력받아 홀수 번째 입력받은 정수의 합과 짝수 번째 입력받은 정수의 합을 출력하는 프로그램을 작성하시오.

입력 예

10 20 25 66 83 7 22 90 1 100

출력 예

odd : 141

even : 283

 

#include <stdio.h>
int main(){
    int i, odd_sum=0, even_sum=0;
    int array[10];

    for(i=0;i<10;i++){
        scanf("%d", &array[i]);
        if(i % 2 == 0){
            odd_sum += array[i];
        }
        else
            even_sum += array[i];
    }

    printf("odd : %d\n", odd_sum);
    printf("even : %d", even_sum);

    return 0;
}

 

4. 100개의 정수를 입력받을 수 있는 배열을 선언한 후 정수를 차례로 입력받다가 -1이 입력되면 입력을 중단하고 0을 제외한 마지막 세 개의 정수를 출력하는 프로그램을 작성하시오. (입력받은 정수가 3개 미만일 경우에는 모두 출력한다.)

입력 예

30 20 10 60 80 -1

출력 예

10 60 80

 

#include <stdio.h>
int main(){
    int i, cnt, array[100];

    for(i=0;i<100;i++){
        scanf("%d", &array[i]);

        if(array[i] == -1)
            break;
    }
    cnt = i;

if(cnt<3){
    for(i=0;i<cnt;i++){
        printf("%d ", array[i]); }
    }
    else{
         for(i=cnt-3;i<cnt;i++){
            printf("%d ", array[i]);
        }
    }
    return 0;
}

 

※ if문을 이용하여 입력이 3개 미만인 경우 전부 출력하는 부분을 작성하고

else를 이용하여 입력이 3개 이상일 경우 마지막 세 개를 출력하는 부분을 작성하였습니다.

 

5. 6명의 몸무게를 입력받아 평균을 출력하는 프로그램을 작성하시오. 출력은 반올림하여 소수 첫째자리까지로 한다.

입력 예

23.2 39.6 66.4 50.0 45.6 48.0

출력 예

45.5

 

#include <stdio.h>
int main(){
    int i;
    double sum=0, avg, weight[6];

    for(i=0;i<6;i++){
        scanf("%lf", &weight[i]);
        sum += weight[i];
    }
    avg = (double)sum / 6;

    printf("%.1lf", avg);

    return 0;
}

 

6. 6개의 문자배열을 만들고 {'J', 'U', 'N', 'G', 'O', 'L'}이라고 초기화 한 후 문자 한 개를 입력받아 배열에서의 위치를 출력하는 프로그램을 작성하시오. 첫 번째 위치는 0번이면 배열에 없는 문자가 입력되면 "none"이라는 메세지를 출력한다.

입력 예

L

출력 예

5

입력 예

B

출력 예

none

 

#include <stdio.h>
int main(){
    int i;
    char alpha, array[] = "JUNGOL";
    scanf(" %c", &alpha);

    for(i=0;i<6;i++){
        if(array[i] == alpha){
            printf("%d", i); 
            break;
        }
        else{
            if(i==5){
                printf("none");
            }
        }
    }
    return 0;

}

 

※ else부분은 배열의 원소와 alpha가 일치 하지 않으면서 i=5(마지막 원소)인 경우 none을 출력하도록 작성하였습니다.

(i=5 전에 일치하는 알파벳이 있다면 출력하고 break)

 

7. 세 자리 이하 정수 100개를 차례로 입력 받다가 999가 입력되면 프로그램을 종료하고 999를 제외한 그 때까지의 입력된 최대값과 최소값을 출력하는 프로그램을 작성하시오.

입력 예

45 19 123 58 10 -55 16 -1 999

출력 예

max : 123

min : -55

 

#include <stdio.h>
int main(){
    int i, max=-1000, min=1000, array[100];

    for(i=0;i<100;i++){
        scanf("%d", &array[i]);
        if(array[i] == 999)
            break;
        if(array[i] > max)
            max = array[i];
        if(array[i] < min)
            min = array[i];
    }
    printf("max : %d\n", max)   ;
    printf("min : %d", min);

    return 0;
}

 

※ 세자리 이하 정수를 입력받으므로 min의 초기값으로 1000, max의 초기값으로 -1000을 설정하였습니다.

 

8. 100개 이하의 정수를 입력받다가 0이 입력되면 종료하고 그 때까지 입력된 정수 중 5의 배수의 개수와 합계, 평균을 출력하는 프로그램을 작성하시오. 평균은 소수점 이하 1자리까지 출력한다.

입력 예

35 10 23 100 64 51 5 0

출력 예

Multiples of 5 : 4

sum : 150

avg : 37.5

 

#include <stdio.h>
int main(){
    int i, sum=0, cnt=0, array[100];
    double avg;

    for(i=0;i<100;i++){
        scanf("%d", &array[i]);
        if(array[i]==0)
         break;
        if(array[i] % 5 == 0){
            cnt++;
         sum += array[i];
        }
    }
    avg = (double)sum / cnt;

    printf("Multiples of 5 : %d\n", cnt);
    printf("sum : %d\n", sum);
    printf("avg : %.1lf", avg);

    return 0;
}

 

9. 100개 이하의 정수를 입력받다가 0이 입력되면 0을 제외하고 그 때까지 입력 받은 개수를 출력한 후 입력 받은 정수를 차례대로 출력하되 그 수가 홀수이면 2배한 값을, 짝수인 경우에는 2로 나눈 몫을 출력하는 프로그램을 작성하시오.

입력 예

8 10 5 15 100 0

출력 예

5

4 5 10 30 50

 

#include <stdio.h>
int main(){
    int i, cnt=0, array[100];

    for(i=0;i<100;i++){
        scanf("%d", &array[i]);
        if(array[i] == 0)

            break;
        cnt++;
    }
    printf("%d\n", cnt);


    for(i=0;i<cnt;i++){
        if(array[i] % 2 == 0){
            printf("%d ", array[i] / 2);
        }
        else
        printf("%d ", array[i] * 2);
    }
    return 0;
}

 

10. 20 이하의 정수 n을 입력받고 n명의 점수를 입력받아 높은 점수부터 차례로 출력하는 프로그램을 작성하시오.

입력 예

5

35 10 35 100 64

출력 예

100

64

35

35

10

 

#include <stdio.h>
int main(){
    int i, j, n, temp, array[20];
    scanf("%d", &n);

    for(i=0;i<n;i++){
        scanf("%d", &array[i]);
    }
    for(i=0;i<n;i++){
        for(j=0;j<n-i-1;j++){
            if(array[j] < array[j+1]){
                temp = array[j];
                array[j] = array[j+1];
                array[j+1] = temp;
            }
        }
    }
    for(i=0;i<n;i++){
        printf("%d\n", array[i]);
    }
    return 0;
}