C语言笔试模拟题7.docx
《C语言笔试模拟题7.docx》由会员分享,可在线阅读,更多相关《C语言笔试模拟题7.docx(17页珍藏版)》请在冰点文库上搜索。
C语言笔试模拟题7
一、选择题
(1)数据结构作为计算机的一门学科,主要研究数据的逻辑结构、对各种数据结构进行的运算,以及
A)数据的存储结构
B)计算方法
C)数据映象
D)逻辑存储
正确答案:
A
(2)串的长度是
A)串中不同字符的个数
B)串中不同字母的个数
C)串中所含字符的个数且字符个数大于零
D)串中所含字符的个数
正确答案:
D
(3)在计算机中,算法是指
A)加工方法
B)解题方案的准确而完整的描述
C)排序方法
D)查询方法
正确答案:
B
(4)以下不属于对象的基本特点的是
A)分类性
B)多态性
C)继承性
D)封装性
正确答案:
C
(5)开发软件所需高成本和产品的低质量之间有着尖锐的矛盾,这种现象称作
A)软件投机
B)软件危机
C)软件工程
D)软件产生
正确答案:
B
(6)下面不属于软件设计原则的是
A)抽象
B)模块化
C)自底向上
D)信息隐蔽
正确答案:
C
(7)开发大型软件时,产生困难的根本原因是
A)大系统的复杂性
B)人员知识不足
C)客观世界千变万化
D)时间紧、任务重
正确答案:
A
(8)下列SQL语句中,用于修改表结构的是
A)ALTER
B)CREATE
C)UPDATE
D)INSERT
正确答案:
A
(9)数据库、数据库系统和数据库管理系统之间的关系是
A)数据库包括数据库系统和数据库管理系统
B)数据库系统包括数据库和数据库管理系统
C)数据库管理系统包括数据库和数据库系统
D)3者没有明显的包含关系
正确答案:
B
(10)关系模型允许定义3类数据约束,下列不属于数据约束的是
A)实体完整性约束
B)参照完整性约束
C)域完整性约束
D)用户自定义的完整性约束
正确答案:
C
(11)下列用于printf函数的控制字符常量中,代表"竖向跳格"的转义字符常量是
A)\b]
B)\t
C)\v
D)\f
正确答案:
C
(12)以下程序的输出结果是
main()
{inta=21,b=11;
printf("%d\n",--a+b,--b+a);
}
A)30
B)31
C)32
D)33
正确答案:
A
(13)设变量n为float类型,m为int类型,则以下能实现将n中的数值保留小数点后两位,第三位进行四舍五入运算的表达式是
A)n=(n*100+0.5)/100.0
B)m=n*100+0.5,n=m/100.0
C)n=n*100+0.5/100.0
D)n=(n/100+0.5)*100.0
正确答案:
B
(14)下列是用户自定义标识符的是
A)_w1
B)3_xy
C)int
D)LINE-3
正确答案:
A
(15)设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)
正确答案:
D
(16)若有条件表达式(exp)?
a++:
b--,则以下表达式中能完全等价于表达式(exp)的是
A)(exp==0)
B)(exp!
=0)
C)(exp==1)
D)(exp!
=1)
正确答案:
B
(17)下面四个选项中,均是不正确的8进制数或16进制数的选项是
A)016 0x8f 018
B)0abc 017 0xa
C)010 -0x11 0x16
D)0a12 7ff -123
正确答案:
D
(18)若变量已正确说明为int类型,要通过语句scanf("%d%d%d",&a,&b,&c);给a赋值3,b赋值5,c赋值8,不正确的输入形式是
A)3<回车>
5<回车>
8<回车>
B)3,5,8<回车>
C)3<回车>
58<回车>
D)35<回车>
8<回车>
正确答案:
B
(19)以下选项中,与k=n++完全等价的表达式是
A)k=n,n=n+1
B)n=n+1,k=n
C)k=++n
D)k+=n+1
正确答案:
A
(20)设有程序段
intk=10;
while(k=0)k=k-1;
则下面描述中正确的是
A)while循环执行10次
B)循环是无限循环
C)循环体语句一次也不执行
D)循环体语句执行一次
正确答案:
C
(21)对表达式for(表达式1;;表达式3)可理解为
A)for(表达式1;0;表达式3)
B)for(表达式1;1;表达式3)
C)for(表达式1;表达式1;表达式3)
D)for(表达式1;表达式3;表达式3)
正确答案:
B
(22)以下程序的输出结果是
main()
{inta,i;a=0;
for(i=1;i<5;i++)
{switch(i)
{case0:
case3:
a+=2;
case1:
case2:
a+=3;
default:
a+=5;
}
}printf("%d\n",a);
}
A)31
B)13
C)10
D)20
正确答案:
A
(23)若有如下语句
intx=3;
do{printf("%d\n",x-=2);}
while(!
(--x));
则上面程序段
A)输出的是1
B)输出的是1和-2
C)输出的是3和0
D)是死循环
正确答案:
B
(24)判断char型变量cl是否为大写字母的正确表达式是
A)′A′<=cl<=′Z′
B)(cl>=A)&&(cl<=Z)
C)(′A′>=cl)||(′Z′<=cl)
D)(cl>=′A′)&&(cl<=′Z′)
正确答案:
D
(25)下面程序的功能是将从键盘输入的一对数,由小到大排序输出,当输入一对相等数时结束循环,请选择填空。
#include
main()
{inta,b,t;
scanf("%d%d",&a,&b);
while(_______)
{if(a>b)
{t=a;a=b;b=t;}
printf("%d,%d\n",a,b);
scanf("%d%d",&a,&b);
}
}
A)!
a=b
B)a!
=b
C)a==b
D)a=b
正确答案:
B
(26)以下对C语言函数的有关描述中,正确的是
A)在C语言中调用函数时,只能把实参的值传给形参,形参的值不能传送给实参
B)C函数既可以嵌套定义又可以递归调用
C)函数必须有返回值,否则不能使用函数
D)函数必须有返回值,返回值类型不定`
正确答案:
A
(27)有以下程序:
voidfun(inta,intb,intc)
{a=456,b=567,c=678;}
main()
{intx=10,y=20,z=30;
fun(x,y,z);
printf("%d,%d,%d\n",x,y,z);
}
输出结果是
A)30,20,10
B)10,20,30
C)456,567,678
D)678,567,456
正确答案:
B
(28)有如下程序段
int*p,a=10,b=1;
p=&a;a=*p+b;
执行该程序段后,a的值为
A)12
B)11
C)10
D)编译出错
正确答案:
B
(29)有如下说明
inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;
则数值为9的表达式是
A)*p+9
B)*(p+8)
C)*p+=9
D)p+8
正确答案:
B
(30)以下程序中调用scanf函数给变量a输入数值的方法是错误的,其错误原因是
main()
{int*p,*q,a,b;
p=&a;
printf("inputa:
");
scanf("%d",*p);
}
A)*p表示的是指针变量p的地址
B)*p表示的是变量a的值,而不是变量a的地址
C)*p表示的是指针变量p的值
D)*p只能用来说明p是一个指针变量
正确答案:
B(31)对以下说明语句的正确理解是
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)因为数组长度与初值的个数不相同,所以此语句不正确
正确答案:
B
(32)若有说明:
inta[][4]={0,0};则下面不正确的叙述是
A)数组a的每个元素都可得到初值0
B)二维数组a的第一维大小为1
C)当初值的个数能被第二维的常量表达式的值除尽时,所得商数就是第一维的大小
D)只有元素a[0][0]和a[0][1]可得到初值,其余元素均得不到确定的初值
正确答案:
D
(33)有以下程序
main()
{chara[]={′a′,′b′,′c′,′d′,′e′,′f′,′g′,′h′,′\0′};inti,j;
i=sizeof(a);j=strlen(a);
printf("%d,%d\b",i,j);
}
程序运行后的输出结果是
A)9,9
B)8,9
C)1,8
D)9,8
正确答案:
D
(34)假定int类型变量占用两个字节,其有定义:
intx[10]={0,2,4};,则数组x在内存中所占字节数是
A)3
B)6
C)10
D)20
正确答案:
D
(35)已知学生记录描述为:
structstudent
{intno;
charname[20],sex;
struct
{intyear,month,day;
}birth;
};
structstudents;
设变量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;
正确答案:
D
(36)以下程序的运行结果是
#defineMIN(x,y)(x)<(y)?
(x):
(y)
main()
{inti=10,j=15,k;
k=10*MIN(i,j);
printf("%d\n",k);
}
A)10
B)15
C)100
D)150
正确答案:
B
(37)有如下程序
intfunc(inta,intb)
{return(a+b);}
main()
{intx=2,y=5,z=8,r;
r=func(func(x,y),z);
printf("%d\n",r);
}
该程序的输出的结果是
A)12
B)13
C)14
D)15
正确答案:
D
(38)设有以下说明语句
typedefstruct
{intn;
charch[8];
}PER;
则下面叙述中正确的是
A)PER是结构体变量名
B)PER是结构体类型名
C)typedefstruct是结构体类型
D)struct是结构体类型名
正确答案:
B
(39)有如下定义
structperson{charname[9];intage;};
structpersonclass[10]={"John",17,"paul",19,"Mary",18,"Adam",16,};
根据上述定义,能输出字母M的语句是
A)printf("%c\n",class[3].name);
B)printf("%c\n",class[3].name[1]);
C)printf("%c\n",class[2].name[1]);
D)printf("%c\n",class[2].name[0]);
正确答案:
B
(40)以下程序执行后a的值是
main()
{intx,y=252,i=386,*m=&y,*z=&i;
x=(z==y);
printf("%d",x);
}
A)252
B)1
C)0
D)运行时出错,x无定值
正确答案:
C(41)阅读下列程序,当运行函数时,输入asdafaaz67,则输出为
#include
#include
#include
intfun(char*str)
{inti,j=0;
for(i=0;str[i]!
=′\0′;i++)
if(str[i]!
=′′)str[j++]=str[i];
str[j]=′\0′;
}
main()
{
charstr[81];
intn;
clrscr();
printf("Inputastring:
");
gets(str);
puts(str);
fun(str);
printf("%s\n",str);
}
A)asdafaaz67
B)asdafaaz67
C)asd
D)z67
正确答案:
A
(42)下列程序的输出结果是
structabc
{ inta,b,c,s;};
main()
{structabcs[2]={{1,2,3},{4,5,6}};intt;
t=s[0].a+s[1].b;
printf("%d\n",t);
}
A)5
B)6
C)7
D)8
正确答案:
B
(43)有以下函数:
fun(char*p)
{returnp;}
该函数的返回值是
A)无确切值
B)形参p中存放的地址值
C)一个临时存储单元的地址
D)形参p自身的地址值
正确答案:
B
(44)若有定义:
char*st="howareyou";下列程序段中正确的是
A)chara[11],*p;strcpy(p=a+1,&st[4]);
B)chara[11];strcpy(++a,st);
C)chara[11];strcpy(a,st);
D)chara[],*p;strcpy(p=&a[1],st+2);
正确答案:
A
(45)下列程序的运行结果是
voidfun(int*a,int*b)
{int*k;
k=a;a=b;b=k;
}
main()
{inta=3,b=6,*x=&a,*y=&b;
fun(x,y);
printf("%d%d",a,b);
}
A)63
B)36
C)编译出错
D)00
正确答案:
B
(46)表达式a
A)||
B)&
C)<
D)()
正确答案:
D
(47)fwrite函数的一般调用形式是
A)fwrite(buffer,count,size,fp);
B)fwrite(fp,size,count,buffer);
C)fwrite(fp,count,size,buffer);
D)fwrite(buffer,size,count,fp);
正确答案:
D
(48)C语言中,文件组成的基本单位为
A)记录
B)数据行
C)数据块
D)字符序列
正确答案:
D
(49)请选出正确的程序段
A)int*p;
scanf("%d",p);
…
B)int*s,k;
*s=100;
…
C)int*s,k;
char*p,c;
s=&k;
p=&c;
*p=′a′;
…
D)int*s,k;
char*p,e;
s=&k;
p=&c;
s=p;
*s=1;
…
正确答案:
C
(50)若有下面的说明和定义,则sizeof(structaa)的值是
structaa
{intr1;doubler2;floatr3;
unionuu{charu1[5];longu2[2];}ua;
}mya;
A)30
B)29
C)24
D)22
正确答案:
D二、填空题
(1)长度为n的顺序存储线性表中,当在任何位置上插入一个元素概率都相等时,插入一个元素所需移动元素的平均个数为【1】。
正确答案:
1.(n/2)
(2)用树型结构表示实体类型及实体间联系的数据模型称为【2】。
正确答案:
1.(层次模型)
(3)类是一个支持集成的抽象数据类型,而对象是类的【3】。
正确答案:
1.(实例)
(4)数据流图的类型有【4】和事务型。
正确答案:
1.(变换型)
(5)当数据的物理结构(存储结构、存取方式等)改变时,不影响数据库的逻辑结构,从而不致引起应用程序的变化,这是指数据的【5】。
正确答案:
1.(物理独立性)
(6)使用结构体处理数据的场合是【6】。
正确答案:
1.(把不同类型的数据作为整体处理。
)
(7)有定义chara,b;若想通过&运算符保留a的第3位和第6位的值,则b的二进数应是【7】。
正确答案:
1.(00100100)
(8)以下程序运行结果是【8】。
longfib(intg)
{switch(g)
{case0∶return0;
case1∶case2∶return1;
}
return(fib (g-1)+fib(g-2));
}
main ()
{long k;
k=fib(5);
printf("k=%(d\n)",k);
}
正确答案:
1.(k=5)
(9)strcmp函数的功能是【9】。
正确答案:
1.(字符串的比较)
(10)以下程序段中,错误的行号是【10】。
①#include
②main()
③{charstr[14];str[]={"IloveChina"};
④printf("%s",str);
⑤}
正确答案:
1.(3行)(11)将以下程序写成三目运算表达式是【11】。
if(a>b)max=a;
elsemax=b;
正确答案:
1.(max=(a>b)?
a:
b;)
(12)设x和y均为int型变量,且x=1,y=2,则表达式double(1+x/y)的值为【12】。
考生答案:
1.()
正确答案:
1.(1.000000)
(13)下面程序的功能是输出数组s中最大元素的下标,请填空。
main()
{ intk,p,s[]={1,-9,7,2,-10,3};
for(p=0,k=p;p<6;p++)
if(s[p]>s[k])【13】
printf("%d\n",k);
}
正确答案:
1.(k=p;)
(14)设有以下定义和语句,则*(*(p+2)+1)的值为【14】。
inta[3][2]={10,20,30,40,50,60},(*p)[2];
p=a;
正确答案:
1.(60)
(15)下面函数要求计算两个整数x,y之和,并通过形参返回该值,请填空。
add(intx,inty,【15】z)
{【16】=x+y;}
正确答案:
1.(int*)2.(*z)
(16)下面程序的运行结果是【17】。
#defineN10
#defines(x)x*x
#definef(x)(x*x)
main()
{inti1,i2;
i1=1000/s(N);i2=1000/f(N);
printf("%d%d\n",i1,i2);
}
正确答案:
1.(1000 10)
(17)以下程序的输出结果是【18】。
unsignedfun6(unsignednum)
{unsignedk=1;
do{k*=num%10;num/=10;}
while(num);
returnk;
}
main()
{unsignedn=26;
printf("%d\n",fun6(n));
}
正确答案:
1.(12)
(18)以下程序的功能是:
删去一维数组中所有相同的数,使之只剩一个。
数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。
例如,若一维数组中的数据是:
2223445666677899101010
删除后,数组中的内容应该是:
2345678910。
请填空。
#include
#defineN80
intfun(inta[],intn)
{inti,j=1;
for(i=1;iif(a[j-1]【19】a[i])
a[j++]=a[i];
【20】;
}
main()
{ inta[N]={2,2,2,3,4,4,5,6,6,6,6,7,7,8,9,9,10,10,10},i,n=19;
printf("Theoriginaldata:
\n");
for(i=0;in=fun(a,n);
printf("\nThedataafterdeleted:
\n");
for(i=0;i}
正确答案:
1.(!
=)2.(returnj)