入力された5つの数字のうち最小の数を見つけるプログラムを書いてみたいと思います。私は関数getMinNumを使用したいときに固執していますが、次のようなエラーが表示されます: ']'トークンの前に期待される式 ポインタとの接続がわかっていますが、もちろん可能です。配列内の最小数を見つける
#include <stdio.h>
#include <stdlib.h>
float getMinNum(float a[], int x);
int main()
{
int n = 5;
int i;
float z[n];
for(i=0; i<n; i++){
scanf("%f", &z[i]);
}
printf("%6.2f", getMinNum(z[], n));
return 0;
}
float getMinNum(float a[], int x)
{
int i, min = a[0];
for(i=0; i<x; i++){
if(min > a[i+1]){
min = a[i+1];
}
}
return min;
}
注意として、それを呼び出す必要があります。あなたは 'a [0]'が 'min'のものと同じ値であることを知っています...まあ、 'min'が' float'であって 'int'でないならば、あなたはそうです。データを使う前に、 'fscanf()'がすべて成功したことを確認する必要があります。 VLA(可変長配列)も使用しています。害はありませんが、そうしていることに気づくべきです。 –
具体的には、可変長配列を使用していることに注意してください。なぜなら、コンパイラでn = 0を設定できるからです。これは、@ ed-healの解決法を使った範囲外のメモリアクセスにつながります。 [0] 'は有効なメンバーです。 'z 'を' float z [5] 'で宣言すると、コンパイラはその前提を強制します。 – Matt