
■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);と書くと配列の型変更時忘れるかも