當前位置:才華齋>計算機>計算機二級>

2015年計算機二級考試C語言模擬試題(四)附答案

計算機二級 閱讀(5.63K)

  一、單項選擇題

2015年計算機二級考試C語言模擬試題(四)附答案

1.以下說法中正確的是( D )。

A) #define和printf都是C語句

B) #define是C語句,而printf不是

C) printf是C語句,但#define不是

D) #define和printf都不是C語句

2.以下程式的輸出結果是( C )。

#define f(x) x*x

main( )

{int a=6, b=2, c;

c=f(a)/f(

B);

printf("%dn", c);

}

A) 9

B) 6

C) 36

D) 18

3.下列程式執行後的輸出結果是( B )。

#define MA(x) x*(x-1)

main( )

{int a=1, b=2; printf("%dn", MA(1+a+

B));}

A) 6

B) 8

C) 10

D) 12

4.以下程式的輸出結果是( D )。

#define M(x, y, z) x*y+z

main( )

{int a=1, b=2, c=3;

printf("%dn", M(a+b, b+c, c+a));

}

A) 19

B) 17

C) 15

D) 12

5.以下程式的輸出結果是( B )。

#define SQR(X) X*X

main( )

{int a=16, k=2, m=1;

a/=SQR(k+m)/SQR(k+m);

printf("%dn", a);

}

A) 16

B) 2

C) 9

D) 1

6.有如下程式:

#define N 2

#define M N+1

#define NUM 2*M+1

main( )

{int i;

for(i=1; i<=NUM; i++) printf(“%dn”, i);

}《 M=3,NUM=6》

該程式中的for迴圈執行的次數是( B )。

A) 5

B) 6

C) 7

D) 8

7.以下程式的輸出結果是( C )。

#include

#define MIN(x, y) (x)< (y)?(x):(y)

main( )

{int a, b, c;

a=20;b=10;

c=5*MIN(a, B);

printf(“%dn”, c);

}

A) 20

B) 200

C) 10

D) 50

8.在下列敘述中,正確的是( C )。

A) 下面的程式有一個整型輸出值:

main( )

{int a;

a=pp( );

printf(“%d”,a);

}

void pp( )

{ … }

B) 以下程式的執行結果為1,3,5,7

main( )

{static int a[4]={1,3,5,7};

printf(“%d,%d,%d,%dn”,a);

}

C) 以下兩個語句是等價的

for(;(c=getchar( ))!=‘n’;printf(“%cn”, c));

for(;(c=getchar( ))!=‘n’;) printf(“%cn”, c);

D) 以下程式中的PRINT()是一個函式

#define PRINT(V) printf(“V=%dt”, V)

main( )

{int a,b;

a=1;

b=2;

PRINT(a);

PRINT(B);

}

9.在下列#include命令中,正確的一條是( D )。

A) #include[string.h]

B) #include{math.h}

C) #include(stdio.h)

D) #include

10.巨集定義#define PI 3.1415926的作用是:指定用識別符號PI來代替一個( B )。

A) 單精度數

B) 字串

C) 雙精度數

D) 整數

11.如果在使用者的程式中要使用C庫函式中的數學函式時,應在該原始檔中使用的include命令是( B )。

A) #include

B) #include

C) #include

D) #include

12.若輸入60和13,以下程式的輸出結果是( D )。

#define SURPLUS(a,B) ((a)%(B))

main( )

{int a,b;

scanf(“%d,%d”,&a,&B);

printf(“%dn”,SURPLUS(a,B));

}

A) 60

B) 13

C) 73

D) 8

13.如果檔案1包含檔案2,檔案2中要用到檔案3的內容,而檔案3中要用到檔案4的內容,則可在檔案1中用三個#include命令分別包含檔案2、檔案3和檔案4。在下列關於這幾個檔案包含順序的敘述中,正確的一條是( A )。

A) 檔案4應出現在檔案3之前,檔案3應出現在檔案2之前

B) 檔案2應出現在檔案3之前,檔案3應出現在檔案4之前

C) 檔案3應出現在檔案2之前,檔案2應出現在檔案4之前

D) 出現的先後順序可以任意

14.在下面四個程式中,輸出結果與其它三個不同的是( C )。

A) #define MAX(a,B) ((a)>(B)?(a):(B))

main( )

{int a,b,c;

scanf(“%d,%d,%d”,&a,&b,&c);

printf(“%dn”,MAX(MAX(a,B),c));

}

B) main( )

{int a,b,c;

scanf(“%d,%d,%d”,&a,&b,&c);

printf(“%dn”,max(a,b,c));

}

max(int x,int y,int z)

{int t;

t=(x>y?x:y);

return(t>z?t:z);

}

C) main( )

{int a,b,c,max;

scanf(“%d,%d,%d”,&a,&b,&c);

if(a>b>c) max=a;

if(b>c>a) max=b;

if(c>a>B) max=c;

printf(“%dn”,max);

}

D) main( )

{int a,b,c,max;

scanf(“%d,%d,%d”,&a,&b,&c);

max=a>b?a:b;

if(c>max) max=c;

printf(“%dn”,max);

}

15.以下for語句構成的迴圈執行了( C )次。

#define N 2

#define M N+1

#define NUM (M+1)*M/2

main( )

{int i, n=0;

for(i=1; i<=NUM; i++)

{n++;

printf(“%d”, n);

}

printf(“n”);

}

A) 4

B) 6

C) 8

D) 9

16.以下程式的輸出結果是( B )。

#include

#define FUDGE(y) 2.84+y

#define PR(a) printf(“%d”, (int)(a))

#define PRINT1(a) PR(a); putchar(‘n’)

main( )

{int x=2;

PRINT1(FUDGE(5)*x);

}

A) 11

B) 12

C) 13

D) 15

17.以下程式的輸出結果是( A )。

#define SUB(x, y) (x)*y

main( )

{int a=3, b=4;

printf(“%dn”, SUB(a++, b++));

}

A) 12

B) 15

C) 16

D) 20

18.設有以下巨集定義:

#define N 3

#define Y(n) ((N+1)*n)

則執行語句:z=2*(N+Y(5+1));後,z的值為( C )。

A) 出錯

B) 42

C) 48

D) 54

19.下列程式的輸出結果是( C )。

main()

{char a[10]={9,8,7,6,5,4,3,2,1,0},*p=a+5;

printf("%d",*--p);

}

A) 非法

B) a[4]的地址

C) 5

D) 3

20.下列程式的執行結果是( B )。

void fun(int *a, int *B)

{int *k;

k=a; a=b; b=k;

}

main()

{int a=3, b=6, *x=&a, *y=&b;

fun(x, y);

printf("%d %d", a, B);

}

A) 6 3

B) 3 6

C) 編譯出錯

D) 0 0

21.下面程式的輸出結果是( C )。

main()

{int a[ ]={1,2,3,4,5,6,7,8,9,0},*p;

p=a;

printf("%dn",*p+9);

}

A) 0

B) 1

C) 10

D) 9

22.假定以下程式經編譯和連線後生成可執行檔案PROG . EXE,如果在此可執行檔案所在目錄的DOS提示符下鍵入:PROG ABCD EFGH IJKL<回車>,則輸出結果為( D )。

main( int argc, char *argv[ ])

{while(--argc>0) printf("%s", argv[argc]);

printf("n");

}

A) ABCDEFGH

B) IJHL

C) ABCDEFGHIJKL

D) IJKLEFGHABCD

23.對於基型別相同的兩個指標變數之間,不能進行的運算是( C )。

A) <

B) =

C) +

D) -

24.有以下函式:

char * fun (char *p)

{return p;}

該函式的返回值是( B )。

A) 無確切的值 B) 形參p中存放的地址值

C) 一個臨時儲存單元的地址

D) 形參p自身的地址值

25.若有以下說明和定義

fun(int *C){…}

main()

{int (*a)()=fun,*b(),w[10],c;

}

在必要的賦值之後,對fun函式的正確呼叫語句是( B )。

A) a=a(w);

B) (*a)(&C);

C) b=*b(w);

D) fun (B);

26.有如下說明

int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;

則數值為9的表示式是( B )。

A) *p+9

B) *(p+8)

C) *p+=9

D) p+8

27.有如下程式:

main()

{char ch[2][5]={“6937”,“8254”},*p[2];

int i,j,s=0;

for(i=0;i<2;i++) p[i]=ch[i];

for(i=0;i<2;i++)

for(j=0;p[i][j]>‘