二级C语言真题2013年09月-(2)
(总分100, 做题时间90分钟)
一、选择题
1. 
设循环队列为Q(1:m),其初始状态为front=rear=m。经过一系列入队与退队运算后,front=15,rear=20。现要在该循环队列中寻找最大值的元素,最坏情况下需要比较的次数为______。
A 4
B 6
C m-5
D m-6
2. 
下列叙述中正确的是______。
A 循环队列属于队列的链式存储结构
B 双向链表是二叉树的链式存储结构
C 非线性结构只能采用链式存储结构
D 有的非线性结构也可以采用顺序存储结构
3. 
某二叉树中有n个叶子节点,则该二叉树中度为2的节点数为______。
A n+1
B n-1
C 2n
D n/2
4. 
下列叙述中错误的是______。
A 算法的时间复杂度与算法所处理数据的存储结构有直接关系
B 算法的空间复杂度与算法所处理数据的存储结构有直接关系
C 算法的时间复杂度与空间复杂度有直接关系
D 算法的时间复杂度与算法程序执行的具体时间是不一致的
5. 
软件工程的三要素是______。
A 方法、工具和过程
B 建模、方法和工具
C 建模、方法和过程
D 定义、方法和过程
6. 
通常软件测试实施的步骤是______。
A 集成测试、单元测试、确认测试
B 单元测试、集成测试、确认测试
C 确认测试、集成测试、单元测试
D 单元测试、确认测试、集成测试
7. 
下面可以作为软件设计工具的是______。
A 系统结构图
B 数据字典(DD)
C 数据流程图(DFD图)
D 甘特图
8. 
在数据库设计中,将E-R图转换成关系数据模型的过程属于______。
A 逻辑设计阶段
B 需求分析阶段
C 概念设计阶段
D 物理设计阶段
9. 
设有关系表学生表S(学号,姓名,性别,年龄,身份证号),每个学生学号唯一。除属性学号外,也可以作为键的是______。
A 姓名
B 身份证号
C 姓名,性别,年龄
D 学号,姓名
10. 
在数据库系统中,考虑数据库实现的数据模型是______。
A 概念数据模型
B 逻辑数据模型
C 物理数据模型
D 关系数据模型
11. 
以下选项中叙述正确的是______。
A 结构化程序的三种基本结构是循环结构、选择结构、顺序结构
B C语言源程序不编译也能直接运行
C 使用N-S流程图不能描述复杂算法
D 计算机能够直接运行C语言源程序,不必进行任何转换
12. 
以下选项中叙述正确的是______。
A 使用三种基本结构就可以实现任何复杂算法
B 只要程序包含了三种基本结构中的任意一种,就是结构化程序
C 程序语法错误要在运行时才能发现
D C语言程序不需要包含main()函数
13. 
以下选项中,合法的C语言常量是______。
A 1.234
B "C++"
C "\2.0
D 2Kb
14. 
以下选项中,合法的C语言实数是______。
A 3.1e0.4
B .2e0
C E13
D 7.12E
15. 
设a,b,c是整型变量且均已赋值,则以下选项中错误的赋值语句是______。
A a=(b=3)=1;
B a=(b=2)+c;
C a=b=c+10;
D a=1+(b=c=2);
16. 
有如下程序:
#include <stdio.h>
main()
{
int x=072;
printf("%d\n", x+1);
}
程序运行后的输出结果是______。
A 59
B 73
C 115
D 72
17. 
有如下程序:
#include <stdio.h>
main()
}
int a=0,b=1;
if (a++&&b++)
printf("T");
else
printf("F");
printf("a=%d,b=%d\n",a,b);
}
程序运行后的输出结果是______。
A Ta=1,b=2
B Fa=0,b=2
C Fa=1,b=1
D Ta=0,b=1
18. 
有如下程序:
#include <stdio.h>
main()
{
int i,data;
scanf("%d",&data);
for(i=0;i<5;i++)
{
if(i<data) continue;
printf("%d,",i);
}
printf("\n");
}
程序运行时,从键盘输入:3<回车>后,程序输出结果为______。
A 3,4,
B 1,2,3,4,
C 0,1,2,3,4,5,
D 0,1,2,
19. 
有如下程序:
#include <stdio.h>
main()
{
int i,data;
scanf("%d",&data);
for(i=0;i<5; i++)
{
if(i>data)break;
printf("%d,",i);
}
printf("\n");
}
程序运行时,从键盘输入:3<回车>后,程序输出结果为______。
A 3,4,
B 0,1,
C 3,4,5,
D 0,1,2,3,
20. 
有如下程序:
#include <stdio.h>
main()
{
char a="3",b="A";
int i;
for(i=0;i<6;i++)
{
if(i%3)putchar(a+i);
else putchar(b+i);
}
printf("\n");
}
程序运行后的输出结果是______。
A A45D78
B ABC678
C 34CD78
D 34AB78
21. 
有如下程序:
#include <stdio.h>
main()
{
int i;
for(i=0;i<5;i++)
putchar("9"-i); printf("\n");
}
程序运行后的输出结果是______。
A 54321
B 98765
C "9""8""7""6""5"’
D "43210"
22. 
有如下程序:
#include <stdio.h>
main()
{
int x = 0x13;
if(x=0x18) printf("T");
printf("F");
printf("\n");
}
程序运行后的输出结果是______。
A TF
B T
C F
D TFT
23. 
有如下程序:
#include <stdio.h>
int sum(int a,int b)
{
return a+b-2;
}
main()
{
int i;
for(i=0; i<5; i++)
printf("%d",sum(i,3));
printf("\n");
}
程序运行后的输出结果是______。
A 54321
B 01234
C 45678
D 12345
24. 
有如下程序:
#include <stdio.h>
int change(int*data)
{
return(*data)++;
}
main()
{
int data=123;
change(&data);
printf("%d,",data);
data = change(&data);
printf("%d,",data); printf("\n");
}
程序运行后的输出结果是______。
A 124,124,
B 123,124,
C 124,123,
D 123,123,
25. 
有如下程序:
#include <stdio.h>
void change(int*array,int len)
{
for(len>=0;len--)
array[len]+=2;
}
main()
{
int i,array[5] = {1,2};
change(array,4);
for(i=0; i<4;i++)
printf("%d,",array[i]);
printf("\n");
}
程序运行后的输出结果是______。
A 2,3,4,5,
B 3,4,5,6,
C 3,4,2,2,
D 1,2,0,0,
26. 
以下选项中叙述正确的是______。
A char c1,c2,*c3,c4[40j;是合法的变量定义语句
B 数组说明符的一对方括号中只能使用整型常量,而不能使用表达式
C 数组下标的下限可以是负值
D 若有数组定义float array[4];则语句printf("%f",array[3.12]);是合法的
27. 
若有函数声明:
void fun(float array[],int*ptr);
以下叙述正确的是______。
A 函数参数array,ptr都是指针变量
B 函数参数array不是指针变量,ptr是指针变量
C 调用函数时,实参数组的值将一一复制给array数组
D 调用函数时,array是按值传送,ptr是按地址传送
28. 
设有如下程序段:
int a[8] = {0};
int b[] = {0};
char c[2] = {" A","B"};
char d="AB";
以下叙述正确的是______。
A 只有a,b,c的定义是合法的
B a,b,c,d的定义都是合法的
C 只有a,b的定义是合法的
D 只有c的定义是合法的
29. 
以下涉及字符串数组、字符指针的程序段,不会产生编译错误的是______。
A char*str,name[10];str="Hello World";
B char*str,name[10];name="Hello World";
C char str1[10]="prog.c",str2[10];str2 = str1;
D char head_line[];head_line="== == == == == == =";
30. 
有如下程序:
#include <stdio.h>
#include <string.h>
main()
{
printf("%d\n",strlen("0\n011\1"));
}
程序运行后的输出结果是______。
A 6
B 8
C 9
D 4
31. 
有如下程序:
#include <stdio.h>
void convert(char ch)
{
if(ch<"D") convert(ch+1);
printf("%c",ch);
}
main()
{
convert("A"); printf("\n");
}
程序运行后的输出结果是______。
A ABCDDCBA
B ABCD
C A
D DCBA
32. 
有如下程序:
#include <stdio.h>
#include <string.h>
main()
{
char a[]="THIS",*b="OK";
printf("%d,%d,%d,%d\n", strlen(a), sizeof(a), strlen(b), sizeof(b));
}
程序运行后的输出结果是______。
A 4,5,2,4
B 4,4,2,1
C 5,5,3,3
D 4,5,2,3
33. 
有如下程序:
#include <stdio.h>
void get_put()
{
char ch;
ch = getchar();
if(ch !="\n")get_put();
putchar(ch);
}
main()
{
get_put(); printf("\n");
}
程序运行时,输入1234<回车>,则输出结果是______。
A 1234
B 4321
C 4444
D 1111
34. 
有如下程序:
#include <stdio.h>
int sum(int data)
{
static int int = 0;
return init += data;
}
main()
{
int i;
for(i=1;i<=5;i++)
printf("%d,", sum(i)); printf("\n");
}
程序运行后的输出结果是______。
A 1,3,6,10,15,
B 1,2,3,4,5,
C 0,0,0,0,0,
D 1,1,1,1,1,
35. 
以下选项中的编译预处理命令行,正确的是______。
A #define PI 3.14
B ##define eps 0.001
C #DEFINE TRUE
D #define int INT
36. 
设有以下程序段:
struct person
{
char name[10];
char sex;
float weight;
} zhangsan,*ptr;
ptr=&zhangsan;
若要从键盘读入姓名给结构体变量zhangsan的name成员,输入项错误的是______。
A scanf("%s",zhangsan->name);
B scanf("%s",zhangsan.name);
C scanf("%s",ptr->name);
D scanf("%s",(*ptr).name);
37. 
有如下程序:
#include <stdio.h>
struct person
{
char name[10];
int age;
}
main()
{
struct person room[4]={{"Zhang",19},{"Li",20},{"Wang",17},{"Zhao",18}};
printf("%s;%d\n",(room+2)->name,room->age);
}
程序运行后的输出结果是______。
A Wang:19
B Wang:17
C Li:20
D Li:19
38. 
有如下程序:
#include <stdio.h>
struct pair
{
int first,second;
};
struct pair get_min_max(int* array,int len)
{
int i;
struct pair res;
res.first=array[0];
res.second=array[0];
for(i=1;i<len; i++)
{
if(array[i]<res.first)
res.first=array[i];
if(array[i]>res.second)
res.second=array[i];
}
return res;
main()
{
int array[5]={9,1,3,4};
struct pair min_max=get_min_max(array,5);
printf("min=%d,max=%d\n",min_max.first,min_max.second);
}
程序运行后的输出结果是______。
A min=1,max=9
B min=0,max=9
C min=1,max=4
D min=0,max=4
39. 
有如下程序:
#include <stdio.h>
main()
{
int a=8,b;
b = (a>>2)%2;
printf("%d,%d\n",a,b);
}
程序运行后的输出结果是______。
A 8,0
B 4,0
C 4,1
D 8,1
40. 
以下选项中叙述正确的是______。
A 文件指针是指针类型的变量
B 文件指针可同时指向不同文件
C 文件指针的值是文件在计算机磁盘中的路径信息
D 调用fscanf函数可以向文本文件中写入任意字符
二、程序填空题
1. 
人员的记录由编号和出生年、月、日组成,N名人员的数据已在主函数中存入结构体数组std中,且编号唯一。函数fun的功能是:找出指定编号人员的数据,作为函数值返回,由主函数输出,若指定编号不存在,返回数据中的编号为空串。
请在程序的下画线处填入正确的内容,使程序得出正确的结果。
注意:部分源程序给出如下。
不得增行或删行,也不得更改程序的结构!
试题程序:
#include <stdio.h>
#include <string.h>
#define N 8
typedef struct
{
char num[10];
int year,month,day;
} STU;
/**********found**********/
______fun(STU*std,char*num)
{
int i;
STU a={"",9999,99,99};
for(i=0;i<N;i++)
/**********fomad**********/
if(strcmp(______,num)==0)
/**********found**********/
return(______);
return a;
}
main()
{
STU std[N] = {{"111111",1984,2,15},{"222222",1983,9,21},{"333333",1984,9,1},{"444444",1983,7,15},{"555555",1984,9,28},{"666666",1983,11,15},{"777777",1983,6,22},{"888888",1984,8,19}};
STU p;
char n[10]="666666";
p=fun(std,n);
if(p.num[0]==0)
{
printf("\nNot found!\n");
}
else
{
printf("\nSucceed!\n");
printf("%s%d-%d-%d\n",p.num,p.year,p.month,p.day);
}
}
三、程序修改题
1. 
下列给定程序中,函数fun的功能是:从s所指字符串中,找出t所指字符串的个数作为函数值返回。例如,当s所指字符串中的内容为“abcdabfab”,t所指字符串的内容为“ab”,则函数返回整数3。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
试题程序:
#include <stdlib.h>
#include <conio.h>
#include <stdio.h>
#include <string.h>
int fun (char*s, char *t)
{
int n;char *p,*r;
n=0;
while(*s)
{
p=s;
r=t;
while(* r)
/**********found**********/
if(*r==*p){r++;p++}
else break;
/**********found**********/
if(r=="\0")
n++;
s++;
}
return n;
}
void main()
{
char s[100],t[100];int m;
system("CLS");
printf("\nPlease enter strings;");
scanf("%s",s);
printf("\nPlease enter substringt;");
scanf("%s",t);
m=fun(s,t);
printf("\nThe result is:m=%d \n",m);
}
四、程序设计题
1. 
请编写函数fun,该函数的功能是:将s所指字符串中ASCII码值为偶数的字符删除,串中剩余字符形成一个新串放在t所指的数组中。
例如,若s所指字符串中的内容为“ABCDEFG12345”,其中字符B的ASCII码值为偶数,字符2的ASCII码值为偶数,都应当删除,其他依此类推。最后t所指的数组中的内容应是“ACEG135”。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
试题程序:
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <conio.h>
void fun(char*s,char t[])
{
}
void main()
{
char s[100],t[100];
system("CLS");
printf("\nPlease enter string S:");
scanf("%s",s);
fun(s,t);
printf("\nThe result is:%s\n",t);
}
答题卡