2006年4月全国计算机等级考试二级C语言笔试试卷

时长:120分钟 总分:100分

102浏览 0人已完成答题

题型介绍
题型 单选题 填空题
数量 50 16
一、选择题((1)一(10)每题2分,(11)一(50)每题1分,共60分)
下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。
1.
下列选项中不属于结构化程序设计方法的是
问题详情




2.
两个或两个以上模块之间关联的紧密程度称为
问题详情




3.
下列叙述中正确的是
问题详情




4.
按照“后进先出”原则组织数据的数据结构是
问题详情




5.
下列叙述中正确的是
问题详情




6.
对如下二叉树
  
ABDECF
进行后序遍历的结果为
问题详情




7.
在深度为7的满二叉树中,叶子结点的个数为
问题详情




8.
“商品”与“顾客”两个实体集之间的联系一般是
问题详情




9.
在E-R图中,用来表示实体的图形是
问题详情




10.
数据库DB、数据库系统DBS、数据库管理系统DBMS之间的关系是
问题详情




11.
以下不合法的用户标识符是
问题详情




12.
以下不合法的数值常量是
问题详情




13.
以下不合法的字符常量是
问题详情




14.
表达式3.6-5/2+1.2+5%2的值是
问题详情




15.
以下能正确定义字符串的语句是
问题详情




16.
以下数组定义中错误的是
问题详情




17.
若要求从键盘读入含有空格字符的字符串,应使用函数
问题详情




18.
以下四个程序中,完全正确的是
问题详情




19.
若有定义:float x=1.5;int a=1,b=3,c=2;则正确的switch语句是
问题详情




20.
若各选项中所用变量已正确定义,函数fun中通过return语句返回一个函数值,以下选项中错误的程序是
问题详情




21.
在以下给出的表达式中,与while(    )中的(E)不等价的表达式是
问题详情




22.
要求通过while循环不断读入字符,当读入字母N时结束循环。若变量已正确定义,以下正确的程序段是
问题详情




23.
已定义以下函数
int fun(int *p)
{return *p;)
fun函数返回值是
问题详情




24.
若有说明语句:double *p,a;则能通过scanf语句正确给输入项读入数据的程序段是
问题详情




25.
现有以下结构体说明和变量定义,如图所示,指针p、q、r分别指向一个链表中连续的三个结点。
struct node
{char data;
struct node  *next; 
}*p,*q,*r;
  
现要将q和r所指结点交换前后位置,同时要保持链表的连续,以下不能完成此操作的语句是
问题详情




26.
有以下程序段
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的是
问题详情




27.
设fp为指向某二进制文件的指针,且已读到此文件末尾,则函数feof(fp)的返回值为
问题详情




28.
设有以下语句
int a=1,b=2,c;
c=a^(b<<2);
执行后,C的值为
问题详情




29.
有以下程序
#include <stdio.h>
main()
{char c1,c2,c3,c4,c5,c6;
scanf("%c%c%c%c",&c1,&c2,&c3,&c4);
c5=getchar();  c6=getchar();
putchar(c1);putchar(c2);
printf("%c%c\n",c5,c6);
}
程序运行后,若从键盘输入(从第1列开始)
123<回车>
45678<回车>
则输出结果是
问题详情




30.
有以下程序
main()
{int  y=10;
while(y--);printf("y=%d\n",y);
}
程序执行后的输出结果是
问题详情




31.
有以下程序
main()
{int a=0,b=0,c=0,d=0;
if(a=1) b=1;c=2;
else  d=3;
printf("%d,%d,%d,%d\n",a,b,c,d);
}
程序输出
问题详情




32.
有以下程序
main()
{int  i,j,x=0;
for(i=0;i<2;i++)
{x++;
for(j=0;j<=3;j++)
{if(j%2)continue;
x++;
}
x++;
}
printf("x=%d\n",x);
}
程序执行后的输出结果是
问题详情




33.
有以下程序
int fun1(double a){return a*=a;}
int fun2(double x,double y)
{double a=0,b=0;
a=fun1(x);b=fun1(y);return(int)(a+b);
}
main()
{double w;w=fun2(1.1,2.0);……}
程序执行后变量w中的值是
问题详情




34.
有以下程序
main()
{int i,t[][3]={9,8,7,6,5,4,3,2,1};
for(i=0;i<3;i++) printf("%d",t[2-i][i]);
}
程序执行后的输出结果是
问题详情




35.
有以下程序
fun(char p[][10])
{int n=0,i;
for(i=0;i<7;i++)
if(p[i][0]==′T′)n++;
return n;
}
main()
{char str[][10]={"Mon","Tue","Wed","Thu","Fri","Sat","Sun"};
printf("%d\n",fun(str));
}
程序执行后的输出结果是
问题详情




36.
有以下程序
main()
{int i,s=0,t[]={l,2,3,4,5,6,7,8,9};
for(i=0;i<9;i+=2)s+=*(t+i);
printf("%d\n",s);
}
程序执行后的输出结果是
问题详情




37.
有以下程序
void fun1(char *p)
{char *q;
q=p;
while(*q!=′\0′)
{  (*q)++;  q++;  )
}
main()
{char a[]={"Program"), *p;
p=&a[3];fun1(p);printf("%s\n",a);
}
程序执行后的输出结果是
问题详情




38.
有以下程序
void swap(char *x,char *y)
{char t;
t=*x;  *x=*y;  *y=t;
}
main()
{char *s1="abc",*s2="123";
swap(s1,s2);printf("%s,%s\n",s1,s2);
}
程序执行后的输出结果是
问题详情




39.
有以下程序
int fun(int n)
{if(n==1)return 1;
else
return(n+fun(n-1));
}
main()
{int  x;
scanf("%d",&x); x=fun(x);printf("%d\n",x);
}
执行程序时,给变量X输入10,程序的输出结果是
问题详情




40.
有以下程序
int fun(int x[],int n)
{static int sum=0,i;
for(i=0;i<n;i++)  sum+=x[i];
return  sum;
}
main()
{int a[]={1,2,3,4,5},b[]={6,7,8,9},s=0;
s=fun(a,5)+fun(b,4);printf("%d\n",s);
}
程序执行后的输出结果是
问题详情




41.
有以下程序
main()
{union
{char ch[2];
int d;
}s;
s.d=0x4321;
printf("%x,%x\n",s.ch[0],s.ch[1]);
}
在16位编译系统上,程序执行后的输出结果是
问题详情




42.
有以下程序
main()
{char *p[]={"3697","2584"};
int i,j;long num=0;
for(i=0;i<2;i++)
{j=0;
while(p[i][j]!=′\0′)
{if((p[i][j]-′0′)%2)num=10*num+p[i][j]-′0′;
j+=2;
}
}
printf("%d\n",num);
}
程序执行后的输出结果是
问题详情




43.
执行以下程序后,test.txt文件的内容是(若文件能正常打开)
#include <stdio.h>
main()
{FILE *fp;
char *s1="Fortran",*s2="Basic";
if((fp=fopen("test.txt","wb”))==NULL)
{printf("Can′t open test.txt file\n");exit(1);}
fwrite(s1,7,1,fp); /*把从地址s1开始的7个字符写到fp所指文件中*/
fseek(fp,0L,SEEK_SET); /*文件位置指针移到文件开头*/
fwrite(s2,5,1,fp);
fclose(fp);
}
问题详情




44.
以下叙述中错误的是
问题详情




45.
以下叙述中错误的是
问题详情




46.
以下叙述中错误的是
问题详情




47.
设有以下定义和语句
char str[20]="Program",*p;
p=str;
则以下叙述中正确的是
问题详情




48.
以下叙述中错误的是
问题详情




49.
以下叙述中正确的是
问题详情




50.
以下叙述中错误的是
问题详情




二、填空题(每空2分,共40分)
请将每一个空的正确答案写在答题卡【1】至【20】序号的横线上,答在试卷上不得分。
51.
对长度为10的线性表进行冒泡排序,最坏情况下需要比较的次数为______。
问题详情
52.
在面向对象方法中,______描述的是具有相似属性与操作的一组对象。
问题详情
53.
在关系模型中,把数据看成是二维表,每一个二维表称为一个______。
问题详情
54.
程序测试分为静态分析和动态测试。其中______是指不执行程序,而只是对程序文本进行检查,通过阅读和讨论,分析和发现程序中的错误。
问题详情
55.
数据独立性分为逻辑独立性与物理独立性。当数据的存储结构改变时,其逻辑结构可以不变,因此,基于逻辑结构的应用程序不必修改,称为______。
问题详情
56.
若变量a,b已定义为int类型并赋值21和55,要求用printf函数以a=21,b=55的形式输出,请写出完整的的输出语句______。
问题详情
57.
以下程序用于判断a、b、c能否构成三角形,若能,输出YES,否则输出NO。当给a、b、c输入三角形三条边长时,确定a、b、c能构成三角形的条件是需同时满足三个条件:a+b>c,a+c>b,b+c>a。请填空。
main()
{float a,b,c;
scanf("%f%f%f",&a,&b,&c);
if(______)printf("YES\n");/*a、b、c能构成三角形*/
else printf("NO\n");/*a、b、c不能构成三角形*/
}
问题详情
58.
以下程序的输出结果是______ 。
main()
{int a[3][3]={{1,2,9},{3,4,8},{5,6,7}},i,s=0;
for(i=0;i<3;i++)  s+=a[i][i]+a[i][3-i-1];
printf("%d\n",s);
}
问题详情
59.
当运行以下程序时,输入abcd,程序的输出结果是:______。
insert(char str[])
{int i;
i=strlen(str);
while(i>0)
{str[2*i]=str[i];str[2*i-1]=′*′;i--;}
printf("%s\n",str);
}
main()
{char str[40];
scanf("%s",str);insert(str);
}
问题详情
60.
下面程序的运行结果是:______。
fun(int t[],int n)
{int  i,m;
if(n==1)return t[0];
else
if(n>=2){m=fun(t,n-1);  return m;  }
}
main()
{int a[]={11,4,6,3,8,2,3,5,9,2};
printf("%d\n",fun(a,10));
}
问题详情
61.
现有两个C程序文件T18.c和myfun.c同在TC系统目录(文件夹)下,其中T18.c文件如下:
#include <stdio.h>
#include "myfun.c"
main()
{fun();printf("\n");}
myfun.c文件如下:
void fun()
{char s[80],c;  int n=0;
while((c=getchar())!=′\n′) s[n++]=c;
n--;
while(n>=0) printf("%c",s[n--]);
}
当编译连接通过后,运行程序T18时,输入Thank!则输出结果是:______。
问题详情
62.
以下函数fun的功能是返回str所指字符串中以形参c中字符开头的后续字符串的首地址,例如:str所指字符串为:Hello!,c中的字符为e,则函数返回字符串:ello!的首地址。若str所指字符串为空串或不包含c中的字符,则函数返回NULL。请填空。
char *fun(char *str,char c)
{ int n=0;  char *p=str;
if(p!=NULL)
while(p[n]!=c&&p[n]!=′\0′)n++;
if(p[n]==′\0′) return NULL;
return(______);
}
问题详情
63.
以下程序的功能是:输出100以内(不含100)能被3整除且个位数为6的所有整数,请填空。
main()
(int  i,j;
for(i=0;______;i++)
{j=i*10+6;
if(______)continue;
printf("%d",j);
}
}
问题详情
64.
以下isprime函数的功能是判断形参a是否为素数,是素数,函数返回1,否则返回0。请填空
int isprime(int a)
{int i;
for(i=2;i<=a/2;i++)
if(a%i==0)______;
______;
}
问题详情
65.
以下程序的功能是输入任意整数给n后,输出n行由大写字母A开始构成的三角形字符阵列图形。例如,输入整数5时(注意:n不得大于10),程序运行结果如下:
A B C D E
F G H I
J K L
M N
O
请填空完成该程序。
main()
{int i,j,n;  char ch=′A′;
scanf("%d",&n);
if(n<11)
{for(i=1;i<=n;i++)
{for(j=1; j<=n-i+1;j++)
{printf("%2c",ch);
______;
}
______;
}
}
else printf("n is too large!\n")
printf("\n");
}
问题详情
66.
以下程序中函数fun的功能是:构成一个如图所示的带头结点的单向链表,在结点的数据域中放入了具有两个字符的字符串。函数disp的功能是显示输出该单链表中所有结点中的字符串。请填空完成函数disp。
  
#include <stdio.h>
typedef struct node/*链表结点结构*/
{char sub[3];
struct node  *next;
}Node;
Node fun(char s) /*建立链表*/
{……    }
void disp(Node *h)
{Node *p;
p=h->next;
while(______)
{printf("%s\n",P->sub);  p=______;  }
}
main()
{Node *hd;
hd=fun();disp(hd);printf("\n");
}
问题详情