全国2003年4月高等教育自学考试计算机软件基础(一)试题
课程代码:02243
第一部分 选择题 (共40分)
一、单项选择题(本大题共40小题,每小题1分,共40分)
在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无分。
1.C语言正确的类型说明符是( )
A.Char B.char
C.real D.string
2.C语言中,已知:int i,j,k;下列运算符使用错误的是( )
A.i++ B.j--
C.++k D.8++
3.下列叙述中错误的描述是( )
A.一个C源程序至少包括一个函数。
B.一个C源程序可以包含一个main()函数和其它函数。
C.主函数和其它函数可以互相调用。
D.C程序的基本单位是函数。
4.C语言中,字符串在计算机中的结束标志是( )
A.空格 B.换行
C.′/0′ D.′/t′
5.C语言中,s=i++;等价于( )
A.s=i;i=i+1; B.i=i+1;s=i;
C.s=i;s=s+1; D.s=i;s=i+1;
6.C语言中,赋值语句的赋值号(“=”)左边( )
A.可以是常数 B.可以是变量名
C.只能是表达式 D.可以是常数或表达式
7.下列程序的运行结果是( )
#include
#include
main()
{ int a=3;
a=3+a%4+sqrt(9);
a=a/3;
a++;
printf(″%d/n″,a);
}
A.2 B.2.6
C.3 D.4
8.下列程序的运行结果是( )
#include
main()
{ int a=15;
printf(″%d/n″,(a>10?40:50));
}
A.10 B.15
C.40 D.50
9.代数式 ,其错误的C语言表达式是( )
A.a*d/b/c*3 B.3*a*d/b*c
C.a/b*d/c*3 D.3*a*d/b/c
10.已知:int u=010,v=0x10,w=10;则printf(″%d,%d,%d/n″,u,v,w);执行后的输出结果是( )
A.8,8,10 B.8,10,10
C.8,16,10 D.10,10,10
11.C语言中,下列运算符优先级最高的是( )
A.>= B.==
C.!= D.&&
12.C语言中,if和switch语句属于( )
A.说明语句 B.注释语句
C.程序流程控制语句 D.顺序执行语句
13.已知:int a=1,b=2,c=3,d=4;则表达式a>b?a:(c>d?c:d)的值是( )
A.1 B.2
C.3 D.4
14.下列程序段的输出结果是( )
int a=2,b=3,c=4,e=5;
e=a+b>c && b==c;
printf(″e=%d″,e)
A.e=0 B.e=1
C.e=4 D.e=5
15.C语言中,语句while后一对圆括号中的表达式( )
A.只能是逻辑表达式
B.只能是关系表达式
C.只能是关系表达式或逻辑表达式
D.可以是任意表达式
16.C语言中,下列只循环一次的do-while循环是( )
A.do B.do
{; {;
} while(5); }while(k=0);
C.do D.int k=5;
{; do
} while(-1); {k--;
}while(k);
17.C语言程序中,for循环语句中的表达式2为一非零常数且循环体内无break语句及goto语句,则循环体的执行次数为( )
A.0次 B.表达式2表示的非零常数
C.不确定,由循环体决定 D.无穷次
18.下列程序的运行结果是( )
#include
mian()
{ int x=3,y=6,z=0;
while(x++!=(y=y-1))
{ z++;
if(y
}
printf ("x=%d,y=%d,z=%d",x,y,z);
}
A.x=4,y=4,z=1 B.x=5,y=4,z=1
C.x=5,y=4,z=2 D.x=5,y=5,z=1
19.C语言中,下列定义数组的正确语句是( )
A.char a[5],b[7]; B.char a[];
C.int b[″7″]; D.int j=3;int a[j];
20.已知:char a[]={′0 ′, ′0 ′, ′0 ′, ′0 ′, ′0 ′, ′0 ′, ′0 ′, ′0 ′};则( )
A.该数组元素个数为7 B.该数组长度不确定
C.该数组元素的最大下标是7 D.该数组至少有9个数组元素
21.已知:char str[]=″/t/v/56/7 morning″;则strlen(str)的值是( )
A.8 B.11
C.16 D.17
22.已知:char a[]=″abcdef″;char b[]={′a′,′b′,′c′,′d′,′e′,′f′};则( )
A.a数组的长度比b数组长 B.a数组和b数组长度相等
C.a数组的长度比b数组短 D.a数组和b数组完全相同
23.下列程序的运行结果是( )
#include
int mul(int x)
{int z;
z=x*x;
return z;
}
main()
{int a=10,k=2,m=1;
a=a/(mul(k+m)/mul(k+m));
printf(″%d/n″,a);
}
A.0 B.1
C.9 D.10
24.关于C语言函数,正确的叙述是( )
A.实参与形参的类型应一致,当形参为整型时,实参也必须为整型。
B.函数可以用void定义为“无类型”,函数不返回值。
C.函数如有return语句,则return语句中表达式的类型必须和函数类型一致。
D.函数类型为实型时,类型标识符可以省略。
25.能正确定义指针变量cp的C语言语句是( )
A.char *cp=&′0′; B.char cp;
C.char cp=″abc″; D.char ch,*cp=&ch;
26.指针变量作为形参时,下列错误的叙述是( )
A.实参可以为同类型指针变量。
B.形参的变化将改变相应实参的地址。
C.实参可以为同类型数组变量。
D.可以实现函数间多个数据的传递。
27.已知:int a[3],*ip;使ip指向a[1]的正确语句是( )
A.ip=&a[1]; B.*ip=a[1];
C.*ip=&a[1]; D.ip=a[1];
28.已知:char *cp=″12345″;则printf(″%s″,++cp);的输出结果是( )
A.1 B.2
C.2345 D.12345
29.如果磁盘上没有文本文件test.dat,执行下列程序段后,其结果是( )
FILE *fp;
fp=fopen(″test.dat″,″r″);
A.系统打开文件test.dat,且fp的值不是NULL。
B.系统建立新文件test.dat。
C.fp的值是NULL。
D.fp的值不确定。
30.对文本文件正确的叙述是( )
A.文本文件占用存储空间较少,但不能直接在屏幕上原样显示。
B.文本文件可以在屏幕上原样显示,但占用存储空间较大。
C.文本文件占用存储空间大且不能直接在屏幕上原样显示。
D.文本文件占用存储空间较小且可以直接在屏幕上原样显示。
31.FoxPro中,内存变量文件的扩展名是( )
A.DBF B.IDX
C.BAK D.MEM
32.FoxPro中,命令”TOTAL ON 单位 TO XM”中的XM是( )
A.内存变量名 B.字段变量名
C.数据库文件名 D.文本文件名
33.FoxPro中,已知内存变量A=″Fox □″,B=″Pro″,则函数LEN(A-B)的值是(注:□表示空格)( )
A.3 B.4
C.6 D.7
34.FoxPro中,执行命令FNAME=″ST″和USE &FNAME后,打开的数据库文件是( )
A.&FNAME.DBF B.FNAME.DBF
C.ST.DBF D.ST.IDX
35.现有P1,P2两个过程,要根据N(1或2)值的不同调用相应的程序,下列四个程序段中会出现错误的程序段是( )
A.CLEAR B.INPUT TO N
SET TALK OFF DO CASE
ACCEPT TO N CASE N=1
H=′P′+N DO P1
DO H OTHERWISE
SET TALK ON DO P2
RETURN ENDCASE
C.INPUT TO N D. ACCEPT TO N
IF N=1 DO CASE
DO P1 CASE N=′1′
ELSE DO P1
DO P2 CASE N=′2′
ENDIF DO P2
ENDCASE
36.已知学生记录描述为:
struct student
{ int no;
char name[20],sex;
struct
{ int year,month,day;
} birth;
};
struct student s;
设变量s中的“生日”是“1984年11月12日”,对“birth”正确赋值的程序段是( )
A.year=1984;month=11;day=12;
B.s.year=1984;s.month=11;s.day=12;
C.birth.year=1984;birth.month=11;birth.day=12;
D.s.birth.year=1984;s.birth.month=11;s.birth.day=12;
37.已知下列定义语句,则对pup中成员sex的正确引用是( )
struct pupil
{ char name[20];
int sex;
} pup,*p=&pup;
A.p.pup.sex B.p->pup.sex
C.(*p).pup.sex D.(*p).sex
38.入队运算( )
A.只能在队头进行。 B.只能在队尾进行。
C.可以在队头或队尾进行。 D.可以在队列中间的任意位置进行。
39.假定用上界为m的向量s(1∶m)存储栈,设栈顶指针top总是指向栈顶元素,要将x入栈的操作步骤是( )
A.top=top+1;s[top]=x; B.s[top]=x;top=top+1;
C.top=(top+1)%m;s[top]=x; D.s[top]=x;top=(top+1)%m;
40.将递归算法转化为非递归算法通常使用的数据结构是( )
A.栈 B.队列
C.链表 D.数组
第二部分 非选择题 (共60分)
二、填空题(本大题共10个空,每空1分,共10分)
请在每小题的空格中填上正确答案。错填、不填均无分。
41.C语言中,唯一的三目运算符是_______,而&&是_______目运算符。
42.执行下列程序段后,i的值是_______,j的值是_______。
int i,j=5;
for(i=0;i<5;i++)
j=j+i;
43.下列程序的功能是将字符串″country″纵向显示在屏幕上。填空完成程序。
#include
main()
{ static char a[]=″country″;
int i;
for(i=0;a[i]!=′/0′;_______)
printf(″%c/n″,_______);
}
44.FoxPro支持三种工作方式,它们是_______工作方式、_______工作方式和菜单工作方式。
45.C语言中,要动态申请内存空间可使用函数_______;要释放动态空间可使用函数_______。
三、阅读程序题(本大题共8小题,每小题4分,共32分)
46.写出下列程序的运行结果。
#include
main()
{ int a,b=0,m=3,n=2;
a=(m>5) && ((b=3)>n);
printf(″a=%d,b=%d″,a,b);
}
结果:
47.下列程序的功能是输出1至100之间的自然数中各位数字的乘积大于各位数字之和的那些数,填空完成程序。(例如:58,各位数字的乘积为5*8=40,各位数字之和为5+8=13)
#include
main()
{ int n,k,s,m;
for (n=1;n<=100;n++)
{ k=1;s=0;
m=n;
while (_______)
{ k*=m%10;
s+=m%10;
m=m/10;
}
if (_______) printf(″%d″,n);
} }
48.下列程序的功能是:从键盘输入一个数值插入有序数组,插入后仍保持数组元素值有序。填空完成程序。
#include
main()
{ int a[11]={2,4,6,8,10,12,14,16,18,20},i,x;
printf(″please input x:″);
scanf(″%d″,&x);
for (i=9;i>=0;i--)
{ if (a[i]>x)
a[i+1]=a[i];
else
{ a[i+1]=x;
_______;
}
}
if(_______)a[0]=x;
for (i=0;i<11;i++)
printf(″%d,″,a[i]);
}
49.写出下列fun函数的功能。
double fun(x,n)
int x[],n;
{ float sum=0.0;
int c=0,i=0;
while(i
{if(x[i]>0)
{sum=sum+x[i];c++;}
i++;
}
sum=sum/c;
return sum;
}
函数功能:
50.写出下列程序的运行结果。
#include
main()
{
int a[]={1,2,3,4,5},*ip=&a[1],av;
av=*ip++;
printf(″%d,%d″,av,*ip);
}
结果:
51.下列程序的功能是:对数据库R.DBF中“笔试”与“机试”成绩字段的字段值均在85分及其以上者,在“公布成绩”字段填入“优秀”,两门成绩有一门不够60分或两门均不够60分者填入“不合格”,其它情况填入“合格”。填空完成程序。
已知数据库结构如下:
编号(N,4)
姓名(C,8)
笔试(N,3)
机试(N,3)
公布成绩(C,6)
SET TALK OFF
USE R
__________
DO CASE
CASE 笔试>=85.AND.机试>=85
REPLACE 公布成绩 WITH ′优秀′
CASE 笔试>=60.AND.机试>=60
REPLACE 公布成绩 WITH ′合格′
CASE 笔试<60.OR.机试<60
REPLACE 公布成绩 WITH ′不合格′
ENDCASE
__________
DISPLAY ALL
USE
SET TALK ON
RETURN
52.下列函数的功能是求链表长度。填空完成程序。
struct node
{ char ch;
struct node *link;
};
str(struct node *p)
{ int __________;
while(p!=NULL)
{__________;
count++;
}
return(count);
}
53.运行下列程序,分别输入11和20,写出输出结果。
#include
int fun(m)
int m;
{ int i,k;
for(i=m+1;;i++)
{ for(k=2;k
if(i%k==0)
break;
if(k>m)
return i;}
}
main()
{ int n;
printf(″/n Please Enter n:″);
scanf(″%d″,&n);
printf(″%d/n″,fun(n));
}
当输入11时,输出结果:
当输入20时,输出结果:
四、编写程序题(本大题共2小题,每小题9分,共18分)
54.编写C语言程序,其中fun函数的功能是:求n以内(不包括n)同时能被3与7整除的所有自然数之和的平方根;主函数的功能是输入n的值,调用fun函数,并输出结果。
55.已知FoxPro数据库STUDENT.DBF由学号(C,6)、姓名(C,8)、性别(C,2)及成绩(N,3)四个字段组成,其部分内容及结构如下所示:
STUDENT.DBF
学号 姓名 性别 成绩
990101 张华 女 90
990102 王明 男 70
…… …… …… ……
990203 雷利 女 86
990204 朱雨 女 85
990205 周天 男 64
990206 李江 男 78
…… …… …… ……
编写FoxPro程序完成以下功能:
(1)将最低成绩及最高成绩分别存入数组元素CHJ(1)及CHJ(2)中;
(2)利用循环结构及?命令按成绩的升序逐个输出所有高于平均成绩的性别为女的记录的学号、姓名和成绩。