プログラミング+α学習ブログ

勉強したことの備忘録です。

点数を読み込んで合格者(60点以上)の一覧を表示するプログラム

#include <stdio.h>

int tensu[5];

void prt(int ten);  // 関数原型宣言

int main(void)
{
    extern int tensu[];
    int i;
    
    puts("5人の点数を入力してください。");
    for (i = 0; i < 5; i++) {
        printf("%d:", i + 1);
        scanf("%d", &tensu[i]);
    }
    
    puts(" 合格者一覧表 ");
    puts("------------- ");
    prt(60);
    
    return (0);
}

/*--- 配列tensuの中で値がten以上の要素を表示 ---*/
void prt(int ten)
{
    extern int tensu[];
    int i;
    
    for (i = 0; i < 5; i++)
        if (tensu[i] < ten)
            ;                                           // 何もしない
        else
            printf("tensu[%d] = %d\n", i, tensu[i]);    // 表示を行う
}

実行結果

5人の点数を入力してください。
1:68
2:72
3:60
4:81
5:43
 合格者一覧表 
-------------
tensu[0] = 68
tensu[1] = 72
tensu[2] = 60
tensu[3] = 81

定義でもある宣言

関数の外で変数や配列の実体を作り出す宣言を、定義でもある宣言という。

定義ではない宣言

実体を作り出すことがない宣言を、定義ではない宣言という。
この場合、externをつけて宣言する。

extern int tensu[];

「どこかで作られているtensuを使いますよ」という意味である。

関数原型宣言(=プロトタイプ宣言)

ある関数の定義を、main関数より後ろ側に配置する場合、その関数のことをmain関数に教えなければならない。
その場合、関数の返却値型や、仮引数の型や個数などを明確に記述した宣言を行う。
これを関数原型宣言(プロトタイプ宣言)という。