1樓:
這個段**的意思是找出你輸入資料的最大值和最小值。但是這個程式本身有很多限制:1 不能輸入超過100個數;2 輸入的數應該在0到100000之間(如果輸入的全是負數或者大於100000,程式依然可以執行,但是結果不對);如果在for迴圈中判斷i為0時在初始化min和max,就沒有第二項的限制了,你也可以更好的理解這個程式了。
如果把a陣列改成一個值,也可以很好的執行,因為最後的結果只是列印最大和最小值的位置,這樣就沒有第一項的限制。如下:
#include
int main()
if(a }printf("%d %d\n",x+1,y+1); return 0;} 2樓:u無力哀嘆丶 這是一個常用的技巧 之後會將min 與a[i]比較 如果a[i]比較小 則吧a[i]的值賦值給min 很顯然當min很大的時候a[0]< min 則 min=a[0] 很自然的把a[0]作為min的初值 在定義min的同時給min初始化 同時min儲存當前最小值 避免再寫min = a[0]這樣的語句 會出現強制使最小值為a[0]的歧義 max同理 3樓:匿名使用者 實際上: min=100000 這樣賦值有一個基本的前提,就是輸入的資料中,不能全部大於100000,否則邏輯有誤,時間上要想更嚴謹的話可以這樣改: c語言的int 為什麼最小值是-32768 4樓:下雪天的雨 c語言中,int若是規定大小為兩個位元組,則其最小值就是-32768。 原因是: 兩個位元組是16位,規定第一位為符號位,則其能表示的數值範圍是-2^15~2^15-1,即-32768~32767。但最小值為什麼是-32768,為什麼不是-32767呢? 原來人們發現若是在記憶體中直接存放數的原碼,則0000 0000 0000 0000和1000 0000 0000 0000分別表示+0和-0,其值都是0,用兩個值表示同一個值,這樣太浪費空間了。 於是人們最後決定在記憶體中存放數的補碼,這樣+0和-0的存放形式就都是0000 0000 0000 0000了,但是同時也多出來一個1111 1111 1111 1111,它並不是任何一個數的補碼,於是將其規定為-32768。 這樣表示的話,正數最大值是32767,負數最小值是-32768。 從 0到 32767,用二進位制是從:00000000到01111111 。 從-1到-32768,用二進位制是從:11111111到10000000 。 擴充套件資料: c語言的優點: 優點 1、簡潔緊湊、靈活方便 c語言一共只有32個關鍵字,9種控制語句,程式書寫形式自由,區分大小寫。把高階語言的基本結構和語句與低階語言的實用性結合起來。c 語言可以像組合語言一樣對位、位元組和地址進行操作,而這三者是計算機最基本的工作單元。 c語言的 hello world 程式 2、運算子豐富 c語言的運算子包含的範圍很廣泛,共有34種運算子。c語言把括號、賦值、強制型別轉換等都作為運算子處理。從而使c語言的運算型別極其豐富,表示式型別多樣化。 靈活使用各種運算子可以實現在其它高階語言中難以實現的運算。 3、資料型別豐富 c語言的資料型別有:整型、實型、字元型、陣列型別、指標型別、結構體型別、共用體型別等。能用來實現各種複雜的資料結構的運算。並引入了指標概念,使程式效率更高。 4、表達方式靈活實用 c語言提供多種運算子和表示式值的方法,對問題的表達可通過多種途徑獲得,其程式設計更主動、靈活。它語法限制不太嚴格,程式設計自由度大,如對整型量與字元型資料及邏輯型資料可以通用等。 5、允許直接訪問實體地址,對硬體進行操作 由於c語言允許直接訪問實體地址,可以直接對硬體進行操作,因此它既具有高階語言的功能,又具有低階語言的許多功能,能夠像組合語言一樣對位(bit)、位元組和地址進行操作,而這三者是計算機最基本的工作單元,可用來寫系統軟體。 6、生成目標**質量高,程式執行效率高 c語言描述問題比組合語言迅速,工作量小、可讀性好,易於除錯、修改和移植,而**質量與組合語言相當。c語言一般只比彙編程式生成的目標**效率低10%~20%。 7、可移植性好 c語言在不同機器上的c編譯程式,86%的**是公共的,所以c語言的編譯程式便於移植。在一個環境上用c語言編寫的程式,不改動或稍加改動,就可移植到另一個完全不同的環境中執行。 8、表達力強 c語言有豐富的資料結構和運算子。包含了各種資料結構,如整型、陣列型別、指標型別和聯合型別等,用來實現各種資料結構的運算。c語言的運算子有34種,範圍很寬,靈活使用各種運算子可以實現難度極大的運算。 c語言能直接訪問硬體的實體地址,能進行位(bit)操作。兼有高階語言和低階語言的許多優點。 它既可用來編寫系統軟體,又可用來開發應用軟體,已成為一種通用程式設計語言。 另外c語言具有強大的圖形功能,支援多種顯示器和驅動器。且計算功能、邏輯判斷功能強大。 5樓:匿名使用者 因為最高位是符號位,1表示是負數,0表示是非負數。 1000 0000 0000 0000,這個中的1表示是負數,它是1111 1111 1111 1111 + 1得來的,1 0000 0000 0000 0000,但是隻有8位,又1000 0000 0000 0000沒有佔用,所以規定它最最小的負數。0000 0000 0000 0000表示0。 6樓:匿名使用者 計算機裡的數是通過補碼來儲存的。 第一位是符號位,1表示負數,0表示正數。 根據補碼的原則,正數的補碼為其本身,負數的補碼為其對應的二進位制**去反加1。 你可以把按照這個計算方法把兩個數字算一下,看哪個更小。 7樓:匿名使用者 c語言中整形變數int的長度範圍規定在-32768~32767之間,這是標準 8樓:頑鬥坊 計算機用二進位制表示負數是用的「補碼法」,做法是正數按原碼,負數用其相反數的反碼加一。 這種結果用-32768代替了「-0」,可以使符號位能與有效值部分一起參加運算,從而簡化運算規則;同時使減法運算轉換為加法運算,進一步簡化計算機中運算器的線路設計。 舉例:3的碼值是 00000011,-3則為:11111100+1= 11111101 32767的碼值是01111111,11111111(15個1),-32767是 10000000,00000000+1=10000000,00000001 -32768是01111111,11111111+1=10000000,00000000 9樓:匿名使用者 1111 1111 1111 1111 1111 是-11111 1111 1111 1111 1110是-2 c語言,怎麼用malloc申請一個100000個變數的字串陣列? 10樓:匿名使用者 這是一個二維陣列,所以要定義一個二維指標才能完成相應的操作 char **m ; m = (char**)malloc(sizeof(char *) * 100000); //行數 int i=0; for( i=0;i<100000 ;i++ )接下來,就和使用二維陣列一樣的操作m了,如: strcpy( m[0], "hello" ); m[0][0]= 'h' ; 11樓:匿名使用者 可以通過以下語句實現: char *p; //定義指標變數 p = (char *)malloc(100000);//申請空間並賦值給p。 解析:malloc為記憶體分配函式,其定義為void * malloc(size_t size); 功能為申請size大小的記憶體長度,並返回分配到的地址值。 而字元型別,每個元素佔1個位元組空間,所以100000個變數的總空間就是100000位元組,於是引數size為100000。 12樓:匿名使用者 #include #include #include using namespace std; // 申請的arr空間類似: #代表point *代表data; 那麼他就是一個 4行5列的資料 // #***** #***** #***** #***** //這是本來應該儲存的形態 // ####***** ***** ***** ***** //這是我們寫出來的結構 那麼解釋一下 // 第一個# 即頭指標arr, 第二個# 他指向了第第二組的頭 即第二行的首元素 第三個#指向了第三行的首元素 第四個#同理 // head即第一個*的位置 // 二維陣列 arr[i][j] 等價於 * ( arr + i ) + j; 又等價於 arr[i] + j; ( 此處arr[i]代表地址 ) template < typename type > type ** new_array_2d( int row, int col ) //row是行 col是列 // this指標即為date -> func() 等價於 func( &date ), 隱含傳遞了this; } // 現在arr[i][j] 的地址即為這個資料的指標 }return ( type ** ) arr; //返回這個陣列頭指標 }template < typename type > void delete_array_2d( type ** arr, int row, int col ) //釋放二維陣列 row行 col列 }if( arr != null ) }int main() }for( int i = 0; i < nrow; i++ ) //輸出二維陣列 cout << endl; }delete_array_2d< string >( p, nrow, ncol ); //釋放記憶體 system( "pause" ); return 0; }你申請的是一維的 你想要的是二維的 當然報錯 13樓:修和玉於旋 這是以前我寫的**,字串存在buffer指標所在的緩衝區中intreadbuffer(char **buffer) free(buftemp);//釋放 buffer[buf_totalcount-1]='\0'; //填充結束符 returnbuf_totalcount-1;//返回實際字串的長度 }希望對你有幫助 lz的 loc 沒有定位功能 因為沒有再 if 條件中 而1l的 loc loc 1 只是計算有多少次遇到較小值如輸入1 loc 0 2 loc 0 3 loc 0 4 loc 0 5 loc 0 0 loc 1 我的做法是用迴圈中的i來標識位置 include include int main v... 思路 定義一個變數,並鍵盤輸入一個數賦值給該變數,且把該數賦值給最大值和最小數。接著for迴圈輸出剩下9個數,並判斷該數和最大值最小值的大小關係,更新最大值和最小值,最後輸出最大值和最小值。參考 include stdio.h int main printf 最大值為 d,最小值為 d n max,... 交集,並集?晚上才有時間給你做,現在放出來了。可以的話,最好能自己做出來。這才最有效果的。單連結串列 include include define elemtype int typedef struct lnode 單鏈基本儲存結構 lnode,linklist void initlist link...C語言求整數的最小值及最小值的位置
用C語言,任意輸入數,求其中的最大值和最小值,並顯示位
c語言 程式如下,求L1,L2,L3的最小值,求高手幫助