二级C语言真题2016年03月
(总分100, 做题时间90分钟)
一、选择题
1. 
有以下定义:
struct data
{ int i;char c;double d;}x;
以下叙述中错误的是______。
A x的内存地址与x. i的内存地址相同
B struct data是一个类型名
C 初始化时,可以对x的所有成员同时赋初值
D 成员i、c和d占用的是同一个存储空间
2. 
以下函数的功能是:计算a的n次方作为函数值返回。
double fun(double a,int n)
{ int i;double s=1.0;
for(i=1;i<=n;i++)s=______;
return s;
}
为实现上述功能,函数中下划线处应填入的是______。
A s*i
B s*a
C s+i*i
D s+a*a
3. 
有以下程序:
#include<stdio.h>
#include<string.h>
main( )
{ char str[ ]={"Hello,Beijing"};
printf("%d,%d\n",strlen(str),sizeof(str));
}
程序的运行结果是______。
A 13,13
B 13,14
C 13,15
D 14,15
4. 
若有说明:typedef struct{int a;char c;}w;,则以下叙述正确的是______。
A 编译后系统为w分配5个字节
B 编译后系统为w分配6个字节
C 编译后系统为w分配8个字节
D 编译后系统不为w分配存储空间
5. 
以下叙述中错误的是______。
A 同一个数组中所有元素的类型相同
B 不可以跳过前面的数组元素,给后面的元素赋初值0
C 定义语句:int a[10]={0},给a数组中所有元素赋初值0
D 若有定义语句:int a[4]={1,2,3,4,5};,编译时将忽略多余的初值
6. 
若有以下定义:
struct tt{char name[10];char sex;}aa={"aaaa","F"},*p=&aa;
则错误的语句是______。
A scanf("%c",aa.sex);
B aa.sex=getchar( );
C printf("%c\n",(*p).sex);
D printf("%c\n",p->sex);
7. 
C语言编译程序的功能是______。
A 执行一个C语言编写的源程序
B 把C源程序翻译成ASCII码
C 把C源程序翻译成机器代码
D 把C源程序与系统提供的库函数组合成一个二进制执行文件
8. 
有以下程序:
#include<stdio.h>
int fun(int n)
{ if(n)return fun(n-1)+n;
else return 0;
}
main( )
{printf("%d\n",fun(3));}
程序的运行结果是______。
A 4
B 5
C 6
D 7
9. 
有以下程序:
#include<stdio.h>
main( )
{ int sum=0,x=5;
do{sum+=x;}while(!--x);
printf("%d\n",sum);
}
程序的运行结果是______。
A 0
B 5
C 14
D 15
10. 
下面不属于软件设计阶段任务的是______。
A 软件的功能确定
B 软件的总体结构设计
C 软件的数据设计
D 软件的过程设计
11. 
有以下程序:
#include<stdio.h>
#include<string.h>
typedef struct{char name[9];char sex;float score[2];}STU;
void f(STU*a)
{ strcpy(a->name,"Zhao");
a->sex="In";a->score[1]=90.0;
}
main( )
{ STU c={"Qian","f",95.0,92.0},*d=&c;
f(d);printf("%s,%c,%2.Of,%2.0f\n",d->name,c.sex,c.score[0],c.score[1]);
}
程序的运行结果是______。
A Qian,f,95,92
B Zhao,f,95,90
C Zhao,m,95,90
D Zhao,f,95,92
12. 
在C语言程序中,下列说法正确的是______。
A 函数的定义可以嵌套,但函数的调用不可以嵌套
B 函数的定义不可以嵌套,但函数的调用可以嵌套
C 函数的定义和调用均不可以嵌套
D 函数的定义和调用均可以嵌套
13. 
执行以下程序段后,s的值为______。
int a[ ]={1,2,3,4,5,6,7,8,9},s=0,k;
for(k=0;k<8;k+=2)S+=*(a+k);
A 13
B 16
C 17
D 45
14. 
有以下程序:
#include<stdio.h>
#define M 5
#define f(x,y) x*y+M
main( )
{
int k;
k=f(2,3)*f(2,3);
printf("%d\n",k);
}
程序的运行结果是______。
A 22
B 41
C 100
D 121
15. 
有以下程序:
#include<stdio.h>
main( )
{ char ch="Z";
ch=(ch-"A"+1)%26+"A";putchar(ch);
}
程序的运行结果是______。
A .Z
B .Y
C .B
D .A
16. 
下面属于黑盒测试方法的是______。
A 基本路径测试
B 等价类划分
C 判定覆盖测试
D 语句覆盖测试
17. 
有以下程序:
#include<stdio.h>
main( )
{ int i,j,k,a=5,b=6;
i=(a==b)?++a:--b;
j=a++;k=b;printf("%d,%d,%d\n",i,j,k);
}
程序的运行结果是______。
A 7,6,5
B 5,5,5
C 7,5,5
D 5,6,5
18. 
C语言程序中,若函数无返回值,则应该对函数说明的类型是______。
A int
B double
C char
D void
19. 
有以下程序:
#include<stdio.h>
main( )
{ int k,n=0;char c,str[]="teach";
for(k=0;str[k];k++)
{ c=str[k];
switch(k)
{ case 1: case 3: case 5: putchar(c);printf("%d",++n);break;default:putehar("N");
}
}
}
序的运行结果是______。
A Ne1NN
B e1a2e3
C Ne1Nc2N
D Na1NNNN
20. 
有以下程序:
#include<stdio.h>
void fun(char(*P)[6])
{ int i;
for(i=0;i<4;i++)printf("%c",P[i][i]);
printf("\n");
}
main( )
{ char s[6][6]={IfABCDE","abcde","12345","FGHIJ","fghij","54321"};
fun(s);
}
程序的运行结果是______。
A Aa1F
B Ab3I
C ABCD
D fghij
21. 
设变量x为long int型并已正确赋值,以下表达式中能将x的百位上的数字提取出的是______。
A x/10%100
B x%10/100
C x%100/10
D x/100%10
22. 
在E-R图中,表示实体的图形是______。
A 矩形
B 椭圆
C 菱形
D .圆
23. 
下面对软件特点描述不正确的是______。
A 软件是一种逻辑实体,具有抽象性
B 软件开发、运行对计算机系统具有依赖性
C 软件开发涉及软件知识产权、法律及心理等社会因素
D 软件运行存在磨损和老化问题
24. 
设x,y,z均为实型变量,代数式在C语言中的正确写法是______。
A x/y*z
B x%y%z
C x/y/z
D x*z/y
25. 
有以下程序:
#include<stdio.h>
#define N 4
void fun(int a[][N],int b[])
{ int i;
for(i=0;i<N;i++)b[i]=a[i][N-1-i];
}
main( )
{ int x[N][N]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16},y[N],i;
fun(x,y);
for(i=0;i<N;i++)printf("%d,",y[i]);
printf("\n");
}
程序的运行结果是______。
A 1,2,3,4,
B 3,6,9,12,
C 4,7,10,13,
D 1,5,9,13,
26. 
在下列链表中,能够从任意一个结点出发直接访问到所有结点的是______。
A 单链表
B 循环链表
C 双向链表
D 二叉链表
27. 
有以下程序:
#include<stdio,h>
main( )
{ int i,j,x=0;
for(i=0;i<2;i++)
{ x++;
for(j=0;j<=3;j++)
{ if(j%2==0)continue;x++;}
x++;
}
printf("x=%d\n",x);
}
程序的运行结果是______。
A x=4
B x=6
C x=8
D x=12
28. 
对图书进行编目时,图书有如下属性:ISBN书号,书名,作者,出版社,出版日期。能作为关键字的是______。
A ISBN书号
B 书名
C 作者,出版社
D 出版社,出版日期
29. 
若主函数中有定义语句:int a[10],b[10],c;,在主函数前定义的fun函数首部为:void fun(int x[ ]),则以下选项中错误的调用语句是______。
A fun(b);
B fun(&c);
C fun(&a[3]);
D :fun(b[11]);
30. 
构成C语言程序的三种基本结构是______。
A 顺序结构、转移结构、递归结构
B 顺序结构、嵌套结构、递归结构
C 顺序结构、选择结构、循环结构
D 选择结构、循环结构、嵌套结构
31. 
下列形式中不合法的常量是______。
A 2.E8
B -.28
C -028
D 2e-8
32. 
下列与栈结构有关联的是______。
A 数组的定义域使用
B 操作系统的进程调度
C 函数的递归调用
D 选择结构的执行
33. 
以下不是C语言字符型或字符串常量的是______。
A "It"s"
B "0"
C "a=0"
D "\010"
34. 
下列数据结构中,属于非线性结构的是______。
A 双向链表
B 循环链表
C 二叉链表
D 循环队列
35. 
有以下程序:
#include<stdio.h>
main( )
{
int k=10;
printf("%4d,%0,%x\n",k,k,k);
}
程序的运行结果是______。(□代表一个空格)
A 10,12,a
B □□10,012,a
C 010,12,a
D □□10,12,a
36. 
数据库管理系统是______。
A 操作系统的一部分
B 系统软件
C 一种编译系统
D 一种通信软件系统
37. 
若有定义:int a=1,b=2,c=3;,则执行表达式(a=b+c)||(++b)后,a,b,c的值依次为______。
A 1,2,3
B 5,3,2
C 5,2,3
D 5,3,3
38. 
有两个关系R和T如下:
R
A B C
a 1 2
b 4 4
c 2 3
d 3 2
T
A C
a 2
b 4
c 3
d 2
则由关系R得到关系T的操作是______。
A 选择
B .交
C 投影
D .并
39. 
设有:char s[5],c;,则调用函数scanf能正确给s和c读入数据的是______。
A scanf("%s%c",s,c);
B scanf("%d%c",&s,&c);
C scanf("%d%c",s,&c);
D scanf("%s%c",s,&c);
40. 
若变量已正确定义并赋值,则错误的赋值语句是______。
A a+=a+1;
B a=sizeof(double);
C a=d||c;
D a+1=a;
二、程序填空题
1. 
下列给定的程序中,函数fun()的功能是:求出以下分数序列的前n项和。2/1,3/2,5/3,8/5,13/8,21/13,……和值通过函数值返回main()函数。例如,若输入n=5,则应输出8.391667。
注意:
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。
[试题源程序]
#incúde<stdio.h>
#include<conio.h>
double fun(int n)
{
int a=2,b=1,c,k;
double ______;
for(k=1;k<:n;k++)
{
s=s+1.0*a/b;
c=a;a+=______;b=c;
}
return(s);
main( )
{
int n=5;
printf("\nThe value of function is:%lf\n",______);
}
三、程序修改题
1. 
给定程序中函数fun的功能是:根据整型形参m,计算如下公式的值。

例如,若m中的值为:5,则应输出:1.463611。请改正程序中的错误,使它能得到正确结果。
注意:
不要改动main函数,不得增行或删行,也不得更改程序的结构。
[试题源程序]
#include<stdio.h>
double fun(int m)
{
double y=1.0;
int i;
/**********found**********/
for(i=2;i<m;i++)
/**********found**********/
y+=1/(i*i);
return(y);
}
main()
{
int n=5:
printf("\nThe result is%lf\n",fun(n));
}
四、程序设计题
1. 
请编写函数fun( ),该函数的功能是:移动一维数组中的内容,若数组中有n个整数,要求把下标从p~n-1(p<n-1)的数组元素平移到数组的前面。
例如,一维数组中的原始内容为1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,P的值为6。移动后,一维数组的内容应为7,8,9,10,1 1,12,13,14,15,1,2,3,4,5,6。
注意:
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
[试题源程序]
#include<stdio.h>
#define N 80
void fun(int *w,int p,int n)
{
}
main( )
{
int a[N]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
int i,p,n=15;
printf("The original data:\n");
for(i=0;i<n;i++)
printf("%3d",a[i]);
printf("\n\nEnter p:");
scanf("%d",&p);
fun(a,p,n);
printf("\nThe data after moving:\n");
for(i=0;i<n;i++)
printf("%3d",a[i]);
printf("\n\n");
}
答题卡