c語言的選擇題,幫忙解釋一下答案,謝謝

2021-05-04 18:26:52 字數 6124 閱讀 6571

1樓:匿名使用者

1. 緩衝區中輸入「2473」

while第一次迴圈:c=2,執行case 0;因為沒有break,所以順序執行case 1: putchar(c+4);【輸出6】 仍然沒有break ,繼續執行case 2:

putchar(c+4);break;【輸出6】break跳出本次迴圈;

while第二次迴圈:c=4,執行case 2: putchar(c+4);break;【輸出8】break跳出本次迴圈;

while第三次迴圈:c=7,執行default: putchar(c+2);break;【輸出9】break跳出本次迴圈;

while第四次迴圈:c=3,執行case 1: putchar(c+4);【輸出7】沒有break ,繼續執行case 2:

putchar(c+4);break;【輸出7】break跳出本次迴圈;

本題主重點是switch,case語句中如果case後沒有break語句,則順序執行,直至break跳出。

while迴圈結束,輸出換行符,程式結束,最後顯示的就是668977.

2. 程式的意思是i的初始值為2,如果i的值為0,則輸出i後i-1,直至i不為0,跳出迴圈,程式結束。因為i的初始值就不符合迴圈條件,所以執行次數為0。

本題的重點是for迴圈語句是先判斷執行條件後執行迴圈。

3.程式的意思是i的初始值為0,如果x>8,則輸出x,y後,x=x-1, i=i+1,y=i。

第一次 i=0 , x=10, y=10,

第二次 i=1, x=9, y=1

第三次,x=8,不符合迴圈條件,不執行迴圈體,跳出迴圈。

本題的重點是for迴圈語句的執行順序:首先變數賦初值【第一個分號前的語句】然後判斷迴圈條件【兩個分號中間的語句】如果為假,跳出迴圈,反之執行迴圈體,最後執行第二個分號後的語句,然後重新判斷是否迴圈。

4. x為二維陣列,其值如下:

x[0][0]=9, x[0][1]=8, x[0][2]=7

x[1][0]=6 ,x[1][1]=5, x[1][2]=4

x[2][0]=3, x[2][1]=2, x[2][2]=1

p[0]指向x[1][1]=5,p[1]順序下推,指向x[1][2]=4,p[2]指向x[2][0]=3在迴圈中輸出p[0]和p[2]

結果為5,3

本題關鍵在於在c語言中二維陣列的值是按行連續存放的,而指標陣列如果只給p[0]賦值。其他沒有具體賦值,那麼指標p[i]指向的地址是p[0]+指標型別所佔的空間數×i,本題中陣列和指標都為int,所以p[i]中i每加1就相當於沿陣列行移動一個

2樓:任我行

第一題:

c=getchar()表示計算機獲得一個輸入的字元並把它賦給int型的c(在1~256之間int和char可以相互賦值).首先接收字元2,把2賦給c,while(c=getchar())!='\n')表示只要輸入的字元不是enter鍵就執行while裡面的迴圈體。

switch(c-『2』)

的執行過程是這樣的:首先計算『c'-2的值,只要該值與下面的那個case 後的表示式相同就執行其後的語句,比如說讀入的第一個字元2,2-2=0,此時執行case 0 後面的語句,而case 0與case 1後面的語句是同一個語句,所以執行 putchar(c+4);輸出6,由於

case 1: putchar(c+4);後面沒有break;語句,所以繼續執行其後語句,直到遇到break語句或執行完所有語句為止,為此第二個也輸出6,因為case 2後有break語句,所以結束第一次迴圈,之後輸入的473的原理也是這樣的。

第二題:

for迴圈的一般形式是for(表示式1;表示式2;表示式3){迴圈體}表示式1相當於賦初值,其作用只有一次,而表示式2是判斷條件,只要表示式2不為0就執行迴圈體,執行完迴圈體後在執行表示式3,這是一個完整的迴圈,接著又判斷表示式2的值是否為零,不為零,又執行迴圈體,......

因為此題中i=2不等於0,所以表示式2 的值為0;因此一次也不執行。

第三題:

參閱第二題解析。

第四題:

*p=&x[1][1];表示把元素5的地址賦給了指標p;

for(i=0;i<4;i+=2)printf("%d ",p[i]);

第一次,i=0;輸出p[1][1],第二次i=2,此時使p向後移動兩個元素,因此輸出3

3樓:胖子逗逗

1、輸入:2 c=2 c-'2'=』0『 輸出執行:case 0:

case 1: putchar(c+4);

case 2: putchar(c+4);break;

即遇到break為止。

輸入: 4 c=4 c-'2'=』2『 輸出執行: case 2: putchar(c+4);break;

輸入: 7 c=7 c-'2'=』5『 輸出執行: default: putchar(c+2);break;

輸入: 3 c=3 c-'2'=』1『 輸出執行: case 1: putchar(c+4);

case 2: putchar(c+4);break;

即:66 8 9 77

2、for(x;y;z)迴圈執行x,再判斷是否滿足y條件,滿足則迴圈執行一次,再執行z;再判斷y是否成立,直到y不成立了,迴圈結束。 這一題一開始i=2,不滿足i= =0,所以就一次都不執行了。

3、 第一次迴圈: i=0,x=10,x>8,輸出10 10 後,x=9,y=1,i=1

第二次迴圈: i=1,x=9,x>8,輸出 9 1 後,x=8,y=2,i=2

第三次迴圈: i=2,x=8,x>8不成立,迴圈結束。

注:對於y=x++和z=++x,應遵循:前變後不變,自身都改變。即x=2時,y=x=2,x=3 ; x=3;z=x=3

4、p[0]=x[1][1]=5 p[2]=x[2][0]=3

具體有: x[0][0]=9, x[0][1]=8, x[0][2]=7

x[1][0]=6 ,x[1][1]=5, x[1][2]=4

x[2][0]=3, x[2][1]=2, x[2][2]=1

p[0]=a[1][1], p[1]=x[1][2], p[2]=x[2][0], 以此類推

4樓:匿名使用者

第一道題:

緩衝區裡輸入2437

while迴圈一次讀出~

第一次讀出『2』

『2』-』2『 = 0;執行switch裡面語句得出66第二次讀出4

』4『-』2『 = 2 執行switch語句讀出8;

依次執行下去得出結果

第二題 i=2 。 i==0 因為2!=0 所以返回假 不執行迴圈 0次~

第三題第一次x--,y 得出 10,10 以後x--程式設計9 y進入迴圈執行得1 在列印一次得到9,1

第四題 *p = &x[1][1] 表明p指向1 執行兩次 第一次執行p[0]也就是他的首地址p[1][1] 得到5

第二次p[2]就是p+2 後兩個元素 也就是3~

5樓:

第一題:當輸入的不是回車時執行switch程式

c='2' c-'2'=0 從case 0開始執行到case 2:後的break語句 此時c='2'+4='6',輸出字元6

連續兩次輸出'6'

再讀入c='4', '4'-'2'=2,從case 2開始執行到後的break語句中止 此時c='4'+4='8',輸出字元8

接著讀入c='7','7'-'2'=5,後面沒有相應的序號,所以執行default 輸出字元9

再讀入c='3', '3'-'2'=1,從case 0開始執行直到case 2後的break為此,即輸出兩個字元7

最後讀入回車,迴圈結束

所以答案是668977

第二題:因為2==0為假,不成立,邏輯值為0,不迴圈,所以為0

c語言選擇題(3道題),幫忙解答一下,謝謝!

6樓:匿名使用者

1、int a=1,b=10;

dowhile (b- -<0);

do迴圈執行了一次,b執行了兩次,第一次b=b-a,b變成了9,b=9>0,迴圈結束,執行b--,b=8;

2、結果應為-1,答案是錯的,或者你拉掉了,因為無論上面執行了什麼,都會執行倒數第二行: y=-1; 最後輸入必為-1;

3、c語言中,sqrt()函式原型為double sqrt(double),所以上題為c,當然vc2008後函式有過載,需要指定型別。

7樓:匿名使用者

第一題:迴圈執行一次,b-=a; a++; 此時b=9,a=1,a++之後,a=2,b=8了

第2題 :因為a

3. 18/4*sqrt(4.0)/8開方後進行運算要進行資料轉換

8樓:匿名使用者

1、第一次迴圈後就退出了迴圈。

b = 10 - 1 = 9 --> b-- --> b = 82、答案是d,除非你抄漏了標點。

就 y=-1;

printf("%d",y);

這兩句有用,其他的都是障眼法。

3、這個無所謂吧,想是什麼型別都可以。有xx特色的題目了。

9樓:匿名使用者

1、do while迴圈先執行一次do,執行後b=9,再執行while語句中的b--,得到b=8.

2、這種題目只要遵循else和最近的if匹配是很簡單的,你可以把程式省略的else或if給添上。、

3、這個可以完全遵循數**算,因為sqrt執行完後是double型的,所以結果是double型的

c語言程式選擇題!請大家幫忙解一下,謝謝了!

10樓:匿名使用者

1、main()函式可以帶兩個形參,一般分為argc和argv,其中argv可以定

義為__【b】_.

a、int argv b、char*argv c、char argv d、char**argv

2、將一個整數10002存在磁碟上,以ascii碼形式儲存和以二進位制形式儲存,佔用的位元組數分別是_【c】__.

a、2和2 b、2和5 c、5和2 d、5和5 (第二題和第三題的可選答案錄入反了)

3、設有定義語句:enum t1 time;則列舉常量a2和a3的值分別為__【d】_.

a、1和2 b、2和3 c、7和2 d、7和8(第二題和第三題的可選答案錄入反了)

4、設int i;float f;double d;long int ;則表示式10+『a』+i*f-d/e結果的型別是_【a】__.

a、double b、long c、int d、float

5、設int m1=5,m2=3;表示式m1>m2?(m1=1):(m2=-1)運算後,m1和m2的值分別是_【b】_.

a、1和-1 b、1和3 c、5和-1 d、5和3

6、下列表示式的值為0的是_【c】__.

a、3%5 b、3/5.0 c、3/5 d、3<5

7、設int a=3;則表示式a<1&&--a>1 的運算結果和a的值分別是_【b】__.

a、0和2 b、0和3 c、1和2 d、1和3

8、下列保留字中用於構成迴圈結構的是_【b】__.

a、if b、while c、switch d、default

9、設int a[4]=;則陣列a的第一維的大小是_【b】__.

a、2 b、3 c、4 d、無確定值

10、設int a=0,b=0,m=0,n=0;則執行(m=a==b)||(n=b==a)後m和n的值分別是_【c】_.

a、0和0 b、0和1 c、1和0 d、1和1

11、在函式內,定義變數時儲存型別符可省略的是_【a】___.

a、auto b、static c、extern d、register

12、c語言程式編繹時,程式中的註釋部分_【d】__.

a、參加編繹,並會出現在目標程式中 b、參加編繹,但不會出現在目標程式中

c、不參加編繹, 但會出現在目標程式中 d、不參加編繹,也不會出現在目標程式中

13、設char x='a';則printf("x=%c,y=%c\n",x,97);的輸出是_【d】__.

a、x=a,y=97 b、x=97,y=a c、x=97,y=97 d、x=a,y=a

選擇題一道。請解釋一下,選擇題 日語 一道。請解釋一下。

a 原形是 意思是 有,在 b原形是 決 意思是 決定 c原形是 意思是 根據 從 來看 d原形是 意思是 做 幹 答案選c。選擇理由 符合語境和意思。翻譯句子 未成年人吸菸根據有關法律是被禁止的。從法律上來看是被禁止的 a原形是 是有的意思 b原形是 決 是決定的意思c原形是 意思是根據,按照,依...

高數的選擇題,給我解釋一下D選項,謝謝

d選項當x 0,時成立 比較大小性質 相同的積分割槽間,被積函式大的積分值大 請問一下這題的為什麼d不對呢,高等數學的一道題目,麻煩解答 謝謝 這個題是用定義 這個題使用定義來解答。g x 是f x 的一個原函式,用我寫的這個性質來解題。f x 在區間可積分,所以g x 在區間連續,所以無間斷點。原...

c語言選擇題,大佬們能解釋下這個為什麼選A嗎?謝謝

就是選a啊,空格處要按照8進位制升一階,同時把新輸入的一位作為最低位加進來,所以是 n n 8 s j 1 0 b錯在陣列下標不對,而且也忘了把ascii字元轉換為數字 c錯在最後減掉的是0,根本沒有把ascii字元轉換過來 d綜合了bc的錯處,錯到爺爺輩去了 好好學習天天向上 你把switch語句...