【C言語サンプル】
配列の中から 最大値と最小値を見つける


■1.サンプルコード

#include <stdio.h>
#include <limits.h>
static int 配列[] = {
	3,		-14,	159,	-2653,
	58979,	-3,		23,		-846,
	2643,
};
int main(void){
	int 最大値 = INT_MIN ;
	int 最小値 = INT_MAX ;

	const int 要素数 = sizeof(配列)/sizeof(配列[0]); 
	for(int i = 0 ; i< 要素数 ; i++ ){ 
		if(	最大値 < 配列[i]) {
			最大値 = 配列[i];
		}
		if(	最小値 > 配列[i]){
			最小値 = 配列[i];
		}
	}
	
	printf("配列の中の最大値 = %d\n",最大値);
	printf("配列の中の最小値 = %d\n",最小値);
}

コピペしコンパイル&実行し動作確認してください。


■2.昔風の書き方でバグのあるサンプルコード

#include <stdio.h>
#include <limits.h>
static short array[10] = {
	3,-14,159,-2653,
	58979,-3,23,-846,2643,
};
int main(void){
	//変数宣言
	int max ;
	int min ;
	int i,j;
	int len ; 
	
	//変数初期化
	max = INT_MIN ;
	min = INT_MAX ;
	len = sizeof(array)/sizeof(short);
	
	//最大値を求める
	for(i = 0 ; i< len ; i++ ){ 
		if(	max < array[i]) {
			max = array[i];
		}
	}
	//最小値を求める
	for(j = 0 ; j < 10; j++){	
		if(	min > array[i]){
			min = array[i];
		}
	}
	
	printf("max = %d\n",max);
	printf("min = %d\n",min);

	return 0;
}

このソースコードはバグっているので
真似しないでください。
力試しに正しく動くように直してみましょう。

バグのヒント

●1.整数を扱うのにint型でなくてshort型を使っている
●2.配列の要素数を自分で 書いている array[10]
●3.for文のループカウンタをfor文の中で宣言していない
●4.for(j = 0 ; j < 10; j++){と最大値10をべた書きしている
●5.sizeof(array)/sizeof(short);と書くと配列の型変更時忘れるかも