一、选择题(每小题1分,共40分)
1、能正确表示“当x的取值在[1,10]和[100,11O]范围内为真,否则为假”的表达式是( )。
A.(x>=1)&&(x<=10)&&(x>=100)&&(X<=110)
B.(x>=1)&&(x<=10)||(x>=100)||(x<=110)
C.(x>=1)&&(x<=10)||(x>=100)&&(x<=110)
D.(x>=1)||(x<=10)&&(x>=100)||(x<=110)
2、下述程序用来输出两个字符串前7个字符中对应相等的字符及其位置号,则程序空白上应该填写的是( )。
#include
maln()
{char s1[]=”chinese”,s2[]=”japanese”;
int i;
{or(i=0;s1[i]!='\0'&&s2[i]!='\0';i++)
if(s1[i]==s2[i]&&i<7)
A.putchar(s2[i]);putchar(i)
B.puts(sl[i],i)
C.print[(”%c%d\n”,s2[i],i)
D.printf(”%c”,sl[i]);print[(”%d\n”,i)
3、有以下程序:
#inrllldp
maln()
{ char ch;
oh='A'+'5'-'3':
printf(”%d,%c\n”,ch,ch);
}
程序的输出结果是( )。
A.67,C
B.B,C
C.c,D
D.不确定的值
4、下列说法正确的是( )。
A.在c语言中,可以使用动态内存分配技术定义元素个数可变的数组
B.在C语言中,数组元素的个数可以不确定,允许随机变动
C.在C语言中,数组元素的数据类型可以不一致
D.在C语言中,定义一个数组后,就确定了它所容纳的元素的个数
5、
下列叙述中错误的是( )。
A.一种数据的逻辑结构可以有多种存储结构
B.数据的存储结构与数据的处理效率无关
C.数据的存储结构与数据的处理效率密切相关
D.数据的存储结构在计算机中所占的空间不一定是连续的
6、有以下程序:
main()
{ int x,i;
for(i=l;i<=50;i++)
{x=i;
if(x%2=0)
if(x%3=0)
if(x%7=0)
printf(”%d,i)”;
}
}
输出结果是( )。
A.28
B.27
C.42
D.41
7、有以下函数:
char fun(char*p)
{return P;}
该函数的返回值是( )。
A.无确功的值
B.形参P中存放的地址值
C.一个临时存储单元的地址
D.形参P自身的地址值
8、有以下程序:
#include
main()
{ int y=10;
for(;y>0;y——)if(y%3==0)
{printf(”%d”,——y);continue;
)
}
程序的输出结果是( )。
A.741
B.852
C.963
D.875421
9、在一个C语言源程序文件中所定义的全局变量,其作用域为( )。
A.所在文件的全部范围
B.所在程序的全部范围
C.所在函数的全部范围
D.由具体定义位置和extern说明来决定范围
10、下列程序的输出结果是( )。
#include
void p(int*x)
{printf(”%d”,++*x);
}
void main()
{ int y=3;
p(&y);
}
A.3
B.4
C.2
D.5
11、 有下列程序:
main()
{char p[]={'a','b','c'),q[]=”abc”;
printf(”%d%d\n”,sizeof(p),sizeof(q));
}
程序运行后的输出结果是( )。
A.4 4
B.3 3
C.3 4
D.4 3
12、 设有下列程序段:
char str[]="HelloWorld":
char*ptr;
ptr=str ;
执行上面的程序段后,*(ptr+10)的值为( )。
A.'\O'
B.'0'
C.不确定的值
D.'0'的地址
13、 链表不具有的特点是( )。
A.不必事先估计存储空间
B.町随机访问任意元素
C.插入、删除不需要移动元素
D.所需空间与线性表长度成正比
14、有以下程序:
main()
{ union
{char ch[2];
im d;
d一0x4321;
printf(”%x,%x\n”,s.ch[O],s.ch[1]);
)S;
在16位编译系统上,程序执行后的输出结果是( )。
A.21,43
B.43,21
C.43,00
D.21,00
15、 有以下程序:
void funl(char*p)
{ char*q;
q=p
while(*q!='\0')
{(*q)++;q++;)
)
main()
{char a[]=(”Program”),“P;
p=&a[3];funl(p);
printf(”%s\n”,a);
)
程序执行后的输出结果是( )。
A.Prohsbn
B.Prphsbn
C.Prqgsbn
D.Program
16、 设x=011050,则x=x801252的值是( )。
A.0000001000101000
B.11111101000l1001
C.0000001011100010
D.1100000000101000
17、 若ch为char型变量,k为int型变量(已知字符a的ASCIl码是97),则执行下列语句后输出的结果为( )。
oh='b';
k=10;
printf(”%x,%0,”,ch,ch,k);
printf(“k=%%d\n”,k);
A.因变量类型与格式描述符的类型不匹配,输出无定值
B.输出项与格式描述符个数不符,输出为0或不定值
C.62,142,k=%d
D.62,142,k=%10
18、以下程序的输出结果是( )。
main()
{int x=0.5;char z='a';
printf(”%d\n”,(x&1)&&(z
A.0
B.1
C.2
D.3
19、 执行下述程序后,输出的结果是( )。
#include
#define S(X) X*X
void main()
{ int a=9,k=3,m=2;
a/=S(k+m)/s(k+m);
printf(”%d”,a);
}
A.1
B.4
C.9
D.0
20、 下列程序的运行结果为( )。
#include
main()
{ struct date
{ int year,month,day;
)today;
printf(”%d\n”,sizeof(struct date));
A.8
B.6
C.10
D.12
21、 软件生命周期中,花费最多的阶段是( )。
A.详细设计
B.软件编码
C.软件测试
D.软件维护
22、若有定义“float a=25,b,*p=&b;”,则下列对赋值语句“*p=a;”和“p=&a;”的正确解释为( )。
A.两个语句都是将变量a的值赋予变量P
B.*p=a是使P指向变量a,而p=&a是将变量的值赋予变量指针P
C.*p=a是将变量a的值赋予变量b,而&a是使P指向变量a
D.两个语句都是使P指向变量a
23、 在Internet中,域名服务器的主要功能是实现( )的转换。
A.IP地址到域名(主机名字)
B.域名到IP地址
C.主机IP地址和路由器IP地址之间
D.路由器IP地址之间
24、 若有以下定义:
char a;int b;
float C;double d;
则表达式a*b+b-c值的类型为( )。
A.float
B.int
C.char
D.double
25、 以下函数返回a所指数组中最小的值所在的下标值:
fun(int*a,int n)
{ int i,j=0,P;
P=j;
for(i=j;i
if(aEi]
}
在下划线处应填入的是( )。
A.i=P
B.a[p]=a[i]
C.p=j
D.p=i
26、 若有以下程序段,W和k都是整型变量:
:
w=k:
LB:if(w==0)go to LE;
W——:
printf(”*”)
goto LB:
LE;
则不能与上面程序段等价的循环语句是( )。 J
A.for(w=k;w!—0;w——)printf(”*”);
B.for(w=k;W;——w)printf(”*”);
C.w=k;
while(w——!=O)printf(”*”);
D.w=k:
W++;do{w——;printf(”*”);)while(w!=O);
27、 有以下结构说明和变量定义,指针p、q、r分别指向链表中的3个连续结点。
struct node
{int data;struct node*next;}*p,。q,*r;
现要将q所指结点从链表中删除,同时要保持链表的连续,以下不能按要求完成操作的语句是( )。
A.P->next=q->next;
B.p-next=p->next->next;
C.p->next=r;
D.p=q->next;
28、 若有以下的说明和语句,则在执行for语句后,*(*(pt+1)+2)表示的数组元素是( )。
im t[3][3],*pt[3],k;for(k=0;k<3;k++)pt[k]-&t[k][o];
A.t[2]Eo]
B.t[2][2]
C.tell[2]
D.t[2][1]
29、 设x=015,则x=x^017的值是( )。
A.00001111
B.11111101
C.00000010
D.1 1000000
30、 若有定义语句:int a[2][3],*p[3];,则以下语句中正确的是( )。
A.p=a;
B.p[o]=a;
C.p[o]=&a[1][2];
D.p[l]=&a;
31、 利用fseek函数可实现的操作是( )。
A.实现文件的顺序读写
B.改变文件的位置指针
C.实现文件的随机读写
D.以上答案均正确
32、 有以下程序:
#include
main()
{int aaE33E33-{(2),{4),(6)},i,*p=&.aa[o][o];
for(i=0;i<2;i++)
{i==0)aa[i][i+1]=*p+1;
else++P:
printf(”%d”,*p);
}
printf(”\n”);
}
程序的输出结果是( )。
A.23
B.26
C.33
D.36
33、 若变量a、b、x、i都已正确定义并赋值,则以下符合C语言语法的表达式是( )。
A.a+=a-=(b=4)*(a=3)
B.x%(-3);
C.a=a*3=2
D.v=float(i)
34、 下列程序的输出结果是f )。
int f1(int x,int y){return x>y?x:y;)
int f2(int x,int y){return x>y?Y:x;)
main()
{ int a=4,b=3,c=5,d=2,e,f,g;
e=f2(f1(a,b),f1(c,d));
f=f1(f2(a,b),f2(c,d));
g=a+b+c十d-e-f;
printf(”%d,%d,%d\n”,e,f,g);)
A.4,3,7
B.3,4,7
C.5.2,7
D.2,5,7
35、判断char型变量C是否为大写字母的最简单且正确的表达式是( )。
A.'A'<=c<='Z'
B.(c>='A')||(c<='Z')
C.('A'<=c)AND('Z'>=c)
D.(c>='A')&&(c<='Z')
36、算法的空间复杂度是指( )。
A.算法程序的长度
B.算法程序中的指令条数
C.算法程序所占的存储空间
D.算法执行过程中所需要的存储空间
37、 定义结构体数组:
struct stu
{ int hum;
char nameE20];
}X[5]={1,”1, "LI",2,”ZHAO”,3,”WANG”,4,”
ZHANG”,5,”LIU”);
for(i=1;i<5;i++)
printf(”%d%c”,x[i].hum,x[i].name[2]);
以上程序段的输出结果为( )。
A.2A3N4A5U
B.1I2A3H4I
C.1A2N3A4U
D.2H3A4H5I
38、 有以下程序:
#include
StrOCt stu
{ int hum;
char name[10];
int age;)
void fun(struct stu*p)
(print[(”%s\n”,(*p).name);)
main()
(
struct stu students[3]-}{9801.”Zhang”,20},
{9802,”Wang”,19},{9803,”Zhao”,18}}
fun(students+2):
}
输出的结果是( )。
A.Zhang
B.Zhao
C.Wang
D.18
39、 设变量a、b、e、d和y都已正确定义并赋值。若有以下if语句:
if(a
if(c==d) y=0;
else y=1:
该语句所表示的含义是( )。
A.y=0,a
B.y=0,a
y=1,a≥b y一1,a≥b且c≠d
C.y=0,a
D.y=0,a
y=1,a
40、 有下列函数定义:
fun(float h)
{ printf(”%f,%f\n”,h,h*h);)
该函数的类型是( )。
A.int类型
B.float类型
C.void类型
D.函数无类型说明,定义有错二、程序填空题(共18分)
41、
请补充函数proc(),该函数的功能是计算下面公式SN的值:
例如,当N=20时,SN=29.031674。
注意:部分源程序给出如下。
请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的横线上填入所编写的若干表达式或语句。
试题程序:
#include
#include
#include
double proc(int n)
{
double s=1.0,s1=0.0;
int k;
for(【1】 ;k<=n;k++)
{
s1=s:
【2】 ;
return 【3】 ;
}
void main()
{
int k=0;
double sum:
system(”CLS”):
printf(”\nPlease input N=”):
scanf(”%d”,&k);
sum=proc(k):
printf(”\nS=%Lf”.sum);
}
三、程序改错题(共24分)
42、
下列给定的程序中,函数proc()的功能是:用选择法对数组中的m个元素按从小到大的顺序进行排序。
例如,排序前的数据为:11 32 -5 2 14则排序后的数据为:-5 2 11 14 32
请修改程序中的错误,使它能得到正确结果。
注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include
#define M 20
void proc(int a[],int n)
{
int i,j,t,P;
//****found****
for(j=0;j
{
P=j;
for(i=j;i
if(a[i]
p=i;
t=a[p]];
a[p]=a[j];
//****found****
a[p]=t:
}
}
void main()
{
int arr[M]={11,32,-5,2,14).i,m=5;
printf(”排序前的数据:”);
for(i=0;i
printf(”%d”,arr[i]):
printf(”\n”);
proc(arr,m):
printf(”排序后的顺序:”);
for(i=0;i
printf(”%d”,arr[i]);
printf(”\n”);
}
}
四、程序设计题(共18分)
43、
请编写函数proc(),其功能是:将sir所指字符串中下标为偶数的字符删除.串中剩余字符形成的新串放在t所指数组中。
例如,当sir所指字符串中的内容为abcdefg。则在t所指数组中的内容应是bdf。
注意:部分源程序给出如下。
请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填人所编写的若干语句。
试题程序:
#include
#include
#include
#include.%strin9.h>
void proc(char*str,char t[])
{
)
void main()
{
,、hat str[100].t[100];
system(”CLS”):
printf(”\nPlease enter string str:”);
scanf(”%S”.str):
proc(sir,t);
printl'(”\nThe result is:%s\n”,t);
)