第10回演習の解答例


(1)要素数 4 個の整数型配列 {5,3,6,2}の中身を表示するプログラム


#include <stdio.h>
 
void main()
{
    int i , a[4]={5,3,6,2};

    for( i=0; i<4; i++){
        printf("%d ",a[i]);
    }
}

(2)(1)の配列の中身を入れ替えるプログラム


#include <stdio.h>
 
void main()
{
    int i , a[4]={5,3,6,2},tmp;

    for( i=0; i <4; i++){        /*最初の中身表示*/
        printf("%d ",a[i]);
    }
    tmp=a[0];
    a[0]=a[2];
    a[2]=tmp;

    printf("¥n");

    for( i=0; i <4; i++){        /*入れ替え後の中身表示*/
        printf("%d ",a[i]);
    }        
}

(3)(1)の配列を大きい順に並び替えるプログラム


#include <stdio.h>
 
void main()
{
 
    int i,j,k, a[4]={5,3,6,2},tmp;

    for( i=0; i <4; i++){        /*最初の中身表示*/
        printf("%d ",a[i]);
    }
    for(i=0; i<4; i++){
        printf("¥n");
        for(j=i+1; j<4; j++){
            if(a[i] < a[j]){
                tmp  = a[i];
                a[i] = a[j];
                a[j] = tmp;
                for( k= 0; k < 4; k++){        
                    printf("%d ",a[k]);
                }
            }
        }
    }

    for( i = 0; i < 4; i++){        /*入れ替え後の中身表示*/
        printf("%d ",a[i]);
    }    
}


(4)要素数10の配列をバブルソートで小さい順に並び替えるプログラム


#include <stdio.h>
 
void main()
{
    int a[10]={5, 3, 8, 6, 4, 9, 2,7, 5, 1 }, i, j, k, tmp;

    printf("並べ替え前:");
    
    for( i=0; i<10; i++){                
        printf("%d ",a[i]);
    }
    printf("¥n");
    
    for( i=9; i>0; i-- ){                /* バブルソート */
        for( j=0; j<i; j++ ){
            if( a[j] > a[j+1] ){
                tmp = a[j];
                a[j] = a[j+1];
                a[j+1] = tmp;
                
                for( k=0; k<10; k++){        /* 途中経過表示 */
                    printf("%d ",a[k]);
                }
                printf("¥n");
            }
        }
    }

    printf("並べ替え後:");
    
    for( i=0; i<10; i++){
        printf("%d ",a[i]);
    }
}
 

(5)要素数10の配列を挿入ソートで小さい順に並び替えるプログラム


#include <stdio.h>
 
void main()
{
    int a[10]={5, 3, 8, 6, 4, 9, 2,7, 5, 1 }, i, j,k, tmp;
 
    printf("並べ替え前:");
    
    for( i=0; i<10; i++){                
        printf("%d ",a[i]);
    }
    printf("¥n");
    
    for (i = 1; i < 10; i++) {                /* 挿入ソート */
        tmp = a[i];             
        for (j = i; j > 0 && a[j-1] > tmp; j--) {
            a[j] = a[j -1];                    
        }
        a[j]=tmp;

        for( k=0; k<10; k++){                /* 途中経過表示 */
            printf("%d ",a[k]);
        }
        printf("¥n");
    }

    printf("並べ替え後:");

    for( i=0; i<10; i++){
        printf("%d ",a[i]);
    }

}