计算机类二级C

2007年9月全国计算机等级考试二级笔试试卷(C语言程序设计)

66 题含答案C
共 66 题返回本类
1单选题1 / 66
软件是指
查看答案
D. 程序、数据与相关文档的完整集合
2单选题2 / 66
软件调试的目的是
查看答案
B. 改正错误
3单选题3 / 66
在面向对象中,实现信息隐蔽是依靠
查看答案
C. 对象的封装
4单选题4 / 66
下列叙述中,不符合良好程序设计风格要求的是
查看答案
A. 程序的效率第一,清晰第二
5单选题5 / 66
下列叙述中正确的是
查看答案
A. 程序执行的效率与数据的存储结构密切相关
6单选题6 / 66
下列叙述中正确的是
查看答案
D. 以上三种说法都不对
8单选题8 / 66
一棵二叉树中共有70个叶子结点与80个度为1的结点,则该二叉树中的总结点数为
查看答案
A. 219
9单选题9 / 66
下列叙述正确的是
查看答案
B. 数据库技术的根本目标是要解决数据的共享问题
10单选题10 / 66
下列叙述中正确的是
查看答案
A. 为了建立一个关系,首先要构造数据的逻辑关系
14单选题14 / 66
以下叙述正确的是
查看答案
C. C语言规定必须用min作为主函数名,程序将从开始执行,在此结束
15单选题15 / 66
若在定义语句:int  a,b,c*p=&c;之后,接着执行以下选项中的语句,则能正确执行的语句是
查看答案
C. scanf(“%d”,p);
16单选题16 / 66
以下关于long、int和short类型数据占用内存大小的叙述中正确的是
查看答案
D. 由C语言编译系统决定
17单选题17 / 66
若变量均已正确定义并赋值,以下合法的C语言赋值语句是
查看答案
A. x=y=5;
18单选题18 / 66
有以下程序段
int  j;    float    y;    char    name[50];
scanf(“%2d%f%s”,&j,&y,name)
当执行上述程序段,从键盘上输入55566  7777abc后,y的值为
查看答案
B. 566.0
19单选题19 / 66
若变量已正确定义,有以下程序段
i=0;
do  printf(“%d,”i); while(i++);
printf(“%d\n”,i);
其输出结果是
查看答案
B. 0,1
20单选题20 / 66
有以下计算公式
若程序前面已在命令行中包含math.h 文件,不能够正确计算上述公式的程序段是
查看答案
B. y=sqrt(x);
if(x<0)y=sqrt(x);
21单选题21 / 66
设有条件表达式:(EXP)? i++ ; j—,则以下表达式中与(EXP)完全等价的是
查看答案
B. (EXP!=0)
22单选题22 / 66
有以下程序
#include  <stdio,h>
main()
﹛inf  y=9;
  for(  ;  y>0;  y--)
  if(y%3=0)  printf(“%d”, ‥y);
﹜
程序的运行结果是
查看答案
C. 852
23单选题23 / 66
已有定义:char  c;,程序前面已在命令行中包含ctype. h 文件。不能用于判断c中的字符是
否为大写字母的表达式是
查看答案
B. ‘A’<=c<=‘z’
24单选题24 / 66
有以下程序
#includc  <stdio.h>
Main()
﹛int  i, j,m =55
  for(i=l;i<3;i++)
  for(j=3;j<=++)  m=m%j;
  printf(“%d\n”,m);
﹜
程序的运行结果是
查看答案
B. 1
25单选题25 / 66
若函数调用时的参数为变景时,以下关于函数形参和实参的途述中正确的是
查看答案
D. 函数的形参和实参分别占用不同的存储单元
26单选题26 / 66
已知字符‘A’的ASCII代码值是65,字符变量cl的值的‘A’,c2的值是‘D’。执行语句
printf(“%d,%d”,cl,c2-2);后,输出结果是
查看答案
C. 65,66
27单选题27 / 66
以下途述中错误的是
查看答案
C. 可以给指针变量赋一个整数作为地址值
29单选题29 / 66
设有定义:char  p[]=﹛‘1’ ‘2’ ‘3’﹜、*q=p;  以下不能计算出一个char型数据所占字节数的表达式是
查看答案
A. sizeof(p)
30单选题30 / 66
有以下函数
int  aaa(char  *s)
﹛ char    *t=s;
   while(*t++);
   t--;
   return(t-s);
﹜
以下关于aaa函数的功能的叙述正确的是
查看答案
A. 求字符串s的长度
31单选题31 / 66
若有定义语句:int a [3][6];,按在内存中的存放顺序,a数组的第10个元素是
查看答案
B. a[1][3]
32单选题32 / 66
有以下程序
#include    <stdio.h>
void  fun(char  **p)
{++p;  printf(“%”﹨n”,*p);}
main()
{ char  *a[]={“Moming”, “Aftenoon”,“Evening”,“Night”};
  fun(a)
}
程序的运行结果是
查看答案
A. Aftemoon
33单选题33 / 66
若有定义语句:int a[2][3],*p[3];,则以下语句中正确的是
查看答案
C. p[0]=&a[1][2];
34单选题34 / 66
有以下程序
#include  <stdio.h>
void fun(int  *a, int  n)/*fun函数的功能是将a所指数组元数从大到小排序*/
{  int  t,i,j;
   for(i=o;i<n-1;j++)
   for(j=j+1;j<n;j++)
   if(a[i]<a[j])  {t=a[i]; a[i]=a[j]; a[j]=t; }
}
Main()
{  int  c[10]={1,2,3,4,5,6,7,8,9,0},i;
   fun(c+4,6)
   for(i=0;i<10,i++)  printf(“%d,”,c[i]);
   printf(“n”);
}
程序的运行结果是
查看答案
D. 1,2,3,4,9,8,7,6,5,0,
35单选题35 / 66
有以下程序
#include  <stdio.h>
int  fun(char  s[])
{  int  n=0;
   while(*s<=‘9’&&*s>=‘0’)  {n=[0*n+*s-‘0’;s++; }
   return(n);
}
main()
{ char  s[10]={“6”,“1”,“*”,“4”,“*”,“9”,“*”, ‘0’,“*”}
printf(“%d﹨n”,fun(s));
}
程序的运行结果是
查看答案
C. 61
36单选题36 / 66
当用户要求输入的字符串中含有空格时,应使用的输入函数是
查看答案
C. gets
37单选题37 / 66
以下关于字符串的叙述中正确的是
查看答案
D. 空串一定比空格打头的字符串小
38单选题38 / 66
有以下程序
#include  <stdio.h>
void fun(char  *t, char  *s)
{  while(*t!=0)  t++;
   while{(*t++=*s++)!=0};
}
min()
{  char  ss[10]=“acc”,aa[10]=“bbxxyy”;
   fun(ss,aa);  printf(“%s,%s﹨n”,ss,aa);
}
程序的运行结果是
查看答案
D. accbbxxyy, bbxxyy
39单选题39 / 66
有以下程序
#include  <stdio.h>
#include  <string.h>
void fun(char  s[][10],int n)
{  char  t;  int  ij;
   for(i=0;i<n-1;i++)
   for(j=i+1;j<n;j++)
/* 比较字符串的首字符大小,并交换字符串的首字符*/
if(s[i][0]>s[j][0])  {l=s[i][0];s[i][0];s[j][0]=t;}
}
main()
{  char  ss[5][10]={“bcc”,“bbcc”,“xy”,“aaaacc”,“aabbc”};
   Fun(ss,5);    printf(“%s,%s﹨n”,ss[0],ss[4]);
}
程序的运行结果是
查看答案
D. acc,xabcc
40单选题40 / 66
在一个C源程序文件中所定义的全局变量,其作用域为
查看答案
D. 由具体定义位置和extrn说明来决定范围
41单选题41 / 66
有以下程序
#includc  <stdio.h>
int  a=1;
int  f(int  c)
{  static  int  a=2;
   c=c+1
   return  (a++)+c;
}
Main()
{  int  i,k=0;
   for(i=0;i<2;i++{ int  a=3;  k +=f(a);}
   k+=a;
   printf(“%d﹨n”,k);
}
程序的运行结果是
查看答案
A. 14
42单选题42 / 66
有以下程序
#include  <stdio.h>
void  fun(int n,int*p)
{  int  f1,f2;
   if(n=1||n=2)  *p=1;
   else
   {  fun(n-1,&f1);  fun(n-2,&f2);
      *p=f1+f2;
   }
}
main()
{  int  s;
   fun(3,&s);  printf(“%d﹨n”);
}
程序的运行结果是
查看答案
A. 2
43单选题43 / 66
若程序中有宏定义行:#define  N  100  则以下叙述中正确的是
查看答案
B. 在编译程序对C源程序进行预处理时用100替换标识符N
44单选题44 / 66
以下关于typedef的途述错误的是
查看答案
A. 用typedef可以增加新类型
45单选题45 / 66
有以下程序
#include  <stdio.h>
struct  tt
{  int  x;struct  tt*y;} *p;
Struct tt  a[4]={20,a+1,15,a+2,30,a+3,17,a};
main()
{  int  i;
   p=a;
   for(i=1;i<=2,i++)  {printf(“%d,”,p->x);  p=p->y;}
}
程序的运行结果是
查看答案
D. 20,15
46单选题46 / 66
有以下程序
#include  <stdio.h>
#include  <string.h>
Typedef  struct  char name[9];  char  sex;  float score[2]; }STU;
STU  f(STU  a)
{  STU  b={“zhao”,‘m’,85-0,90,0};  int  i;
   Strcpy(a.name,b.name);
   a.sex=b.sex;
   for(i=0;i<2;i++)  a.score[i]=b.score[i];
   retum  a;
}
main()
{STU  c={“Qian”,‘f’,95.0,92.0}d;
 d=f(c);  printf(“%s,%c,%2.of,%2.of﹨n”,d.name,d.sex,d.score[0].d,score[1]);
}
程序的运行结果是
查看答案
C. Zhao,m,85,90
47单选题47 / 66
设有以下定义
Union data
{  int  dl;  float  d2;  }demo;
则下面叙述中错误的是
查看答案
D. 若给demo.d1赋99后,demo.d2中的值是99.0
48单选题48 / 66
有以下程序
#include  <stdio.h>
Main()
{  int  a=1,b=2,c=3,x;
   x=(a^b)&c;    printf(“%d\n”,x);
}
程序的运行结果是
查看答案
D. 3
49单选题49 / 66
读取二进制文件的函数调用形式为:fread(buffer, size,count,fp);其中buffer代表的是
查看答案
C. 一个内存块的首地址,代表读入数据存放的地址
50单选题50 / 66
有以下程序
#include  <stdio.h>
Main()
{  FILE  *fp;  int  a[10]={1,2,3,0,0},i;
   fp=fopen(“d2.dat”.”wb”)
   fwrite(a,sizeof(int),5,fp)
   fwrite(a,sizeof(int),5,fpj);
   fclose(fp);
   fp=fopen(“d2.dat”,”rb”);
   fread(a,sizeof(int),10,fp);
   fclose(fp);
   for  (i=0;i<10;i++)  printf(“%d,”,a[i]);
}
程序的运行结果是
查看答案
D. 1,2,3,0,0,1,2,3,0,0.
51填空题51 / 66
软件需求规格说明书应具有完整性、无歧义性、正确性、可验证性、可修改性等特性,其中最重要的是[1] __ 。
查看答案
正确性
52填空题52 / 66
在两种基本测试方法中,[2] __ 测试的原则之一是保证所测模块中每一个独立路径至少要执行一次。
查看答案
逻辑覆盖
53填空题53 / 66
线性表的存储结构主要分为顺序存储结构和链式存储结构。队列是一种特殊的线性表。循环队列是队列的[3] __ 存储结构。
查看答案
顺序
56填空题56 / 66
执行以下程序时输入1234567<CR>,则输出结果是[6] __ 。
#include  <stdio.h>
Main()
{  int  a=1,b;
Scanf(“%2d%2d”,&a,&b);  printf(“%d  %d\n”,a,b)
}
查看答案
1234
57填空题57 / 66
以下程序的功能是:输出a、b、c三个变量中的最小值。请填空。
#include  <stdio.h>
Main ( )
{  int  a,b,c,t1,t2;
Scanf(*%d%d%d”,&a,&b,&c);
t1=a<b?[7] __ :
t2=c<1?[8] __ ;
printf(“%d\n”,t2);
查看答案
  1. a:b
  2. c:t1
58填空题58 / 66
以下程序的输出结果是[9] __ 。
#include  <stdio.h>
Main ()
{  int  n=12345,d;
while(n!=0){  d=n%10;  printf(“%d”,d);  n/=10;  }
}
查看答案
54321
59填空题59 / 66
有以下程序段,且变量已正确定义和赋值
for(S=1.0,k=1;k<=n;k++) s=s+1.0/(k*(k+));
printf(“S=%f\n\n”,s);
请填空,使下面程序段的功能与之完全相同
S=1.0;k=1;
While([10] __ )  {  s=s+1.0/(k*(k+1));[11] __ ;  }
Printf(“s=%f\n\n”,s);
查看答案
  1. k<=n
  2. k++
60填空题60 / 66
以下程序的输出结果是[12] __ 。
#include  <stdio.h>
main()
{  int  i;
for(i=a;j<f;i++,i++)  printf(“%c”,i-‘a’+’A’);
printf(“\n”);
}
查看答案
ABCDE
61填空题61 / 66
以下程序的输出结果是[13] __ 。
#include  <stdio.h>
#include  <string.h>
Char  *fun(char  *t)
{  char  *p=t;
retrun (p+strlen(t)/2);
}
main()
{  char  *str=”abcdefgh”;
str=fun(str);
puts(str);
}
查看答案
efgh
62填空题62 / 66
以下程序中函数f的功能是在数值x的n个数(假定n个数互不相同)中找出最大最小数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。请填空。
#include  <stdio.h>
void f(int  x[], int  n)
{  int  p0,p1,i,j,t,m;
i=j=x[0];    p0=p1=0;
for(m=0;m<n;m++)
{  if (x[m]>i)    { i=x[m];  p0=m;}
Else  if(x[m]<j)  {j=x[m];  p1=m;}
}
t=x[p0];  x[p0]=x[n-1];  x[n-1]=1;
t=x[p1];  x[p1]=[14] __ ;[15] __ =t;
}
main()
{  int  a[10],u;
for(u=0;u<10;u++)  scanf(*%d,&a[u]);
f(a,10);
for(u=0;u<10;u++)  printf(“%d”,a[u]);
printf(“\n”);
}
查看答案
  1. x[0]
  2. x[0]
63填空题63 / 66
以下程序统计从终端输入的字符中大写字母的个数,num[0]中统计字母A的个数,num[1]中统计字母B的个数,其它依次类推。用#号结束输入,请填空。
#include  <stdio.h>
#include  <ctype.h>
main ()
{  int  num[26]={0},i;    char  c;
while([16] __ ) !=”#”)
if(isupper(c))  num[c-‘A’]+=[17] __ ;
for(i=0;i<26;i++)
printf(*%c;%d\n”, i+’A’,num[i]);
}
查看答案
  1. c=getchar()
  2. 1
64填空题64 / 66
执行以下程序的输出结果是[18] __ 。
#include  <stdion.h>
main()
{  int  i,  n[4]={1};
For(i=1;i<=3;i++)
{  n[i]=n[i-1]*2+1;  printf(”%d”, n[i]);  }
}
查看答案
3715
65填空题65 / 66
以下程序的输出结果是[19] __ 。
#include  <stdion.h>
#define  M  5
#define  N  M+M
main()
{  int  k;
K=N*N*5;  printf(“%d\n”,k);
}
查看答案
55
66填空题66 / 66
函数min()的功能是:在带头结点的单链表中查找数据域中值最小的结点。请填空
#include  <stdion.h>
Struct node
{  int  iata;
Struct node  *next;
};
Int min(struct node *first)/*  批针first为链表头指针  */
{  struct nod  *p;  int  m;
P=first->next;  m=p->data; p=p->next;
for(; p!=NULL; p=[20] __next" size=20 type=text>next" size=20 type=text>next" size=20 type=text>next" size=20 type=text>next" size=20 type=text> )
if(p->data<m)  m=p->data;
retum  m;
}
查看答案
p->next
← 上一卷下一卷 →