c語言,下面語句合法的是,以下合法的C語言賦值語句是? A a b 58 B k int(a b) C a 58,b 58

2022-12-19 18:11:21 字數 5337 閱讀 9716

1樓:霍工

a正確。p和a都可以看成是地址變數。

b。因為p是指標變數,相當於開頭的地址變數,而a[5]是普通變數,兩者相互賦值會出錯。

c。原因同上,地址變數和普通變數不能相互賦值。

d。取地址符&後邊必須是變數,而不能是變數值或表示式。

不可能是d,答案錯了吧。你實際上機測試一下,a是完全正確的,b,c會發出警告,但是能繼續執行。d完全錯誤,根本不能執行。

2樓:司寇博敏懷影

a、c、d是合法的賦值語句

b是錯誤的,因為型別轉換不是這麼寫,應該是這樣:

k=(int)(a+b);

d相當於i=i-1;所以也可以算作賦值操作。

3樓:騎著豬的喬布斯

a正確。

a:正確。p是指標,即數值為一個地址,p的地址等於a的地址再加2。

b:錯誤。p為地址,a[5]是一個常量值。

c:錯誤。與b同理。

d:錯誤。(i+2)為一個常量,不能取地址。

4樓:

a 正確

b、c p是指標,但是a[5]、a[2+2]都是int型的數,error

d、如果p=&i;是可以的,但是這個相當於是p = &3; 3不是變數無法使用&取地址

5樓:比天高_比地厚

ab、c將整型賦給指標

d取臨時變數地址

以下合法的c語言賦值語句是? a.a=b=58 b.k=int(a+b) c.a=58,b=58

6樓:

其實表示式的寫法都是正確的,但作為單一“語句”,最後的分號就必不可少了,只有d的++i;後有分號。不過那個3不知何用。

7樓:

語句應該以分號結尾。因此,d正確,其他錯誤。

8樓:匿名使用者

a、c、d是合法的賦值語句

b是錯誤的,因為型別轉換不是這麼寫,應該是這樣:

k=(int)(a+b);

9樓:匿名使用者

答案可能錯了,我覺得答案應該是a.

顯然b不對,不能那麼定義,c一次給兩個賦值中間用,也不對。d沒有賦值。

10樓:匿名使用者

如果考點真是分號的話

d是對的。

我看怎麼後面有個3,不理解

連續的賦值也是可以的;

以下選項中,合法的c語言賦值語句是

11樓:zyy喲西喲西

題目要求是賦值語句,a,b都沒有分號只是賦值表示式,你看你書上,你寫錯了,c,d都有分號,但c不符合賦值要求,所以選d

12樓:匿名使用者

d是把x+y的值轉換成整數型

13樓:逄吀

c語言賦值右邊只可以是變數,不能出現表示式!自加加和自減減只能是常量,強制性型別轉換表示式(int),int 一定要用括號括起來!a、 b看起來都不錯,但是我覺得四個選項都不對,c語言講究嚴謹,四個選項在最後都沒加分號!

學過都好久啦!這只是憑我的經驗!a選項如果寫成這樣就一定不對啦!

int a=b=58!

打字不易,如滿意,望採納。

以下合法的c語言賦值語句是?a.a=b=58 b.k=int(a+b) c.a=58,b=58 d.--i;3

14樓:滄海雄風

程式執行的時候若是非要保留那個3,後面應該加上一個分號。 寫成,--i;3; 這樣程式執行才能通過。否則,提示有錯誤,丟失分號。 而3;在程式執行中不起任何作用。

15樓:金色潛鳥

合法的c語言賦值語句是 a.

int a,b;

a=b=58;

printf("%d %d\n",a,b); //列印出 58 58

----------

b.k=int(a+b) 改為 k=(int) (a+b); 才對

-----------

c. a=58,b=58 改為 int a=58,b=58; 宣告加初始化才對

-----------

d. --i;3 不是 賦值語句

16樓:匿名使用者

題目應該是 “以下合法的c語言賦值語句不是?”

17樓:匿名使用者

--i;

--是自減運算子

。--i;實際上就是i=i-1;

所以是合法的賦值語句。

a項語法錯誤:不能連續賦值。

b項:強制型別轉換運算子必須用小括號括起來,另題目要求是合法的賦值語句,語句要以分號結束。正確的應該是k=(int)(a+b);

c項:缺少分號。不是語句,只是表示式。

d項:正確。

c語言,語句scanf("7.2f",&a);是一個合法的scanf函式?

18樓:諾諾百科

scanf("%7.2f",&2);

不合法:

%7.2f 可以用 %f 或 %f, 不能加 場定義。(編譯通過,輸入值會錯)

&2錯,因為 2 是常量,這裡必須是變數,而且必須是 float 型。

合法:float z;

scanf("%f",&z);

printf("%7。2f",z);

scanf("%f", &a)如果正常執行,返回值是成功賦值的變數數,即1。

編譯scanf("%f", &a, &b)不會報錯,但是多餘的變數b無法正常得到值,返回值也是1。

scanf("%f,%f", &a, &b)是要求兩個浮點數中間有一個逗號。

函式原型

函式 scanf() 是從標準輸入流stdin(標準輸入裝置,一般指向鍵盤)中讀內容的通用子程式,可以說明的格式讀入多個字元,並儲存在對應地址的變數中。

函式的第一個引數是格式字串,它指定了輸入的格式,並按照格式說明符解析輸入對應位置的資訊並儲存於可變引數列表中對應的指標所指位置。每一個指標要求非空,並且與字串中的格式符一一順次對應。

19樓:

首先,這個語句顯然是有問題的,但是能編譯通過,說明是合法的。那麼我們就需要弄清楚編譯器是怎麼理解這條語句的,以及執行時這條語句做了什麼。

原問題是“c語言,語句scanf("7.2f",&a);是一個合法的scanf函式?”,我猜測這裡"7.

2f"應該問的是"%7.2f",但是也可能就是"7.2f",所以對這兩種情況均進行分析。

網上說“使用scanf函式對實型變數進行賦值時,在格式%f中不得控制小數位的精度,但在printf函式中可以使用,並且經常使用”,因此"%7.2f"用在scanf裡面,肯定是不對的。

問題1:百分號要用"%%"表示,那麼單獨一個"%"有什麼作用呢?

測試1:

#include

#include

int main()

結果:無任何輸出。說明單獨一個"%"是沒有作用的,會被自動忽略。

但是,這個單獨的"%"是否會對後面產生影響呢?

測試2:

#include

int main()

輸出"\\\\\",說明雖然有單獨的"%",但是不會對後面產生影響。

但是進行到這裡,好像不知道再從何入手了,所以我們換一個角度研究。

我們知道:

scanf("%f", &a)如果正常執行,返回值是成功賦值的變數數,即1。

編譯scanf("%f", &a, &b)不會報錯,但是多餘的變數b無法正常得到值,返回值也是1。

scanf("%f,%f", &a, &b)是要求兩個浮點數中間有一個逗號。

問題2:scanf("123")有沒有用?

因為沒有給任何變數賦值,所以看起來這條語句不起任何作用,好像有沒有都一樣,但是下面一個程式就可以證明,這條語句的有無會對執行結果產生影響。

測試3:

輸入為"123"

#include

#include

int main()

執行結果:

有scanf("123")時,輸出:

4294967295  //eof

16  //到達檔案尾

沒有scanf("123")時,輸出:

49  //'1'

0  //沒有到達檔案尾

這時候大概可以猜到了,scanf("123")是有作用的,它的作用是一個字元一個字元地匹配,將緩衝區裡的'1'、'2'、'3'依次讀出來。

這時候我們就可以回答scanf("7.2f", &a)的作用了。如果緩衝區下一個字元是'7',那麼就繼續向後讀'.

'、'2'等。雖然讀出來了,但是不賦給任何一個變數,所以&a是多餘的。不過雖然多餘,但是編譯器不用它就行了,所以對編譯器來說是合法的,最多隻是給出警告。

問題3:編譯器如何理解scanf("%7.2f")

上面的討論給了我們啟示。所以雖然這裡我沒有什麼好的想法,但是因為百分號是多出來的,根據排列組合,編譯器可能有以下幾種理解方式:

a:"%7.2f"作為一個整體,是有作用的字串

b:"%"被忽略,“7.2f”是有作用的字串

c:"%7"被忽略,".2f"是有作用的字串

d:"%7."被忽略,"2f"是有作用的字串

e:"%7.2"被忽略,"f"是有作用的字串

f:"%7.2f"作為一個整體,被編譯器自動忽略

根據上面的討論提供的方法,我們可以逐個測試。

對於**:

#include

#include

int main()

輸入"%7.2f",執行結果:"37\n0\n"

輸入"7.2f",執行結果:"55\n0\n"

輸入".2f",執行結果:"4294967295\n16\n"

輸入"2f",執行結果:"50\n0\n"

輸入"f",執行結果:"102\n0\n"

輸入".2f",執行結果:"4294967295\n16\n",由此可知,上述c是正確答案。

總結:語句scanf("7.2f", &a)是合法的,而且是有實際意義的。它的作用是一個字元一個字元地匹配,將緩衝區裡的'7'、'.'、'2'、'f'依次讀出來。

語句scanf("%7.2f", &a)也是合法的,而且也是有實際意義的。其中"%7.

2f"相當於".2f",它的作用是一個字元一個字元地匹配,將緩衝區裡的'.'、'2'、'f'依次讀出來。

上述兩條語句中,&a都是合法的,但是是沒有作用的。

p.s.:c語言有平臺差異,不同平臺執行結果可能不一樣。以上。

以下合法的c語言賦值語句是aab58bkint

程式執行的時候若是非要保留那個3,後面應該加上乙個分號。寫成,i 3 這樣程式執行才能通過。否則,提示有錯誤,丟失分號。而3 在程式執行中不起任何作用。合法的c語言賦值語句是 a.int a,b a b 58 printf d d n a,b 列印出 58 58 b.k int a b 改為 k i...

C語言若變數均己正確定義並賦值,以下合法的C語言賦值語句是A x y

a是正確的,a y 5 先判斷y 5,如果y的值是5,那麼,y 5的值為真,即1,再把1賦值給版x,最後x的值為1,否則,權如果y的值不是5,是x的值為0 b不正確,要求兩邊都是整數 c不正確,x n不能作左值 d不正確,5是常數,不能作左值 a是對的,給x賦值,值為y 5這個式子的值b的錯誤是沒有...

C語言下面程式的執行結果是

x的值是每次來在執行迴圈體源第乙個語句進行賦值的。bai每個if語句都是du先加加,然zhi後再模2,模3,模7。全部條件滿足dao後,才會輸出x。計算的並非是x的原始值,而是計算的三次加加後的x的值。比如輸出28的時候,i的值是25,那麼此時x的值也是25。首先進行第乙個判斷,因為是前加加,所以對...