程式設計之美 第三章 結構之法 3 11程式改錯

2021-07-04 06:32:52 字數 1272 閱讀 4884

/*

程式改錯:

找出乙個有序字串陣列arr中值等於字串v的元素的序號,如果有多個元素滿足這樣的條件,則返回其中序號最大的

程式中的錯誤:

1 midindex = (minindex + maxindex)/2;這樣可能會由於求和中間結果而溢位,應該改為midindex = minindex + (maxindex - minindex)/2;

2 迴圈的終止條件可能無法達到,比如minindex = 2,maxindex = 3,arr[minindex] <= v的時候,程式將進入死迴圈

輸入:7

machao

anben bichao chaoge machao machao mayan naonu

2machao

machao machao

1machao

machao

輸出:410

*//*

關鍵:1 midindex = (minindex + maxindex)/2;這樣可能會由於求和中間結果而溢位,應該改為midindex = minindex + (maxindex - minindex)/2;

2 迴圈的終止條件可能無法達到,比如minindex = 2,maxindex = 3,arr[minindex] <= v的時候,程式將進入死迴圈

3 while(low < high - 1)//迴圈結束有兩種情況:1若low為偶數,那麼low = high 2 low = high -1

4 if(strcmp(arr[mid],v) <= 0)

5 else

else if(!strcmp(arr[low],v)) */

#include #include const int maxsize = 100;

int binarysearch(char arr[maxsize],int low,int high,char* v)

else

}if(!strcmp(arr[high],v))//先判斷序號最大的值

else if(!strcmp(arr[low],v))

else }

void process()

scanf("%s",strsea);

for(int i = 0 ; i < n ; i++)

printf("%d\n",binarysearch(strarr,0,n-1,strsea)); }}

int main(int argc,char* argv)

構建之法第三章

構建之法第三章 本章為軟體工程師的成長,主要介紹了評價軟體工程師水平的主要方法,技能的反面,tsp對個人的要求。軟體開發流程 軟體開發流程包括團隊的流程,也包括個人的流程 初級軟體工程師有幾方面成長 1 積累軟體開發相關的知識,提公升技術技能 2 積累問題領域的知識和經驗 3 對通用的軟體設計思想和...

程式設計之美 第三章 結構之法 3 9重建二叉樹

重建二叉樹 給定一顆二叉樹,假設每個節點都用唯一的字元來表示 假設已經有了前序和中序遍歷結果,希望通過乙個演算法來重建這課樹 給定函式如下 void rebuild char ppreorder,char pinorder,int itreelen,node proot itreelen 樹的長度,...

Linux程式設計之 第三章 檔案操作

本篇主要是針對linux中的檔案 目錄以及相關操作。主要介紹系統呼叫和標準i o庫。linux中,一切都是以檔案的形式來表示的,包括一些硬體裝置。大多數情況下,只需要使用五個基本的函式 open close read write 和ioctl。目錄也是檔案,它用來儲存其他檔案的節點號 inode 和...