1樓:小菜鳥2無聊寫**
解題argc是命令列引數的數目
( filel china beijing shanghai
執行輸出
chinabeijingshanghai)
ar**是引數字串的陣列
故*ar**是一個字串,也是ar**[0]
++ar**會使它指向下一個字串
ar**=;//題目中ar**的初始值可以看成是
e.g.
所以排除單個字元的選項c d
然後看選項a b
問題焦點在"china" 就是 ar**[1],或者說第一次++ar**後的*ar**是否會被輸出(顯然這是會的),故選a
源**(不使用其它編譯選項的)是
#include
int main(int argc, char *ar**)
return 0;
}說一下心得
首先面對這種問題不要慌張,哪怕程式完整地輸入進電腦也編譯不出來;為什麼,編譯選項(以下省略一堆文字說明),出題老師極有可能編譯的方式和你不一樣(而使用編譯選項也是開源專案裡常見的狀況);看一下gcc --help,它有多少行,就有多少種編譯方法,其中有一個選項可以用於指定被include進編譯過程的庫(故可以不在源**裡include)
其次是**的印刷質量問題,這在並非知名的出版物上十分明顯,字間距的變化不一很可能會誤導你對空格的判斷,所以在**的空格有歧義的地方,一定不要放棄除錯,或者就當它在空格的問題上沒有錯誤)
**質量就不要問了,**這個東西,應該出現在紙上,還是在電腦上,哪個更有質量,應該就不用問了(搞**的也是要有點能除錯出錯誤的感覺)
2樓:匿名使用者
這題目有問題吧,你有編譯執行一下嗎?只有4個命令列引數,但是最終輸出前ar**指向了不存在的位置,會有輸出嗎?反正我寫了,也試了,不會輸出什麼結果,你們有要求用什麼編譯器嗎?
我用的是gcc,windows環境
求助一個c語言問題?
3樓:考驕
你在看看,還是不對,全1表示的是-1,
1000...才表示-128
反碼概念,符號位不變,其他位取反(+1),全1反過來就全0,表示0的話就2個0了,所以負數在加個1
只有反碼才這樣
4樓:金半田
二進位制11111111代表-127,是按原碼規則來算。若按補碼規則,二進位制11111111算出來是-1。
文中說的是10000000代表-128。
詳細描述如下:
[+1] = [00000001]原 = [00000001]反 = [00000001]補
[-1] = [10000001]原 = [11111110]反 = [11111111]補
計算機將第1位作為符號位,0表示正數,1表示負數。
原碼:原碼很好理解,第1位是符號位,其餘位表示數值。
反碼:(1)正數:正數反碼是其本身。
(2)負數:去掉原碼符號位,其餘位按位取反。
補碼:(1)正數:正數補碼是其本身。
(2)負數:在反碼基礎上加1。
由上述定義可知:
[+0] = [00000000]原 = [00000000]反 = [00000000]補
[-0] = [10000000]原 = [11111111]反 = [00000000]補
既然+0和-0的補碼一致,所以只需保留一個(+0和-0原碼不同,注意看符號位)。
這樣一來,「[-0] = [10000000]原」相當於沒有使用,於是規定:「[10000000]」為-128。
既然是「規定」,就不能按原碼、反碼、補碼的規則計算了。設計計算機時就在硬體中設定為:10000000代表-128。
之所以引入補碼,是為了消除減法,用加負數來替代減法運算,這樣讓cpu設計更簡單。
5樓:自我程式設計
這裡說的是補碼,不是二進位制負數。
二進位制負數10000001到11111111表示-1到-127,而10000000表示的就是最小負數-128。
而負數在計算機中是以補碼儲存的。
負數->(原碼按位取反)反碼->補碼(反碼+1)。所以-1到-127的補碼就變成11111111到10000001。而0的原碼補碼還是0,-128的補碼是10000000。
所以如上題說的,-128~-1計時10000000~11111111。
6樓:
負數的補碼等於反碼+1
7樓:沙裡波特
二進位制11111111不是代表-127嗎?
--是的。 11111111 是-127的原碼。
為什麼是-128 呢?
--誰說的? 騙你的。
求助一個c語言問題?
8樓:聽不清啊
舉例說,char s[100];
才可以使用
scanf("%s",s);
進行輸入,如果是int a[100];
就不可以用
scanf("%d",a);
進行輸入。
求助一個c語言問題?
9樓:考驕
結構體變數一般包含多個變數型別,這個題目只定義一個整形的結構體變數,int表示一個整形變數,int是一個整形的結構體變數,現在結構體中只有一個變數,所以不是一個,但作用相同
求助一個c語言的問題。 10
10樓:匿名使用者
**50
瀉藥。人在茅房,剛剛夾斷。圈內人多,匿了。
你一個函式一個函式慢慢寫。都是比較初級的函式,有什麼不懂的可以問我
11樓:三天打魚
不復雜 不過用手機不方便寫**
你可以學一下陣列 定義函式 迴圈語句 流程控制 控制檯輸入輸出然後自己寫一寫看 如果在寫的過程中遇到問題再來提問 否則就算別人做了 你也不會
多寫**提高自己解決問題的能力
求助c語言的一個問題?
12樓:匿名使用者
在呼叫的前一行復制貼上函式頭,然後加個分號。
13樓:匿名使用者
比如函式體為
int pow(int a,int b)
那麼在主函式體中新增為
int pow(int a,int b);
14樓:小菜鳥2無聊寫**
分兩種情況
1 在同一個檔案中
你只需要在main函式定義之前宣告你的函式原型(prototype)就行,例如
int myfun(void);
/*declaration of a local function's prototype*/
int main()
int myfun(void){
/*suite of function myfun*/
return 0;
第二種情況是不在同一個檔案之中
這時int myfun(void);
就應該被換成
extern int myfun(void);
/*例如 gcc main.c myfun.c -omain.exe*/
就是這麼簡單,當然還有通過指定編譯器選項的辦法,這個可以在一些大型專案裡見到,不具體列出
求助c語言的問題,求助c語言的一個問題?
在呼叫的前一行復制貼上函式頭,然後加個分號。 比如函式體為 int pow int a,int b 那麼在主函式體中新增為 int pow int a,int b 小菜鳥2無聊寫 分兩種情況 1 在同一個檔案中 你只需要在main函式定義之前宣告你的函式原型 prototype 就行,例如 int ...
C語言求助,C語言問題,求助
孫毅超 二進位制數在計算機記憶體儲的是其補碼 對於有符號數,正數的補碼和本身一樣,負數的補碼是本身的數字位取反後加1 比如 1 0001 補 0001 1 1001 補 1111 計算機儲存 1就是儲存的1111 而int是兩個位元組的,也就是16位的二進位制,因此65535也就是111111111...
c語言問題 求助,C語言問題 求助
聽不清啊 這樣試試?include include int main scanf d d c,d for i 1 i a i printf d n e return 0 1 int 型別輸入的時候是 d,int 和float不要混合計算用。改過以後就是下面的 四則運算就是從左到右順序的,小括號優先。...