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樓:伱i汝非吾
是變數名,定義結構體變數有三種方法。
圖中的(1)情況,結構體沒有名稱,無法在主函式中再定義,只能用分號前給的這幾個變數。
求助一個c語言的問題。 10
11樓:匿名使用者
**50
瀉藥。人在茅房,剛剛夾斷。圈內人多,匿了。
你一個函式一個函式慢慢寫。都是比較初級的函式,有什麼不懂的可以問我
12樓:三天打魚
不復雜 不過用手機不方便寫**
你可以學一下陣列 定義函式 迴圈語句 流程控制 控制檯輸入輸出然後自己寫一寫看 如果在寫的過程中遇到問題再來提問 否則就算別人做了 你也不會
多寫**提高自己解決問題的能力
求助c語言的一個問題?
13樓:匿名使用者
在呼叫的前一行復制貼上函式頭,然後加個分號。
14樓:匿名使用者
比如函式體為
int pow(int a,int b)
那麼在主函式體中新增為
int pow(int a,int b);
15樓:小菜鳥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語言問題,求助
孫毅超 二進位制數在計算機記憶體儲的是其補碼 對於有符號數,正數的補碼和本身一樣,負數的補碼是本身的數字位取反後加1 比如 1 0001 補 0001 1 1001 補 1111 計算機儲存 1就是儲存的1111 而int是兩個位元組的,也就是16位的二進位制,因此65535也就是111111111...
c語言問題求助,C語言問題求助
普洛智應 include void sort int p1,int p2,int p3 else if p1 p3 else else if p2 p3 if p1 看下函式形參和實參的概念。 include main void sort int p1,int p2,int p3 少括號 else ...
c語言問題,求助,C語言問題,求助!!
include int flower int num int main include int flower int num int main t 0 for i m i n i if t printf no n else printf n return 0 風林火陰山雷 先回答你第一個問題,遞迴函...