2015年计算机二级考试C语言模拟试题(四)附答案

来源:文书网 6.59K

  一、单项选择题

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]>‘’;j+=2)

s=10*s+p[i][j]-‘0’;

printf(“%dn”,s);

}

该程序的输出结果是( C )。

A) 69825

B 63825

C) 6385

D) 693825

28.若有以下定义和语句:

char *s1=“12345”,*s2=“1234”;

printf(“%dn”, strlen(strcpy (s1, s2)));

则输出结果是( A )。

A) 4

B) 5

C) 9

D) 10

29.下面程序的输出结果是( C )。

main( )

{char *s=“121”;

int k=0, a=0, b=0;

do

{k++;

if(k%2= =0) {a=a+s[k]-‘0’; continue;}

b=b+s[k]-‘0’; a=a+s[k]-‘0’;

}

while(s[k+1]);

printf(“k=%d a=%d b=%dn”, k, a, B);

}

A) k=3 a=2 b=3

B) k=3 a=3 b=2

C) k=2 a=3 b=2

D) k=2 a=2 b=3

30.若有以下的定义:

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

则值为3的表达式是( A )。

A) p+=2,*(p++)

B) p+=2,*++p

C) p+=3,*p++

D) p+=2,++*p

31.以下程序的输出结果是( A )。

#include

sub1(char a, char B) {char c; c=a; a=b; b=c;}

sub2(char *a, char B) {char c; c=*a; *a=b; b=c;}

sub3(char *a, char *B) {char c; c=*a; *a=*b; *b=c;}

main()

{char a, b;

a=‘A’; b=‘B’; sub3 (&a, &B); putchar(a); putchar(B);

a=‘A’; b=‘B’; sub2 (&a, B); putchar(a); putchar(B);

a=‘A’; b=‘B’; sub1 (a, B); putchar(a); putchar(B);

}

A) BABBAB

B) ABBBBA

C) BABABA

D) BAABBA

32.设p1和p2是指向同一个int型一维数组的指针变量,k为int型变量,则不能正确执行的语句是( B )。

A) k=*p1+*p2;

B) p2=k;

C) p1=p2;

D) k=*p1*(*p2);

33.设有如下定义:

int arr[ ]={6, 7, 8, 9, 10}; int *ptr;

则下列程序段的'输出结果是( D )。

ptr=arr;

*(ptr+2)+=2;

printf(“%d, %dn”, *ptr, *(ptr+2));

A) 8,10

B) 6,8

C) 7,9

D) 6,10

34.以下程序的输出结果是( D )。

main()

{char a[ ]=“programming”, b[ ]= “language”;

char *p1, *p2;

int i;

p1=a; p2=b;

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

if(*(p1+i)= =*(p2+i)) printf(“%c”, *(p1+i));

}

A) gm

B) rg

C) or

D) ga

35.以下程序运行后,输出结果是( C )。

main()

{char *s=“abcde”;

s+=2;

printf(“%ldn”, s);

}

A) cde

B) 字符c的ASCII码值

C) 字符c的地址

D) 出错

36.以下程序运行后,如果从键盘上输入ABCDE<回车>,则输出结果为( D )。

#include

#include

func(char str[ ])

{int num=0;

while(*(str+num)!=’’) num++;

return(num);

}

main()

{char str[10], *p=str;

gets (p);

printf(“%dn”, func (p));

}

A) 8

B) 7

C) 6

D) 5

热门标签