c語言挑選小白鼠中為什麼最小值的賦值為

2022-04-01 07:15:28 字數 5432 閱讀 4082

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;//返回實際字串的長度

}希望對你有幫助

C語言求整數的最小值及最小值的位置

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...

用C語言,任意輸入數,求其中的最大值和最小值,並顯示位

思路 定義一個變數,並鍵盤輸入一個數賦值給該變數,且把該數賦值給最大值和最小數。接著for迴圈輸出剩下9個數,並判斷該數和最大值最小值的大小關係,更新最大值和最小值,最後輸出最大值和最小值。參考 include stdio.h int main printf 最大值為 d,最小值為 d n max,...

c語言 程式如下,求L1,L2,L3的最小值,求高手幫助

交集,並集?晚上才有時間給你做,現在放出來了。可以的話,最好能自己做出來。這才最有效果的。單連結串列 include include define elemtype int typedef struct lnode 單鏈基本儲存結構 lnode,linklist void initlist link...