這是我的代碼,它不工作。函數不返回任何值
如果在先前的位置的ARR是從跟隨一個更大或更小,如果其大於所有數組,所以我應該如果返回值1
在一些點陣列中的ARR的先前位置是更大然後然後按照之一,所以它應該返回值爲0感謝所有幫助
#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]'超出邊界。雖然在給定當前檢查的情況下,整個數組不會僅僅檢查前兩個元素,將'return 1;'移出循環並擺脫else if,並將循環改爲for(i = 0;我<尺寸-1;我++)'。我認爲這會做你想做的事情,但是很難從 – George
這個問題中知道你的函數只是檢查數組的前2個元素,因爲它會在'if'的兩個分支中返回。 – Barmar