これは私のコードであり、動作しません。関数は値を返さない
前の位置にARRは、以下のものから大きい又は小さい場合であれば、そのiは配列の中でいくつかの点でARRの前の位置を値1
の場合に返すべきであるように、すべてのアレイのためのより大きいあなたはelse
ブロックに返すべきではない任意の助けのため
#include <stdio.h>
#include <stdlib.h>
int Up_array(int *arr,int Size)
{
int i;
for(i=0;i<Size;i++)
if (arr[i] > arr[i+1])
{
return 0;
}
else if(arr[i] <= arr[i+1])
{
return 1;
}
}
void main()
{
int *arr,Size,i;
printf("please enter the size of the array\n");
scanf("%d",&Size);
arr=(int*)malloc(Size*sizeof(int));
printf("please enter the array\n");
for (i=0; i<Size ;i++)
scanf("%d",&arr[i]);
Up_array(arr,Size);
free(arr);
system("pause");
}
、[ツアー](https://stackoverflow.com/tour)を取る[MCVE](https://stackoverflow.com/help/mcve)を作成する方法を学習してください。あなたの[Rubber Duck](https://ericlippert.com/2014/03/05/how-to-debug-small-programs/)に相談してください。私たちに*具体的な質問がありますか? –
'arr [i + 1]'はある時点でUBを呼び出すことができるので、範囲外の 'arr [Size]'と同等になります。現在のチェックでは、配列全体が最初の2つの要素だけチェックされず、ループの中から 'return 1;'を移動して 'else if'を取り除き、' for(i = 0; i
George
あなたの関数は、配列の最初の2要素をチェックするだけで、 'if'の両方の枝で返されるためです。 – Barmar