笔试部分
一、填空题
(1)算法的空间复杂度是指
A)算法程序的长度
B)算法程序中的指令条数
C)算法程序所占的存储空间
D)执行过程中所需要的存储空间
【参考答案】D
(2)用链表表示线性表的优点是
A)便于随机存取
B)花费的存储空间较顺序存储少
C)便于插入和删除操作
D)数据元素的物理顺序与逻辑顺序相同
【参考答案】C
(3)数据结构中,与所使用的计算机无关的是数据的
A)存储结构 B)物理结构 C)逻辑结构 D)物理和存储结构
【参考答案】C
(4)结构化程序设计主要强调的是
A)程序的规模 B)程序的效率 C)程序设计语言的先进性 D)程序易读性
【参考答案】D
(5)软件设计包括软件的结构、数据接口和过程设计,其中软件的过程设计是指
A)模块间的关系 B)系统结构部件转换成软件的过程描述
C)软件层次结构 D)软件开发过程
【参考答案】B
(6)检查软件产品是否符合需求定义的过程称为
A)确认测试 B)集成测试 C)验证测试 D)验收测试
【参考答案】A
(7)数据流图用于抽象描述一个软件的逻辑模型,数据流图由一些特定的图符构成。下列图符名标识的图符不属于数据流图合法图符的是
A)控制流 B)加工 C)数据存储 D)源和潭
【参考答案】A
(8)应用数据库的主要目的是
A)解决数据保密问题 B)解决数据完整性问题
C)解决数据共享问题 D)解决数据量大的问题
【参考答案】C
(9)在数据库设计中,将E-R图转换成关系数据模型的过程属于
A)需求分析阶段 B)逻辑设计阶段 C)概念设计阶段 D)物理设计阶段
【参考答案】B
(10)在数据管理技术的发展过程中,经历了人工管理阶段、文件系统阶段和数据库系统阶段。其中数据独立性最高的阶段是
A)数据库系统 B)文件系统 C)人工管理 D)数据项管理
【参考答案】A
(11)以下叙述中正确的是
A)构成C程序的基本单位是函数
B)可以在一个函数中定义另一个函数
C)main()函数必须放在其他函数之前
D)C函数定义的格式是K&R格式
【参考答案】A
(12)结构化程序所规定的三种最基本控制结构是
A)输入、处理、输出 B)树形、网形、环形
C)顺序、选择、循环 D)主程序、子程序、函数
【参考答案】C
(13)一个C语言程序是由
A)一个主程序和若干子程序组成 B)函数组成
C)若干过程组成 D)若干子程序组成
【参考答案】B
(14)请选出可用作C语言用户标识符的是
A)void,define,WORD B)a3_b3,_123,IF C)FOR,--abc,Case D)2a,Do,Sizeof
【参考答案】B
(15)下列各数据类型不属于构造类型的是
A)枚举型 B)共用型 C)结构型 D)数组型
【参考答案】A
(16)在16位C编译系统上,若定义long a;,则能给a赋40000的正确语句是
A)a=20000+20000; B)a=4000*10;
C)a=30000+10000; D)a=4000L*10L
【参考答案】D
(17)以下不正确的叙述是
A)在C程序中,逗号运算符的优先级最低
B)在C程序中,APH和aph是两个不同的变量
C)若a和b类型相同,在计算了赋值表达式a=b后b中的值将放入a中,而b中的值不变
D)从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数值
【参考答案】D
(18)sizeof(float)是
A)一个双精度表达式 B)一个整型表达式 C)一种函数调用 D)一个不合法的表达式
【参考答案】B
(19)若x,i,j和k都是int型变量,则计算表达式x=(i=4,j=16,k=32)后,x的值为
A)4 B)16 C)32 D)52
【参考答案】C
(20)下面程序的功能是把316表示为两个加数的和,使两个加数分别能被13和11整除,请选择填空。
#include <stdio.h>
main()
{ int i=0,j,k;
do{i++;k=316-13*i;}while(______);
j=k/11;
printf("316=13*%d+11*%d",i,j);
}
A)k/11 B)k%11 C)k/11==0 D)k%11==0
【参考答案】B
(21)设有定义:int n=0,*p=&n,**q=&p,则下列选项中正确的赋值语句是
A)p=1; B)*q=2; C)q=p; D)*p=5;
【参考答案】D
(22)下面程序的运行结果是
#include <stdio.h>
main()
{ int y=10;
do{y--;}while(--y);
printf("%d\n",y--);
}
A)-1 B)1 C)8 D)0
【参考答案】D
(23)下面程序的输出结果是
main()
{ int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;
printf("%d\n",*(p+2));}
A)3 B)4 C)1 D)2
【参考答案】A
(24)有如下程序
int a[10]={1,2,3,4,5,6,7,8,9,10};
int *p=&a[3],b;b=p[5];
则b的值是
A)5 B)6 C)9 D)8
【参考答案】C
(25)设有int x=11;则表达式(x++*1/3)的值是
A)3 B)4 C)11 D)12
【参考答案】A
(26)请选出以下语句的输出结果
printf("%d\n",strlen("\t\"\065\xff\n"));
A)5 B)14 C)8 D)输出项不合法,无正常输出
【参考答案】A
(27)下列程序的输出结果是
main()
{ double d=3.2; int x,y;
x=1.2; y=(x+3.8)/5.0;
printf("%d\n", d*y);
}
A)3 B)3.2 C)0 D)3.07
【参考答案】C
(28)下列程序的输出结果是
int b=2;
int func(int *a)
{ b += *a; return(b);}
main()
{ int a=2, res=2;
res += func(&a);
printf("%d\n",res);
}
A)4 B)6 C)8 D)10
【参考答案】B
(29)下面能正确进行字符串赋值操作的是
A)char s[5]={"ABCDE"};
B)char s[5]={ ′A′, ′B′, ′C′, ′D′, ′E′};
C)char *s;s="ABCDE";
D)char *s;char a; scanf("%s",&s);
【参考答案】C
(30)执行以下程序后,a,b的值分别为
main()
{ int a,b,k=4,m=6,*p1=&k,*p2=&m;
a=p1==&m;
b=(*p1)/(*p2)+7;
printf("a=%d\n",a);
printf("b=%d\n",b);
}
A)-1,5 B)1,6 C)0,7 D)4,10
【参考答案】C
(31)设有数组定义: char array[]="China"; 则数组 array所占的空间为
A)4个字节 B)5个字节 C)6个字节 D)7个字节
【参考答案】C
(32)若已定义:
int a[]={0,1,2,3,4,5,6,7,8,9}, *p=a,i;
其中 0≤i≤9, 则对a数组元素不正确的引用是
A)a[p-a] B)*(&a[i])
C)p[i] D)a[10]
【参考答案】D
(33)以下不正确的定义语句是
A)double x[5]={2.0,4.0,6.0,8.0,10.0};
B)int y[5]={0,1,3,5,7,9};
C)char c1[]={′1′,′2′,′3′,′4′,′5′};
D)char c2[]={′\x10′,′\xa′,′\x8′};
【参考答案】B
(34)若有以下程序
#include <stdio.h>
int a[]={2,4,6,8};
main()
{ int i;
int *p=a;
for(i=0;i<4;i++)a[i]=*p;
printf("%d\n",a[2]);
}
上面程序输出结果是
A)6 B)8 C)4 D)2
【参考答案】D
(35)下面程序段的运行结果是
char *format="%s,a=%d,b=%d\n";
int a=11,b=10;
a+=b;
printf(format,"a+=b",a,b);
A)for,"a+=b",ab B)format,"a+=b"
C)a+=b,a=21,b=10 D)以上结果都不对
【参考答案】C
(36)C语言允许函数类型缺省定义,此时函数值隐含的类型是
A)float B)int C)long D)double
【参考答案】B
(37)以下程序有语法错误,有关错误原因的正确说法是
main()
{ int G=5,k;
void prt_char();
...
k=prt_char(G);
...
}
A)语句 void prt_char();有错,它是函数调用语句,不能用void说明
B)变量名不能使用大写字母
C)函数说明和函数调用语句之间有矛盾
D)函数名不能使用下划线
【参考答案】C
(38)以下叙述中不正确的是
A)在不同的函数中可以使用相同的名字的变量
B)函数中的形式参数是局部变量
C)在一个函数内定义的变量只在本函数范围内有效
D)在一个函数内的复合语句中定义的变量在本函数范围内有效
【参考答案】D
(39)有以下程序:
#include <stdio.h>
union pw
{ int i;
char ch[2];}a;
main()
{a.ch[0]=13;a.ch[1]=0;printf("%d\n",a.i);}
程序的输出结果是
A)13 B)14 C)208 D)209
【参考答案】A
(40)在16位IBM-PC机上使用C语言,若有如下定义
struct data
{ int i;
char ch;
double f;
} b;
则结构变量b占用内存的字节数是
A)1 B)2 C)7 D)11
【参考答案】D
(41)下面程序的运行结果是
#include <stdio.h>
main()
{ int a=1,b=10;
do
{b-=a;a++;}while(b--<0);
printf("a=%d,b=%d\n",a,b);
}
A)a=3,b=11 B)a=2,b=8 C)a=1,b=-1 D)a=4,b=9
【参考答案】B
(42)以下程序的输出结果是
void reverse(int a[],int n)
{ int i,t;
for(i=0;i<n/2;i++)
{ t=a[i]; a[i]=a[n-1-i];a[n-1-i]=t;}
}
main()
{ int b[10]={1,2,3,4,5,6,7,8,9,10}; int i,s=0;
reverse(b,8);
for(i=6;i<10;i++)s+=b[i];
printf(" %d\n ",s);
}
A)22 B)10 C)34 D)30
【参考答案】A
(43)有如下程序:
long fib(int n)
{ if(n>2)return(fib(n-1)+fib(n-2));
else return(2);
}
main()
{ printf("%d\n",fib(3));}
该程序的输出结果是
A)2 B)4 C)6 D)8
【参考答案】B
(44)假定以下程序经编译和连接后生成可执行文件PROG.EXE,如果在此可执行文件所在目录的DOS提示符下键入:
PROG ABCDEFGH IJKL<回车>,则输出结果为
main( int argc, char *argv[])
{ while(--argc>0)
printf("%s",argv[argc]);
printf("\n");
}
A)ABCDEFG B)IJHL C)ABCDEFGHIJKL D)IJKLABCDEFGH
【参考答案】D
(45)以下程序有错,错误原因是
main()
{ int *p,i;char *q,ch;
p=&i;
q=&ch;
*p=40;
*p=*q;
......
}
A)p和q的类型不一致,不能执行*p=*q;语句
B)*p中存放的是地址值,因此不能执行*p=40;语句
C)q没有指向具体的存储单元,所以*q没有实际意义
D)q虽然指向了具体的存储单元,但该单元中没有确定的值,所以执行*p=*q;没有意义,可能会影响后面语句的执行结果
【参考答案】D
(46)函数 rewind 的作用是
A)使文件位置指针重新返回文件的开始位置
B)将文件位置指针指向文件中所要求的特定位置
C)使文件位置指针指向文件的末尾
D)使文件位置指针自动移至下一个字符位置
【参考答案】A
(47)设有以下说明语句
struct ex
{ int x ; float y; char z ;} example;
则下面的叙述中不正确的是
A)struct结构体类型的关键字
B)example是结构体类型名
C)x,y,z都是结构体成员名 D)struct ex是结构体类型名
【参考答案】B
(48)设有以下语句:
char x=3,y=6,z;
z=x^y<<2;
则z的二进制值是
A)00010100 B)00011011 C)00011100 D)00011000
【参考答案】B
(49)阅读以下程序及对程序功能的描述,其中正确的描述是
#include <stdio.h>
main()
{
FILE *in,*out;
char ch,infile[10],outfile[10];
printf("Enter the infile name:\n");
scanf("%s",infile);
printf("Enter the outfile name:\n");
scanf("%s",outfile);
if((in=fopen(infile,"r"))==NULL)
{
printf("cannot open infile\n");
exit(0);
}
if((out=fopen(outfile,"w"))==NULL)
{
printf("cannot open outfile\n");
exit(0);
}
while(! feof(in))fputc(fgetc(in),out);
fclose(in);
fclose(out);
}
A)程序完成将磁盘文件的信息在屏幕上显示的功能
B)程序完成将两个磁盘文件合二为一的功能
C)程序完成将一个磁盘文件复制到另一个磁盘文件中
D)程序完成将两个磁盘文件合并并在屏幕上输出
【参考答案】C
(50)C语言中,能识别处理的文件为
A)文本文件和数据块文件 B)文本文件和二进制文件
C)流文件和文本文件 D)数据文件和二进制文件
【参考答案】B
二、填空题
(1)数据的逻辑结构有线性结构和 【1】 两大类。
【参考答案】
【1】非线性结构
(2)顺序存储方法是把逻辑上相邻的结点存储在物理位置 【2】 的存储单元中。
【参考答案】
【2】相邻
(3)一个类可以从直接或间接的祖先中继承所有属性和方法。采用这个方法提高了软件的 【3】 。
【参考答案】
【3】可重用性
(4)软件工程研究的内容主要包括: 【4】 技术和软件工程管理。
【参考答案】
【4】软件开发
(5)关系操作的特点是 【5】 操作。
【参考答案】
【5】集合
(6)下面程序是指从终端读入的20个字符放入字符数组中,然后利用指针变量输出上述字符串,请填空。
#include <stdio.h>
main ()
{ int i; char s[21],*p;
for (i=0;i<20;i++)
s[i]=getchar ();
s[i]=【6】;
p =【7】
while (*p)putchar (【8】);
}
【参考答案】
【6】′\0′ 【7】s 【8】*p++
(7)以下程序将数组a的4个元素和数组b的6个元素写到名为lett.dat的二进制文件中,请填空。
#include <stdio.h>
main ()
{ FILE *fp;
char a[4]="1234",b[6]="abcedf";
if((fp=fopen("【9】","wb"))=NULL)exit(0);
fwrite(a,sizeof(char),4,fp);
fwrite(b,【10】,1,fp);
fclose(fp);
}
【参考答案】
【9】lett.dat 【10】6*sizeof(char)
(8)在C语言中(以16位PC机为例),一个float型数据在内存中所占的字节数为4;一个double型数据在内存中所占的字节数为【11】。
【参考答案】
【11】8
(9) 以下程序输出的结果是【12】。
main()
{ int a=5,b=4,c=3,d;
d=(a>b>c);
printf("%d\n",d);
}
【参考答案】
【12】0
(10)以下函数的功能是求出能整除x且不是偶数的各整数,并按从小到大的顺序放在pp所指的数组中,这些除数的个数通过形参n返回。
例如,若x中的值为30,则有4个数符合要求,它们是1,3,5,15。
请按题意,完成填空。
试题程序:
#include <conio.h>
#include <stdio.h>
void fun (int x, int pp[], int *n)
{ int i,j=0;
【13】
if(x%i==0)pp[j++]=i;
【14】;
}
main ()
{ int x,aa[1000], n, i ;
clrscr();
printf("\nPlease enter an integer number : \n "); scanf ("%d ", &x);
fun (x, aa, &n);
for (i=0 ; i<n ; i++)
printf ("%d ", aa [i]);
printf ("\n ");
}
【参考答案】
【13】for (i=1 ; i<x ; i+=2) 【14】*n=j
(11)#include <conio.h>
#include <stdio.h>
int fun(int *s, int t, int *k)
{ int i;
*k=0;
【15】
if(s[*k]<s[i])*k=i;
return【16】;
}
main()
{
int a[10]={ 876,675,896,101,
301,401,980,431,451,777},k;
clrscr();
fun(a, 10, &k);
printf("%d, %d\n ", k, a[k]);
}
【参考答案】
【15】for (i=0 ; i<t ; i++) 【16】0
(12)mystrlen函数的功能是计算str所指字符串的长度,并作为函数值返回。请填空。
int mystrlen(char *str)
{ int i;
for(i=0;【17】!= ′\0′;i++);
return(i);
}
【参考答案】
【17】*(str+i)或str[i]
(13)以下程序的输出结果为【18】。
#define JFT(x)x*x
main()
{ int a, k=3;
a=++JFT(k+1);
printf("%d",a);
}
【参考答案】
【18】9
(14)以下定义的结构体类型拟包含两个成员,其中成员变量info用来存入整形数据;成员变量link是指向自身结构体的指针,请将定义补充完整。
struct node
{ int info;
【19】link;
};
【参考答案】
【19】struct node *
(15)设有以下结构体类型:
struct st
{ char name[8];
int num;
float s[4];
}student[50];
并且结构体数组student中的元素都已有值,若要将这些元素写到硬盘文件fp中,请将以下fwrite语句补充完整:
fwrite(student,【20】,1,fp);
【参考答案】
【20】sizeof(struct st)*50
|