×

[PR]この広告は3ヶ月以上更新がないため表示されています。
ホームページを更新後24時間以内に表示されなくなります。


C言語

プロフィール

プロフィール画像
■ 某国立大学に通う大学生です。
■ サッカー大好き
■ プログラミングを始めてまだ一年です。
>>プロフィールの詳細


C言語


〜関数を使って10個の数字の最小値と最大値を求めよう〜

同じ計算をプログラム内で繰り返し行う場合、
関数を使う事でプログラムを簡単に出来ます。
またmain関数内の記述が減るので、見やすいプログラムとなります。

必要な文法[関数,配列,ポインタ]
考え方
ソースプログラム
演習問題

必要な文法[関数]


関数

#include <stdio.h>
int kansuu(int x,int y);
int kansuu(int x,int y){
    int z;
    式;
    ・
    return z;
}
int main(void){
    ・
    ・
    a=kansuu(b,c);
    ・
    ・
}

1.main関数に入る前に作りたい関数の定義をする。
 戻り値の型 関数の名前(引数1,引数2...);
2.定義した関数の中身を記述する。
3.main関数の中で呼び出す。

※注意事項
・戻り値は一つの関数の中で一つのみ。
・戻り値はなくても良い。ない場合はvoidで定義する。
・関数の名前は何でも良いが、何を求める関数なのかを分かりやすい名前が好ましい
・引数は多くても少なくても何個でも良い。ない場合はvoidで定義する。
・関数内で定義した変数(上の例ではx,y,z)はmain関数とは独立しているので、
 関数内で書き換えてもmain関数内の変数は書き換えられない。
配列
int 配列名[要素数];

配列は連続した領域に要素数分メモリを確保します。
要素数が3の場合、配列名[0]、配列名[1]、配列名[2]が確保します。
配列名が式の中に現れると通常、その配列の先頭要素のアドレスを表します。
(これは配列を関数に渡すときに必要になります。)
関数でポインタを使う

int kansuu(int x[],int y[]){
    int z;
    式;
    ・
    return z;
}
int main(void){
    int a[5];
    int b[5];
    ・
    ・
    c=kansuu(a,b);
    ・
    ・
}

関数では戻り値は一つしか設定できません。
もし複数の値を返したいときは、ポインタを使います。
また引数で配列を丸ごと渡したいときもポインタを使います
つまり引数で変数のアドレスを渡す事によって、main関数内の変数の値を直接いじる事が出来ます。
上の例では、引数のa,bは配列の先頭要素のアドレスを表しています。

考え方

最大値を求める考え方はシンプルです。
1.まず求めたい数字列を配列に格納します。
2.for文により1から配列の要素数まで1刻みでループさせます。
3.int型変数MAXを定義しておき、初期値として配列の一つ目の要素の数を代入しておく。
4.for文の中で配列のそれぞれの要素とMAXとの大小を比べ、大きかったらMAXの値を更新する
最小値の考え方も基本的には同じです。

ソースプログラム



#include <stdio.h>
int max(int data[]);
int min(int data[]);
int main(void){
    int MAX,MIN;
    int a[10]={3,18,34,92,53,12,4,39,13,56};
    MAX=max(a);
    MIN=min(a);
    printf("MAX = %d\n",MAX);
    printf("MIN = %d\n",MIN);
    return 0;
}
int max(int data[]){
    int max=data[0];
    int i;
    for(i=1 ; i<10 ; i++){
        if(max < data[i]){
            max=data[i];
		}
    }
    return max;
}
int min(int data[]){
    int min=data[0];
    int i;
    for(i=1 ; i<10 ; i++){
		if(min > data[i]){
            min=data[i];
        }
    }
    return min;
}


実行結果

MAX = 92
MIN = 3
理解できましたか。
もし理解できたら以下のプログラムにチャレンジしてみてください。

演習問題


関数を使って10個の数字を大きい順に並び替えましょう。


C言語〜関数を使って10個の数字の最小値と最大値を求める〜トップへ▲
C言語〜サンプルプログラム〜トップへ▲

ホームページ テンプレート フリー">

Design by