03二级c语言全真题06.docx
《03二级c语言全真题06.docx》由会员分享,可在线阅读,更多相关《03二级c语言全真题06.docx(15页珍藏版)》请在冰豆网上搜索。
![03二级c语言全真题06.docx](https://file1.bdocx.com/fileroot1/2023-1/27/8a11777b-5726-47b6-baab-61e370bdd59b/8a11777b-5726-47b6-baab-61e370bdd59b1.gif)
03二级c语言全真题06
201103二级c语言模拟试题集第六套
一、选择题
在下列各题的A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确的选项涂写在答题卡相应位置上,答在试卷上不得分。
(1)下列选项中不符合良好程序设计风格的是
A)源程序要文档化
B)数据说明的次序要规范化
C)避免滥用goto语句
D)模块设计要保证高耦合、高内聚
(2)软件开发模型包括
Ⅰ、瀑布模型Ⅱ、扇形模型Ⅲ、快速原型法模型Ⅳ、螺旋模型
A)Ⅰ、Ⅱ、Ⅲ
B)Ⅰ、Ⅱ、Ⅳ
C)Ⅰ、Ⅲ、Ⅳ
D)Ⅱ、Ⅲ、Ⅳ
(3)软件开发的结构化生命周期方法将软件生命周期划分成
A)定义、开发、运行维护
B)设计阶段、编程阶段、测试阶段
C)总体设计、详细设计、编程调试
D)需求分析、功能定义、系统设计
(4)单个用户使用的数据视图的描述称为
A)外模式
B)概念模式
C)内模式
D)存储模式
(5)数据结构作为计算机的一门学科,主要研究数据的逻辑结构、对各种数据结构进行的运算,以及
A)数据的存储结构
B)计算方法
C)数据映像
D)逻辑存储
(6)设有关系R和S,关系代数表达式为R-(R-S)表示的是
A)R∩S
B)R-S
C)R∪S
D)R÷S
(7)下列叙述中正确的是
A)一个算法的空间复杂度大,则其时间复杂度也必定大
B)一个算法的空间复杂度大,则其时间复杂度必定小
C)一个算法的时间复杂度大,则其空间复杂度必定小
D)上述三种说法都不对
(8)对长度为n的线性表进行顺序查找,在最坏情况下所需要的比较次数为
A)log2n
B)n/2
C)n
D)n+1
(9)数据库技术的根本目标是要解决数据的
A)存储问题
B)共享问题
C)安全问题
D)保护问题
(10)若某二叉树的前序遍历访问顺序是abdgcefh,中序遍历访问顺序是dgbaechf,则其后序遍历的结点访问顺序是
A)bdgcefha
B)gdbecfha
C)bdgaechf
D)gdbehfca
(11)下列叙述中错误的是
A)一个C语言程序只能实现一种算法
B)C程序可以由多个程序文件组成
C)C程序可以由一个或多个函数组成
D)一个C函数可以单独作为一个C程序文件存在
(12)下面四个选项中,均是不正确的八进制数或十六进制数的选项是
A)0160x8f018
B)0abc0170xa
C)010-0x110x16
D)0a127ff-123
(13)以下叙述不正确的是
A)一个C源程序可由一个或多个函数组成
B)一个C源程序必须包含一个main函数
C)C程序的基本组成单位是函数
D)在C程序中,注释说明只能位于一条语句的后面
(14)设变量a是int型,f是float型,i是double型,则表达式10+′a′+i*f值的数据类型为
A)int
B)float
C)double
D)不确定
(15)现有格式化输入语句,scanf("x=%d],sum]y=%d,line]z=%dL",&x,&y,&z);,已知在输入数据后,x,y,z的值分别是12,34,45,则下列选项中是正确的输入格式的是
A)12,34,45
B)x=12,y=34,z=45
C)x=12C,sumy=34,z=45
D)x=12],sum]y=34,line]z=45
[注]:
"]"表示空格,表示回车
(16)已知各变量的类型说明如下:
intk,a,b;
unsignedlongw=5;
doublex=1.42;
则以下不符合C语言语法的表达式是
A)x%(-3)
B)w+=-2
C)k=(a=2,b=3,a+b)
D)a+=a-=(b=4)*(a=3)
(17)有以下程序
fun(intx)
{intp;
if(x==0||x==1)return(3);
p=x-fun(x-2);
returnp;
}
main()
{printf("%d\n",fun(7));}
执行后的输出结果是
A)7
B)3
C)2
D)0
(18)下列程序段中,不能正确赋值的是
A)char*p,ch;
p=&ch;
scanf("%c",p)
B)char*p;
p=(char*)malloc
(1);
scanf("%c",p);
C)char*p;
*p=getchar();
D)char*p,ch;
p=&ch;
*p=getchar();
(19)在16位编译系统上,若有定义inta[]={10,20,30},*p=&a;,当执行p++;后,下列说法错误的是
A)p向高地址移了一个字节
B)p向高地址移了一个存储单元
C)p向高地址移了两个字节
D)p与a+1等价
(20)若运行以下程序时,从键盘输入ADescriptor(表示回车),则下面程序的运行结果是
#include
main()
{charc;
intv0=1,v1=0,v2=0;
do{switch(c=getchar())
{case'a':
case'A':
case'e':
case'E':
case'i':
case'I':
case'o':
case'O':
case'u':
case'U':
v1+=1;
default:
v0+=1;v2+=1;}}while(c!
='\n');
printf("v0=%d,v1=%d,v2=%d\n",v0,v1,v2);}
A)v0=7,v1=4,v2=7
B)v0=8,v1=4,v2=8
C)v0=11,v1=4,v2=11
D)v0=13,v1=4,v2=12
(21)设x,y和z都是int型变量,且x=3,y=4,z=5,则下面表达式中,值为0的表达式是
A)x&&y
B)x<=y
C)x||++y&&y-z
D)!
(xz||1)
(22)若有定义intw[3][5];,则以下不能正确表示该数组元素的表达式是
A)*(*w+3)
B)*(*w+1)[4]
C)*(*(*w+1))
D)*(&w[0][0]+1)
(23)设有程序段
intk=10;
while(k=0)k=k-1;
则下面描述中正确的是
A)while循环执行10次
B)循环是无限循环
C)循环体语句一次也不执行
D)循环体语句执行一次
(24)若有以下函数首部
intfun(doublex[10],int*n)
则下面针对此函数的函数声明语句中正确的是
A)intfun(doublex,int*n);
B)intfun(double,int);
C)intfun(double*x,intn);
D)intfun(double*,int*);
(25)函数的值通过return语句返回,下面关于return语句的形式描述错误的是
A)return表达式;
B)return(表达式);
C)一个return语句可以返回多个函数值
D)一个return语句只能返回一个函数值
(26)有以下程序
main()
{inti;
for(i=1;i<=40;i++)
{if(i++%5==0)
if(++i%8==0)printf("%d",i);
}
printf("\n");
}
执行后的输出结果是
A)5
B)24
C)32
D)40
(27)下列函数的运行结果是
main()
{inti=2,p;
intj,k;
j=i;k=++i;p=f(j,k);
printf("%d",p);}
intf(inta,intb)
{intc;
if(a>b)c=1;
elseif(a==b)c=0;
elsec=-1;
return(c);}
A)-1
B)1
C)2
D)编译出错,无法运行
(28)对下述程序的判断中,正确的是
#include
voidmain()
{char*p,s[128];
p=s;
while(strcmp(s,"End"))
{printf("Inputastring:
");gets(s);
while(*p)
putchar(*p++);}}
A)此程序循环接收字符串并输出,直到接收字符串"End"为止
B)此程序循环接收字符串,接收到字符串"End"则输出,否则程序终止
C)此程序循环接收字符串并输出,直到接收字符串"End"为止,但因为代码有错误,程序不能正常工作
D)此程序循环接收字符串并将其连接在一起,直到接收字符串"End"为止,输出连接在一起的字符串
(29)下列关于字符串的说法中错误的是
A)在C语言中,字符串是借助于字符型一维数组来存放的,并规定以字符'\0'作为字符串结束标志
B)'\0'作为标志占用存储空间,计入串的实际长度
C)在表示字符串常量的时候不需要人为在其末尾加入'\0'
D)在C语言中,字符串常量隐含处理成以'\0'结尾
(30)阅读下面程序,则执行后的结果是
#include"stdio.h"
main()
{charstr[]="tomeetme",*p;
for(p=str;pprintf("\n");}
A)tomeetme
B)tmem
C)oete
D)tome
(31)若要求定义具有10个int型元素的一维数组a,则以下定义语句中错误的是
A)#defineN10
inta[N];
B)#definen5
inta[2*n];
C)inta[5+5];
D)intn=10,a[n];
(32)对以下说明语句的正确理解是
inta[10]={6,7,8,9,10};
A)将5个初值依次赋给a[1]至a[5]
B)将5个初值依次赋给a[0]至a[4]
C)将5个初值依次赋给a[6]至a[10]
D)因为数组长度与初值的个数不相同,所以此语句不正确
(33)有以下程序
main()
{intx,y,z;
x=y=1;z=x++,y++,++y;
printf("%d,%d,%d\n",x,y,z);
}
程序运行后的输出结果是
A)2,3,3
B)2,3,2
C)2,3,1
D)2,2,1
(34)以下程序有错,错误原因是
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;没有意义,可能会影响后面语句的执行结果
(35)设p1和p2是指向一个int型一维数组的指针变量,k为int型变量,则不能正确执行的语句是
A)k=*p1+*p2
B)p2=k;
C)p1=p2;
D)k=*p1*(*p2);
(36)下列程序的输出结果是
#include"stdio.h"
#defineN3
#defineM3
voidfun(inta[M][N])
{printf("%d\n",*(a[1]+2));}
main()
{inta[M][N];
inti,j;
for(i=0;ifor(j=0;ja[i][j]=i+j-(i-j);
fun(a);}
A)3
B)4
C)5
D)6
(37)有以下程序
intadd(inta,intb){return(a+b);}
main()
{intk,(*f)(),a=5,b=10;
f=add;
…
}
则以下函数调用语句错误的是
A)k=(*f)(a,b);
B)k=add(a,b);
C)k=*f(a,b);
D)k=f(a,b);
(38)设有如下定义:
structsk
{intn;
floatx;}data,*p;
若要使p指向data中的n域,正确的赋值语句是
A)p=&data.n;
B)*p=data.n;
C)p=(structsk*)&data.n;
D)p=(structsk*)data.n;
(39)设有以下说明语句
structex
{intx;floaty;charz;}example;
则下面的叙述中不正确的是
A)struct结构体类型的关键字
B)example是结构体类型名
C)x,y,z都是结构体成员名
D)structex是结构体类型名
(40)阅读以下程序及对程序功能的描述,其中正确的是
#include
main()
{FILE*in,*out;
charch,infile[10],outfile[10];
printf("Entertheinfilename:
\n");
scanf("%s",infile);
printf("Entertheoutfilename:
\n");
scanf("%s",outfile);
if((in=fopen(infile,"r"))==NULL)
{printf("cannotopeninfile\n");
exit(0);}
if((out=fopen(outfile,"w"))==NULL)
{printf("cannotopenoutfile\n");
exit(0);}
while(!
feof(in))fputc(fgetc(in),out);
fclose(in);fclose(out);}
A)程序完成将磁盘文件的信息在屏幕上显示的功能
B)程序完成将两个磁盘文件合二为一的功能
C)程序完成将一个磁盘文件复制到另一个磁盘文件中
D)程序完成将两个磁盘文件合并并在屏幕上输出
二、填空题
请将每一个空的正确答案写在答题卡序号的横线上,答在试卷上不给分。
(1)下列软件系统结构图
的宽度为【1】。
(2)测试的目的是暴露错误,评价程序的可靠性;而【2】的目的是发现错误的位置,并改正错误。
(3)对于图书管理数据库,将图书表中"人民邮电出版社"的图书的单价涨价5%。
请对下面的SQL语句填空:
UPDATE图书【3】WHERE出版单位="人民邮电出版社"
(4)按"先进后出"原则组织数据的数据结构是【4】。
(5)长度为n的顺序存储线性表中,当在任何位置上插入一个元素概率都相等时,插入一个元素所需移动元素的平均个数为【5】。
(6)以下程序的功能是:
将输入的正整数按逆序输出。
例如:
若输入135则输出531。
请填空。
#include
main()
{intn,s;
printf("Enteranumber:
");scanf("%d",&n);
printf("Output:
");
do
{s=n%10;printf("%d",s);【6】;
}while(n!
=0);
printf("\n");
}
(7)以下程序的运行结果是【7】。
#include
main()
{intfun();fun();}
fun()
{staticinta[3]={0,1,2};
inti;
for(i=0;i<3;i++)a[i]+=a[i];
for(i=0;i<3;i++)printf("%d,",a[i]);
printf("\n");}
(8)以下函数用来求出数组的最大元素在数组中的下标并存放在k所指的存储单元中。
请填空。
#include
#include
intfun(int*s,intt,int*k)
{inti;
*k=0;
【8】
if(s[*k]
return【9】;}
main()
{inta[10]={876,675,896,101,301,401,980,431,451,777},k;
fun(a,10,&k);
printf("%d,%d\n",k,a[k]);}
(9)以下程序中,函数fun的功能是计算x2-2x+6,主函数中将调用fun函数计算:
y1=(x+8)2-2(x+8)+6
y2=sin2(x)-2sin(x)+6
请填空。
#include"math.h"
doublefun(doublex){return(x*x-2*x+6);}
main()
{doublex,y1,y2;
printf("Enterx:
");scanf("%lf",&x);
y1=fun(【10】);y2=fun(【11】);
printf("y1=%lf,y2=%lf\n",y1,y2);
}
(10)以下程序运行后的输出结果是【12】。
main()
{intx,a=1,b=2,c=3,d=4;
x=(a
a:
b;x=(xx:
c;x=(d>x)?
x:
d;
printf("%d\n",x);
}
(11)下面程序的功能是将一个字符串str的内容颠倒过来,请填空。
#include
main()
{inti,j,【13】;charstr[]={"1234567"};
for(i=0,j=strlen(str)【14】;i{k=str[i];str[i]=str[j];str[j]=k;}
printf("%s\n",str);}
(12)以下定义的结构体类型拟包含两个成员,其中成员变量info用来存入整形数据;成员变量link是指向自身结构体的指针,请将定义补充完整。
structnode
{intinfo;
【15】link;};