1樓:沈子繁
結果:整個程式的功能其實就是用了三種方式輸出陣列中的6個數
陣列名a可以看成陣列首元素的地址,陣列開闢了一段連續的儲存空間,*(a+i)逐個解引用陣列中的元素
pa=a,讓指標pa指向陣列首元素,通過指標的移動輸出陣列中的元素
2樓:匿名使用者
#include
int main()
, i, * pa;
for (i = 0; i < 6; i++)
用陣列加下標法輸出陣列元素
printf("\n");//換行符號
for (i = 0; i < 6; i++)
用陣列名指標法輸出陣列元素
printf("\n");
for (i = 0, pa = a; pa < a + 6; pa++)
用指標變數(指標移動)對元素進行輸出
printf("\n");}
求助一個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樓:北京最遊科技****
這題是迷惑人用的……
因為迴圈內部沒有break,所以for會一直執行下去,直到a=11,。這時a大於10,迴圈結束。
最終a的值為11
9樓:岔路程式緣
for(a=0;a<=10;a++)
直到a=11時,迴圈結束。迴圈體對a的值沒有影響,包括continue對迴圈沒有影響。
所以,最後列印a的值是11,選項b。
求助c語言問題
10樓:匿名使用者
scanf("%d",&a); a是整型,你輸入字串肯定不對,可以判斷一下scanf的返回值,如果是返回0,說明輸入的不是整數,可以再重新輸入,具體處理**可以參考我另一個問題的回答答案,連結地址如下
網頁連結
求助c語言的一個問題?
11樓:匿名使用者
在呼叫的前一行復制貼上函式頭,然後加個分號。
12樓:匿名使用者
比如函式體為
int pow(int a,int b)
那麼在主函式體中新增為
int pow(int a,int b);
13樓:小菜鳥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語言問題?
14樓:小菜鳥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)
其次是**的印刷質量問題,這在並非知名的出版物上十分明顯,字間距的變化不一很可能會誤導你對空格的判斷,所以在**的空格有歧義的地方,一定不要放棄除錯,或者就當它在空格的問題上沒有錯誤)
**質量就不要問了,**這個東西,應該出現在紙上,還是在電腦上,哪個更有質量,應該就不用問了(搞**的也是要有點能除錯出錯誤的感覺)
15樓:匿名使用者
這題目有問題吧,你有編譯執行一下嗎?只有4個命令列引數,但是最終輸出前ar**指向了不存在的位置,會有輸出嗎?反正我寫了,也試了,不會輸出什麼結果,你們有要求用什麼編譯器嗎?
我用的是gcc,windows環境
c語言問題。
16樓:暢景彰
void main()
這個程式應該滿足你的要求了,而且我已經通過除錯了。
求助一個c語言的問題。 10
17樓:匿名使用者
**50
瀉藥。人在茅房,剛剛夾斷。圈內人多,匿了。
你一個函式一個函式慢慢寫。都是比較初級的函式,有什麼不懂的可以問我
18樓:三天打魚
不復雜 不過用手機不方便寫**
你可以學一下陣列 定義函式 迴圈語句 流程控制 控制檯輸入輸出然後自己寫一寫看 如果在寫的過程中遇到問題再來提問 否則就算別人做了 你也不會
多寫**提高自己解決問題的能力
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 少括號 el...
C語言問題求助!c語言問題求助!!
include include void jm long n 加5取餘。for i 0 i k i a i a i 5 10 交換首末位。l a k a k a 0 a 0 l 轉存到m m 0 for i 0 i k i m a i pow 10,k i printf 加密後為 d m void ...
C語言求助,C語言問題,求助
自己做個類,再生成一個陣列,不算難的,試試吧 給個提示吧 相當於一個通訊錄中查詢功能的變形。c語言求助 define m 5 define n 3 main b n c 8 for i 0 ic j for i 0 i printf 3d c i c語言問題,求助 這題是迷惑人用的 因為迴圈內部沒有...