C語言問題

2023-04-15 04:25:49 字數 6423 閱讀 2700

1樓:網友

(1)對於while,不論後面的括號裡是什麼形式的表示式,都是對其進行判斷是真是假。對於單個變數x形式,值為0即為假,非0即為真。

(2)for的話,第一個分號前可以進行變數賦初值,這裡要注意的是,並不一定是要給i賦出值,也可以換成給別的變數賦初值或者同時給兩個或兩個以上的變數賦初值,迴圈執行的時候,對於:

for(表示式1;表示式2;表示式3) 語句。

是先執行表示式1

接下來再通過表示式2判斷,進行迴圈。也就是說表示式1是隻執行一次的,並且最先執行,可以看作是在迴圈之外的準備工作,所以上面的語句等效於:

表示式1for(;表示式2;表示式3)語句。

可以看出表示式1並不是一定需要的,而所謂的變數賦初值也只是一般情況。

另外表示式2和3也是可以省略的。

2樓:匿名使用者

1:while(x) 的形式中x肯定是一常量,是0的話,while語句不執行,如果是其他值,就構成了死迴圈,除非語句中有跳出語句,如break;或者goto(指向迴圈外面)等。

2: for(;i<100;i++)的這種for的形式,需要根據上下文來確定,或者前面的語句指明瞭i的值,或者for裡面有i的值,如果不給i附初值的話,肯定是執行不了的。

3樓:旅崖玟

1. x為非零時執行while的語句,即執行迴圈。

若x為零時,則不執行while的語句,跳出迴圈,繼續下一語句。

2.第一個「;」前面是宣告部分,第二個位置是條件判斷部分,第三個位置是迴圈執行語句部分。

例如:for(a;b;c)d;e

1.執行a;如果b為非零,則執行d,然後c(如i++)再繼續判斷b.

2.如果b為零,則直接執行e,即跳出迴圈,直接執行下一個語句。

上面的語句相當於。

a;if(b)e;

4樓:孔聖傳經書山河

第1題:就是要看x是否為0,比如:

int x;

x = a+b;

while(x)

此時,要看x的值為多少,兩種情況:其值為0(可以理解為false),那麼不會進入迴圈體;其值非0(可以理解為true),即進入迴圈體。

第2題:第一個分號前面為迴圈變數的初始值,這裡空著,也就是沒有設定初時值,而是通過前面最後得到的i的值來作為初時值。

5樓:匿名使用者

while(x) x就是判定條件啊!x有它的邏輯值 0為false

非0為true,當然這個定義可以去查c的手冊。

就是第一次什麼也不執行~一個空語言而已。

6樓:匿名使用者

1)while(x)x為零不執行,x為非零不停地執行。

2);前省略的是變數的初值,如果在此之前變i已經賦過值了,那麼就可以用這樣的省略形式。

c語言問題

7樓:匿名使用者

五. 判斷一個正數是否為對稱數,如果是返回0,不是返回1,(不允許呼叫c庫字串轉換相關函式),如11,121,1221就是對稱的。

首先把正數(沒有考慮浮點數)存放到字元陣列中a,len記錄正數長度。

while(num>=10)

然後比較判斷就可以了。}

8樓:我不喜歡故事

第一題的資料儲存形式看不懂到底是啥意思。求解……

9樓:海海胡

選擇題:

1、c2、d

3、b4、c

5、a6、a

7、c8、d

9、b10、d

判斷題:1、錯2、對。

3、對4、錯5、對。

10樓:匿名使用者

首先,這是一道考區分 "表示式" 與 "表示式的值" 的題。

我們要注意,表示式也是有它自己的值的。

一、逗號表示式(表示式1,表示式2,..表示式n)採取從左到右順序求值,並把最後一個逗號後的表示式的值作為 "逗號表示式的值"。

如:表示式1,表示式2,……表示式n 這個 "逗號表示式的值" 就等於 "表示式n" 的值,與其它值無關。

二、賦值表示式(變數=表示式)採取從右到左求值,並把等號左邊的變數最終得到的值作為 "賦值表示式的值"。

所以,表示式(i=4,j=16,k=32)的值是 k=32 的值,而 k=32 這個賦值表示式的值就是等號左邊變數 k 的最終值,是32。於是,x 值為32。

11樓:匿名使用者

因為你只輸入了一個數10,系統把這個值賦給了變數a;你的程式中用了兩個變數去接收輸入的值,所以系統選擇了一個隨機數賦值給了變數b。

另外,虛機團上產品**,超級便宜。

12樓:匿名使用者

首先,手動計算一下怎麼才能交換。

根據題目要求,先算。

0的最小公倍數:18,這說明:最少10個一角、12個五角、9個一元才一樣高,也就是說小明可以交換的倍數是10*0.

1+12*元,而小紅交換的倍數是10元,雙方可以交換的的金額只能是90元、180元……你輸入n=3,那肯定不能交換啊。

來到這裡,如果認為效率為上的話,直接判斷小紅拿出的10元的張數n是不是9的倍數,一步就可以輸出結果了。如果n/9是整數,則一角、五角、一元的數量就是:10*n/9、12*n/9、9*n/9了,否則輸出不能交換。

其次,如果你硬要按照你源程式的思路做,那我只能指出最明顯的邏輯問題:for迴圈沒有大括號,所以它只會一直執行j=6*i/5;這一句直到條件終止,那當然輸不出結果啊。

還有沒有其他問題,既然是考題,自己思考吧。

13樓:匿名使用者

應該是資料型別的問題吧,不能用整型,整型沒有符合的解。

c語言問題

14樓:雲淡風輕

!(a+b)+y-1&&x+b/2

這就是邏輯運算子和算數運算子的優先順序運算問題;

!是邏輯非運算子,意思是(a+b)如果不等於0,則!(a+b)的值是0,如果等於0,則!(a+b)的值是1;

知道了!(a+b)的值以後,!(a+b)+y-1的值也就知道了。

然後求x+b/2,先求b/2,也就是b除以2,用得到的商加上x,就得出了x+b/2的值;

然後如果!(a+b)+y-1的值不等於0,同時x+b/2的值也不等於0,那麼這個式子的結果就是1;

如果&&兩邊的式子都等於0,或者有一邊等於0,那麼這個式子的結果就是0;

15樓:匿名使用者

第一層1個。

第二層2個。

第三層4個。

第四層8個。

第五層16個。

第n層 有2倍(n-1)層的個數。

但是不知道這棵樹是不是滿二叉樹,所以要計算第幾層,有個公式(看圖)將700帶入,得到n層,然後計算n-1層有多少個節點,700減去得到的節點數,就是葉子節點了。。。

16樓:匿名使用者

算算最下層應該有多少個結點?

17樓:匿名使用者

餓,解釋下吧這樣的。

首先完全2叉樹是h層的節點總數為2的h次方-1;

因此700個是 在。

2的9次方和2的10次方之間。

所以在前9層是滿的;

設第9層的非雙親節點為x;

那麼可以知道。

第9層的雙親節點為256-x;

因此第十層的為2(256-x)或者為2(256-x)-1;

全部加起來。

511+2(256-x)-1=700//前9層和第10層之和得到是x=161;

總的葉子節點為 161+2(256-161)-1=350;//第9層和第十層的的和。

18樓:

完全二叉樹的節點和他的深度h有關,深度為h的完全二叉樹有2的h次方減一個節點,最後一行的節點數應該是2的h-1次方個,(700+1)/2在取整就是350了。

19樓:匿名使用者

通用演算法:

設n為總節點數,n0是度為0的結點總數,n1是度為1的結點總數,n2是度為2的結點總數,二叉樹中只有這三種度的節點。所以n=n0+n1+n2。

又由二叉樹的性質可知:n0=n2+1,即:n2=n0-1,帶入上式有:n=2*n0+n1-1

而根據完全二叉樹的定義,可以知道n1只可能是0或1;當總節點數為偶數時,n1=1,當總結點數為奇數時,n1=0。

因為總結點數為700為偶數,所以n1=1。帶入到n=2*n0+n1-1有n0=n/2=350。

度為0的節點即葉子節點,所以葉子節點數為350。

c語言問題

20樓:匿名使用者

首先說明一下,unsigned short佔用2個位元組,long在32位系統中佔用4個位元組;

我們對於指標進行操作時,指標移動的步長和它的型別是有關的,舉例如下:

如果指標p的型別是char* ,那麼p+1,就表示p向後挪動1個位元組;如果指標p是unsigned short* ,那麼p+1就表示p向後挪動2個位元組;如果指標p是long* ,那麼p+1就表示p向後挪動4個位元組;

現在來看你的題,本來myarray+2,其實是向後移動4個位元組,指向4這個元素;但是被轉化為long*後,它就往後移動了8個位元組,指向了0x1284,這是對這個指標進行取值,它的結果應該是。

0x00051284;然後再做型別的強制轉換,從long轉到char,截斷高3位,所以得出結果為0x84

21樓:網友

值是4(long*)是型別轉換。

第三個不清楚自己去試一下吧。

22樓:天上的一條龍

非0數的邏輯值為1

-5為1!8為0

所以-5&&!8為0

23樓:

'a''\101' -101是八進位制,表示字元'a'。

'\\轉義符,表示\。

'x41' -41是16進位制,表示字元'a'。

'' 表示回車符。

這面這些叫字元常量。

char a,b,c='2'; 定義三個字元變數,名稱分別為a,b,c,其中c被賦值為'2'。

24樓:匿名使用者

樓主,其實這個很簡單。字元常量就是不變的字元,比如說'a','b','c'..而字元變數就是可以指向不同字元的變數,比如 char d,當d=『a』時d就代表了'a',當d='b'時d就代表了'b',變數就像一個碗,可以裝相應的常量。

25樓:姜雯韓旭

字元常量就是單個字元,不給他賦值。例如:a

字元變數就是對字元賦值。例如:int a=1 這個時候 a 就是字元變數。

26樓:帥得有點壞

字元常量是用單引號括起來的一個字元。

有兩種表示方法: 一種是用該字元的圖形符號,如'b' ,y','

另外還可以用字元的ascii碼錶示,即用反斜符(\)開頭,後跟字元的ascii碼,這種方法也稱為轉義序列表示法,具體方法是:有兩種形式: 一種是用字元的八進位制ascii碼,表示為:\odd.這裡,ddd是八進位制值(o可以省略)。

另一種使用字元的十六進位制ascii碼值,表示為 \0xhh或0xhh 這裡hh是兩位十六進位制值。 如:'a' ,101' 和 'x41'都表示同一個字元常量。

轉義序列表示法還可以用來表示一些特殊字元,用來顯示特殊符號或控制輸出格式。

在c語言中,字元常量有以下特點:

1) 字元常量只能用單引號括起來,不能用雙引號或其它括號。

2) 字元常量只能是單個字元,不能是字串。

3) 字元可以是字符集中任意字元。但數字被定義為字元型之後就不能參與數值運算。如'5'和5 是不同的。'5'是字元常量,不能參與運算。

字元變數是存放字元常量的變數,其取值是字元常量,即單個字元。

字元變數的型別說明符是char。

定義形式: char 識別符號1,識別符號2,… 識別符號n

例如: char c1, c2, c3, ch ; c1=『a』 ;c2=『b』 ;c3=『c』 ;ch=『 d』 ;

說明: 1.字元變數在記憶體中佔一個位元組。

2.在記憶體中,是把字元對應的ascii碼值放到儲存單元中。

3.字元型資料與整型資料之間可以通用。

每個字元變數被分配一個位元組的的記憶體空間,因此只能存放一個字元。字元值是以ascⅱ碼的形式存放在變數的記憶體單元之中的。如x的十進位制ascⅱ是120,y的十進位制ascⅱ是121。

對字元變數a,b賦予'x'和'y'值:a='x';b='y';實際上是在a,b兩個單元記憶體放120和121的二進位制**: a 01111000 b 01111001 所以也可以把它們看成是整形變數。

c語言允許對整形變數賦予字元值,也允許對字元變數賦整形值。在輸出時,允許把字元變數按整形量輸出,也允許把整形量按字元量輸出。整形量為二位元組量,字元量為單位元組量,當整形量按字元量處理時,只有低八位位元組參與處理。

不懂還可以問我。

C語言的問題C語言問題C語言問題

若有說明語句double p,a 則能通過scanf語句正確給輸入項讀入資料的程式段是 解 p a 將a的地址賦值給p,scanf lf p 從鍵盤獲取一個數值賦值給地址p指向的變數 所以選d 有函式fun的定義形式如下。int fun float f 則以下對函式fun的呼叫語句中,不正確的是 a...

C語言問題,c語言問題?

一 c語言規定總是從main 開始執行的 這個函式也叫 主函式 因此,你發來的題目中的 1 6 8 敘述都是錯誤的,都應該選擇f。二 第2題中,c語言對其資料在記憶體中所佔用的實際位元組數,隨著程式中宣告的資料型別以及資料的多少而變化,c語言本身並沒有明確規定。這題應該選f。三 第3題,c語言中強制...

C語言問題,c語言問題?

你這個程式是捕捉0到9的按鍵狀態,按下再鬆開時才會記錄,想要識別所有按鍵,把for迴圈範圍擴大。比如for charch 32 ch 127 ch 這樣就包含了特殊符號及大小寫字母還有數字。但是,這個 是有問題的!一 你這個 需在鍵位已經按下後啟動才能識別,否則啟動時沒有按下對應鍵位,程式就結束了。...