程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C >> C語言問答 >> C語言題目(詳解)

C語言題目(詳解)

編輯:C語言問答

C語言題目(詳解)

150

1.        下列數組定義中錯誤的是(b )。

A)int x[ ][3]={0};

B)int x[2][3]={{l,2},{3,4},{5,6}};

C)int x[ ][3]={{l,2,3},{4,5,6}};

D)int x[2][3]={l,2,3,4,5,6};

 

2.        下列4 個程序中,完全正確的是(b )。

A)#include <stdio.h>         B)#include <stdio.h>

main( );                       main( )

{/*programming*/              {/* / programming / */

printf("programming! \n");}        printf("programming!\n");}

C)#include <stdio.h>          D)include <stdio.h>

main( )                          main( )

{/* / programming*/ */             { /*programming */

printf("programming! \n");}          printf("programming! \n");}

 

3.        若有定義:float x=1.5;int a=1,b=3,c=2;則正確的switch 語句是(c )。

A)switch(x)                   B)switch((int)x);

{   case 1.0: printf("*\ n");        {   case 1:  printf("*\n");

case 2.0: printf("**\ n");           case 2:  printf("**\n");

}                              }

C)switch(a+b)                 D)switch(a+b)

{  case 1: printf("*\n");          {   case 1:  printf("* \n");

case 2+1: printf("** \n");          case c:  printf("** \n");

}                             }

 

4.        若各選項中所用變量已正確定義,fun()函數中通過return 語句返回一個函數值,下列

選項中錯誤的程序是(a )。

A)main( )                  B)float fun(int a,int b){……}

{…… x =fun(2,10); ……}           main( )

float fun(int a,int b) {……}         {…… x =fun(i,j); ……}

C)float fun(int,int);          D)main( )

main( )                         {float fun(int I,int j);

{…… x =fun(2,10); ……}             ……x =fun(i,j); ……}

float fun(int a,int b) {……}          float fun(int a,int b) {……}

 

5.        要求通過while 循環不斷讀入字符,當讀入字母N 時結束循環。若變量已正確定義,

下列正確的程序段是(a )。

A)while( (ch=getchar( ))! ='N')  printf("%c",ch);

B)while(ch=getchar( )! ='N')  printf("%c",ch);

C)while(ch=getchar( )= ='N')  printf("%c",ch);

D)while((ch=getchar( ))= ='N')  printf("%c",ch);

 

6.        已定義下列函數:

int fun(int *p)

{ return *p; }

fun 函數返回值是(b )。

A)不確定的值                 B)一個整數

C)形參p 中存放的值          D)形參p 的地址值

 

7.        若有說明語句:double *p,a;則能通過scanf 語句正確給輸入項讀入數據的程序段是

(d )。

A)*p =&a; scanf("%1f",p);          B)*p =&a; scanf("%f",p);

C)p =&a; scanf("%1f",*p);          D)p =&a; scanf("%1f",p);

 

8.        有下列程序段

struct st

{  int x;int *y; } *pt;

int a[ ]={l,2},b[ ]={3,4};

struct st c[2] = {10,a,20,b};

pt=c;

下列選項中表達式的值為11 的是(c )。

A)*pt− >y           B)pt− >x

C)+ +pt− >x         D)(pt+ +)->x

 

9.        設有下列定義和語句

char str[20]="Program",*p;

p=str;

則下列敘述中正確的是(a )。

A)*p 與str[0]的值相等

B)str 與p 的類型完全相同

C)str 數組長度和p 所指向的字符串長度相等

D)數組str 中存放的內容和指針變量p 中存放的內容相同

 

補充:會重謝的 高手們

最佳回答:

樓主您好!

您這份題目都是比較基礎,但是比較注重細節。

一下是個人對這份題目的解析。

 

第一題: B
這是一個很典型的數組越界問題,數組越界就是指沒有那沒多元素,卻使用或者訪問沒有的元素。

 

 

第二題:B
可以說這是一個完全沒有什麼切實意義的題目.選擇A main函數後面不應該有分號,加上分號變成了 main{} 這樣!表示mian函數裡無內容。

選項C:注釋的格式錯了! C語言多行注釋 格式/* something */

選項D:包含頭文件缺少了預處理標識符 “#”

 

 

 

第三題:C
選擇A中switch(x),其中x 必須是整形。而該選項中x為float,所以錯誤
選擇B中switch((int)x),雖然對x進行了強制類型轉換,但是在switch後錯誤的寫一個分號。
選擇D:在case 子句中,是不可以使用變量作為case 分支表示,其中子句 case c,c為一個int 變量

其中選擇C中case 2+1;由於是兩個常量編譯器可以進行常量運算優化,即編譯後直接運算成case 3,所以這個選擇是正確的;

 

 

 

第四題:A
因為在調用函數fun 強沒有定義或者聲明編譯器將會提示fun 未定義。

 

 

 

第五題:D
這個糾結的題目,不必多解釋。注意括號的匹配。

 

 

 

第六題:C
這本來就是一個無錯的函數,由於格式比較怪異,很容易誤解,形參*p,意思以後的p代表一個內存地址,也就是形參的地址,之後return *p,表示去除在p中地址的值,也就是形參的值。

 

 

 

第七題:D
首先要明確
p:表示地址
*p:表示地址裡面的值

a:變量
&a:變量a的地址

選擇A:*p是一個值 &a是一個地址 不能使用 “=” 號 賦值。
選擇B,C都是同類錯誤。

 

 

 

第八題:C
首先 pt 是一個指針
pt = c 等同 pt = &c[0];

運算符優先級關系 C選項等同 ++(pt->x);

 

 

 

第九題:A
在數組和指針的賦值中,要是不指定數組下標[0]的地址,也就是數組的首地址。也就是說
p=str 等同 p=&str[0]

 

LZ,其實書本上的這些東西,其實挺糾結的,很多東西在現實使用中都不會出現,比如那個++pt->x

在現實裡 我們會寫成++(pt->x)不過還是要理解的!加油哦····

 

只是有的時候不要特執著~去搗鼓(I++) + (I++) + (I++)這樣的題目就好!

 

希望樓主滿意!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved