iT邦幫忙

0

C/C++的CODE跑不出來+看不出問題

Tzu 2021-01-09 11:14:011446 瀏覽

各位大大午安:
真的是好冷喔~
/images/emoticon/emoticon47.gif

事情是這樣的C/C++的CODE跑不出來+看不出問題
是否可以請各位大神給個方向:
/images/emoticon/emoticon41.gif
程式碼:

#include <stdio.h>
#include <stdlib.h>
#define MAX_LEN

int binary(int*data,int low,int high,int target){
	int middle;
	if(low > high)
		return -1;
	else{
		middle = (low+high) /2;
		if(target == data[middle])
		return middle;
	else if (target<data[middle])
	    return binary(data,low,middle-1,target);
		else
		 return binary(data,middle+1,high,target);
	}
	
}


int main(){
	int data[MAX_LEN]=
	{1,8,9,15,25,33,42,66,74,81,90};
int i,index,target,c;
printf("原始陣列:");
for (i = 0 ; i<MAX_LEN ; i++ )
printf("[%d]",data[i]);
printf("\n");
target=0;
while (target !=-1){
	printf("請輸入搜尋值(-1結束)==>");
	scanf("%d",&target);
	index=binary(data,0,MAX_LEN-1,target);
	if(index !=-1)
	printf("搜尋到鍵值:%d(%d)\n",target,index);
	else
	printf("沒有搜尋到鍵值:%d\n",target);
	
}
	
	return 0;
}


編輯器顯示的錯誤如下,可以想不出來怎麼改:
/images/emoticon/emoticon02.gif
https://ithelp.ithome.com.tw/upload/images/20210109/20119035OvYjxm4oTc.png

先跟各位大神說謝謝了
/images/emoticon/emoticon37.gif

Tzu iT邦新手 1 級 ‧ 2021-01-09 12:19:57 檢舉
各位大神 #define MAX_LEN 找了是沒有加上尺寸 要寫#define MAX_LEN 11
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

0
rogeryao
iT邦超人 8 級 ‧ 2021-01-09 12:17:31
最佳解答
int data[MAX_LEN]
改成
int data[]
for (i = 0 ; i<MAX_LEN ; i++ )
改成
for (i = 0 ; i<sizeof(data)/sizeof(int) ; i++ )

請參閱 : 如何使用陣列 (Array)

Tzu iT邦新手 1 級 ‧ 2021-01-09 12:22:09 檢舉

大神您好 其實這裡我是要練習把

if(low > high)
		return -1;
	else{
		middle = (low+high) /2;
		if(target == data[middle])
		return middle;
	else if (target<data[middle])
	    return binary(data,low,middle-1,target);
		else
		 return binary(data,middle+1,high,target);
	}
   

改成while還在思考中
/images/emoticon/emoticon06.gif

我要發表回答

立即登入回答