江苏省高校计算机等级考试命题研究院 江苏省高校计算机等级考试辅导
C考前冲刺练习模拟试题

全国计算机等级考试二级C语言考前冲刺试卷2

一、选择题

1)下列选项中,不是一个算法的基本特征的是(    )。

A)完整性                           B)可行性                           C)有穷性                         D)拥有足够的情报

2)下列数据结构中,属于非线性的是(    )。

A)线性表                           B)队列                               C)树                                 D)栈

3)下列叙述中错误的是(    )。

A)线性表是由n个元素组成的一个有限序列

B)线性表是一种线性结构

C)线性表的所有结点有且仅有一个前件和后件

D)线性表可以是空表

4)按照“先进先出”组织数据的数据结构是(    )。

A)队列                               B)栈                                   C)双向链表                     D)二叉树

5)下列关于线性链表的描述中正确的是(    )。

A)存储空间不一定连续,且各元素的存储顺序是任意的

B)存储空间不一定连续,且前件元素一定存储在后件元素的前面

C)存储空间必须连续,且各前件元素一定存储在后件元素的前面

D)存储空间必须连续,且各元素的存储顺序是任意的

6)某二叉树共有60个叶子结点与50个度为1的结点,则该二叉树中的总结点数为(    )。

A148                                 B169                                 C182                               D198

7)下列数据结构中,能用二分法进行查找的是(    )。

A)顺序存储的有序线性表                                             B)结性链表

C)二叉链表                                                                      D)有序线性链表

8)最简单的交换排序方法是(    )。

A)快速排序                       B)选择排序                       C)堆排序                         D)冒泡排序

9)对于长度为n的线性表,在最坏情况下,下列各种排序法所对应的比较次数中,正确的是(    )。

A)冒泡排序为n /2                                                          B)冒泡排序为n

D)快速排序为n                                                              D)快速排序为nn-1/2

10)结构化程序设计的3种基本结构是(    )。

A)过程、子程序和分程序                                           B)顺序、选择和重复

C)递归、堆栈和队列                                                   D)调用、返回和转移

11)在C语言中,以下说法不正确的是(    )。

A)在C程序中,整数和实数都能被准确无误地表示出来

B)在C程序中,任何一个变量名都代表存储器中的一个位置

C)静态变量的生存期与整个程序的运行期相同

DC语言中,任何变量都必须先声明才能进行引用

12)一个C语言程序是由(    )。

A)一个主程序和若干子程序组成

B)函数组成

C)若干过程组成

D)若干子程序组成

13)以下标识符不是关键字的是(    )。

Abreak                                  Bchar                             CSwitch                         Dreturn

14)下列选项中,不能作为合法常量的是(    )。

A1.234e04                            B1.234e0.4                    C1.234e+4                     D1.234e0

15)以下不合法的用户标识符是(    )。

Ar3_t3                                  BElse                             C6a                                D_6

16)下列叙述中正确的是(    )。

A)调用printf()函数时,必须要有输出项

B)使用putchar()函数时,必须在之前包含头文件stdio.h

C)在C语言中,整数可以以十二进制、八进制或十六进制的形式输出

D)调节getchar()函数读入字符时,可以从键盘上输入字符所对应的ASCII

17)执行以下程序段后,w的值为(    )。

int  w='A', x=14, y=15;

w=((x || y)&&(w<'a'));

A-1                                        BNULL                         Cl                                   D0

18)设有定义:“long x=123450L;”,则以下能够正确输出变量x的是(    )。

Aprintf("x=%d\n",x);                                                      Bprintf("x=%id\n",x);

Cprintf("x=%dL\n",x);                                                    Dprintf("x=%ld\n",x);

19已有定义int a=3;和输出语句printf("%8x",a);以下正确的叙述是   

A)整型变量的输出格式符只有%d一种

B%x是格式符的一种,它可以适用于任何一种类型的数据

C%x是格式符的一种,其变量的值按十六进制数输出,但%8x是错误的

D%8x是正确的格式符,其中数字8规定了输出字段的宽度

20若有定义int x,y; 并已正确给变量赋值,则下列选项中与表达式(x-y)?(x++):(y++)中的条件表达式(x-y)等价的是(    )。

A)(x-y>0                                                                   B)(x-y<0

C)(x-y<0||x-y>0                                                     D)(x-y==0

21)若abcd都是int型变量且都已经正确赋初值,则以下不正确的赋值语句是(    )。

Aa+d;                                                                             Ba++;

Ca=b=c=d=100;                                                             Da=(b=3)+(d=5);

22)有以下程序

#define F(X,Y)(X)*(Y)

main()

{ int a=3, b=4;

printf("%d\n", F(a++, b++));

}

程序运行后的输出结果是(    )。

A12                                                                                B15

C16                                                                                 D20

23下面程序的输出结果是(    )。

main()

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

printf("%d\n",*(p+2));}

A3                                                                                  B4

C1                                                                                   D2

24)有以下程序:

#include<stdio.h>

main()

{     int a=6,b=7,m=1;

       switch(a%2)

       {       case 0:m++;break;

                case 1:m++;

                switch(b%2)

                {       defaut:m++;

                         case0:m++;break;

                }

       }

       printf("%d\n",m);

}

程序运行后的输出结果是(    )。

A1                                         B2                                  C3                                  D4

25)有以下程序

#include  <stdio.h>

int fun(int  a,int  b)

{  if(b==0)  return a;

   else      return(fun(--a,--b));

}

main()

{  printf("%d\n", fun(4,2));}

程序的运行结果是(    )。

A1                                         B2                                  C3                                  D4

26)关于字符常量,以下叙述正确的是(    )。

A)空格不是一个字符常量

B)字符常量能包含大于一个的字符

C)单引号中的大写字母和小写字母代表的是相同的字符常量

D)所有的字符常量都可以作为整型量来处理

27)下面函数调用语句含有实参的个数为(    )。

func((exp1,exp2),(exp3,exp4,exp5));

A1                                         B2                                  C3                                  D5

28语句int(*ptr)()的含义是   

Aptr是一个返回值是int的函数

Bptr是指向int型数据的指针变量

Cptr是指向函数的指针,该函数返回一个int型数据

Dptr是一个函数名,该函数的返回值是指向int型数据的指针

29)以下不正确的定义语句是(    )。

Adouble x[5]={1.0,2.0,3.0,4.0,5.0};                               Bint y[5]={0,1,2,3,4,5};

Cchar c1[]={'1', '2', '3', '4', '5'};                                        Dchar c2[]={'a', 'b', 'c'};

30)若有以下定义,则对数组元素的正确引用是(    )。

int a[5],*p=a;

A*&a[5]                                B(*a)+2                         C*p+4                           D*(a+2)

31)下列字符数组初始化语句中不正确的是   

Achar c[]='goodmorning';      Bchar c[20]= "goodmorning";

Cchar c[]={'a','b','c','d'};        Dchar c[]={"goodmorning"};

32)下列程序的运行结果为(    )。

#include<stdio.h>

void abc(char*str)

{     int a,b,i,j;

       for(i=j=0;str[i]!='\0';i++)

       if(str[i]!='a')

       str[j++]=str[i];

       str[j]='\0';

}

void main()

{     char str[]="abcdef";

       abc(str);

       printf("str[]=%s",str);

}

Astr[]=bcdef                                                                    Bstr[]=abcdef

Cstr[]=a                                                                           Dstr[]=ab

33)阅读下面程序,则执行后的结果为(    )。

#include "stdio.h"

main()

{  char *str="abcdefghijklmnopq";

 while(*str++!=′e′);

 printf("%c\n",*str);}

Af                                          Ba                                  Ce                                  Dq

34)设有如下的程序段:

char str[]="HelloWorld";

char*ptr;

ptr=str;

执行上面的程序段后,*(ptr+10)的值为(    )。

A'\0'                                                                                  B'0'

C)不确定的值                                                                  D'0'的地址

35)下述语句中,在字符串s1s2相等时显示“they are Equal”的是(    )。

Aif(*s1==*s2)                                                               Bif(!strcmp(s1,s2))

puts("they are Equal");                                                       puts("they are Equal");

Cif(s1==s2)                                                                    Dif(strcmp(s1,s2))

Puts("they are Equal");                                                       puts("they are Equal");

36)在一个C源程序文件中,要定义一个只允许本源文件中所有函数使用的全局变量,则该变量需要使用的存储类别是(    )。

Aauto                                    Bregister                        Cextern                          Dstatic

37)以下程序的输出结果是(    )。

#include <stdio.h>

void prt (int  *x, int  *y, int  *z)

{printf("%d,%d,%d\n",++*x,++*y,*(z++));}

main()

{int a=10,b=40,c=20;

prt (&a,&b,&c);

prt (&a,&b,&c);}

A11,42,31                                                                       B11,41,20

12,22,41                                                                               12,42,20

C11,21,40                                                                        D11,41,21

11,21,21                                                                               12,42,22

38设有以下说明则不正确的叙述是   

union un

{     int a;

       char b;

       float c;

}arr

Aarr所占的内存长度等于成员c的长度

Barr的地址和它的各成员的地址都是同一地址

Carr可以作为函数参数

D)不能在定义arr时对它初始化

39)若x=4y=5,则x&y的结果是(    )。

A0                                         B4                                  C3                                  D5

40)下列关于C语言数据文件的叙述中正确的是(    )。

A)文件由ASCII码字符序列组成,C语言只能读写文本文件

B)文件由二进制数据序列组成,C语言只能读写二进制文件

C)文件由记录序列组成,可按数据的存放形式分为二进制文件和文本文件

D)文件由数据流形式组成,可按数据的存放形式分为二进制文件和文本文件

 

二、填空题

1)软件生命周期分为软件定义期、软件开发期和软件维护期,详细设计属于___________中的一个阶段。

2)结构化分析方法是面向___________进行分析的方法。

3)常用的软件结构设计工具是结构图(SC),也称程序结构图。其中,用矩形表示___________,用带空心圆的箭头表示传递的是数据。

4在进行模块测试时,要为每个被测试的模块另外设计两类模块:驱动模块和承接模块,其中__________的作用是将测试数据传送给被测试的模块,并显示被测试模块所产生的结果。

5)诊断和改正程序中错误的工作通常称为___________

6)若a=1b=2c=3d=4;则条件表达式a>b ? a : c<d ? c : d的结果为___________

7)若有定义:int x=1y=2float a=3.7b=2.1;则(x+y)%2+(int)a(int)b表达式的值为___________

8)以下程序的运行结果是___________

main()

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

  if(a>b) c=1;

  else if(a==b) c=0;

  else c=-1;

  printf("%d\n",c);}

9)下面程序的运行结果是___________

#include<stdio.h>

main()

{ int a,s,n,m;

a=2;s=0;n=1;m=1;

while(m<=4){n=n*a;  s=s+n; ++m; }

printf("s=%d",s);

}

10)以下程序的功能是:对输入的一行字符中的数字字符的字面值累加,输出此累加和,请填空。

#include<stdio.h>

#include<ctype.h>

main()

{     char c;

int a,s=0;

while(___________)

if(isdigit(c))

{a= c-'0';s+=a;}         

printf("s=%d",s);

}

11)下面程序的输出结果是___________

#include<stdio.h>

main()

{    static char a[]="zhao",b[]="juan";

      char *ptrl=a,*ptr2=b;

      int k;

      for(k=0;k<4;k++)

               if(*(ptrl+k)==*(ptr2+k))

                         printf("%c",*(ptrl+k));}

12)下列函数从字符数组s[]中删除和c一样的字符,请在下面横线处填空。

void delete(s,c)

char s[],c;

{     int i,j;

       for(i=j=0; ___________;i++)

       if(s[i]!='c')

       s[j++]=s[i];

       s[j]="\0";}

13)下面程序的运行结果是___________

#include<stdio.h>

main()

{    char a[80],*p="AbabCDcd";

int i=0,j=0;

while(*p!='\0')

{        if(*p>='a' && *p<='z')

{ a[i]=*p;i++;}

}

a[i]='\0';

puts(a);

}

14)设有下列程序:

#include<stdio.h>

#include<string.h>

main()

{     int i;

       char s[10],t[10];

       gets(t);

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

       {       gets(s);

                if(strcmp(t,s)<0)

strcpy(t,s);

       }

       printf("%s\n",t);

}

程序运行后,从键盘上输入(<CR>代表回车符)CDEF<CR>BADEF<CR>QTHRG<CR>,则程序的输出结果是___________

15)下面程序的运行结果是___________

#define P(a) printf("%d ",a)

main()

{     int j,a[]={1,2,3,4,5,6,7},i=5;

       for(j=3;j>1;j--)

       {       switch(j)

                {       case 1:

                         case 2: P(a[i++]); break;

                         case 3: P(a[--i]);

                }

       }

参考答案

一、选择题

1A   2C  3C  4A  5A  6B  7A

8D   9D 10B         11A         12B         13C         14B

15C 16B         17C         18D         19D         20C         21A

22A 23A         24B         25B         26D         27B         28C

29B 30D         31A         32A         33A         34A         35B

36D          37B         38C        39B         40D

二、填空题


1)软件开发

2)数据流

3)模块

4)驱动模块

5)调试

63

72

8-1

9s=30

10(c=getchar())!='\n'

11a

12s[i]!='\0'

13babcd

14QTHRG

155 5