《C程序设计》模拟试题二及参考答案.docx
《《C程序设计》模拟试题二及参考答案.docx》由会员分享,可在线阅读,更多相关《《C程序设计》模拟试题二及参考答案.docx(10页珍藏版)》请在冰豆网上搜索。
《C程序设计》模拟试题二及参考答案
《C程序设计》考试试题
(120分钟)
一、单项选择题(每小题2分,共60分)
1.自定义标识符中,符合C语言规定的是__D___。
A)forB)3aC)*aD)_123A错在哪
2.C语言程序的基本单位是______。
A)程序行B)语句C)函数D)字符
3.getche()函数的功能是_______。
A)从键盘读入一字符串B)从键盘读入一字符
C)从键盘输出一字符串D)从键盘输出一字符
4.下面有关for循环的正确描述是_______。
A)for循环只能用于循环次数已经确定的情况
B)for循环是先执行循环语句,后判定表达式
C)在for循环中,不能用break语句跳出循环体
D)for循环体语句中,可以包含多条语句,但要用花括号括起来
5.为表示关系100≥x≥10,应使用C语言表达式__A_____。
A)(100>=x)&&(x>=10)B)(100>=x)AND(x>=10)
C)(100>=x>=10)D)(100>=x)&(x>=10);
6.定义inta;floatf;doublei;表达式15+i*f+ˊAˊ的值是______D_。
A)floatB)intC)charD)double
7.下列有关字符数组与字符串的说法中,正确的是____。
A)字符数组中存放的一定是一个字符串
B)所有的字符数组都可以被当作字符串处理
C)对存放字符串的字符数组可像一般数组一样对数组中单个元素操作
D)一个字符数组可以认为就是一个字符串
8.下面程序要求从键盘上输入值并打印,请选择正确的输入方法_____B。
main()
{inta,b;
scanf("x=%d,y=%d",&x,&y);
printf("x=%d,y=%d\n",x,y);
}
A)5,6B)x=5,y=6C)5↙6D)56
9.为避免在嵌套的条件语句if-else中产生二义性,C语言规定:
else子句总是与____B___配对。
(A)缩排位置相同的if(B)其之前最近的if
(C)其之后最近的if(D)同一行上的if
10.定义如下变量和数组:
inti;intx[3][3]={1,2,3,4,5,6,7,8,9};
则下面语句的输出结果是______。
for(i=0;i<3;i++)printf("%d",x[i][2-i]);
A)159B)147C)357D)369
11.在定义了inta[3][2];之后,对a的引用正确的是__C_____。
A)a[3][2]B)a[3][0]C)a[0][0]D)a[0,0]
12.若要求在if后一对圆括号中表示a不等于0的关系,则能正确表示这
一关系的表达式为___A____。
A)a<>0B)!
aC)a=0D)a
13.执行以下程序段后,m的值为___A____。
inta[2][3]={{1,2,3},{4,5,6}};
intm,*p;p=&a[0][0];
m=(*p)+(*(p+2))+(*(p+4));
A)9B)8C)7
D)6
14.下列对字符串的说法中,错误的是_______。
A)字符串就是一个字符数组
B)字符串可以整体输入输出
C)字符串可以比较大小
D)存储字符串所需的内存空间等于字符串的长度
15.若有以下定义和语句,则输出结果是_______。
chars1="12345",s2="1234"
printf("%d\n",strlen(strcpy(s1,s2)));
A)4B)5C)9D)10
16.有一函数关系见下表:
x
y=
x<0
x-1
x=0
x
x>0
x+1
下面程序中能正确表示上面关系的是_______。
(A)y=x+1;(B)y=x-1;
if(x>=0)if(x!
=0)
if(x==0)y=x;if(x>0)y=x+1;
elsey=x-1;elsey=x;
(C)if(x<=0)(D)y=x;
if(x<0)y=x-1;if(x<=0)
elsey=x;if(x<0)y=x-1;
elsey=x+1;elsey=x+1;
17.以下正确的程序段是_______。
A)charstr[2];B)char*p;
scanf("%s",&str);scanf("%s",p);
C)charstr[20];D)charstr[20],*p=str;
scnaf("%s",&str[2]);scanf("%s",p[2]);
18.以下正确的函数定义形式是_______。
A)doublefun(intx,inty)
B)doublefun(intx;inty)
C)doublefun(intx,inty);
D)doublefun(intx,y);
19.以下有关宏替换不正确的是_______。
A)宏替换不占用运行时间B)宏名无类型
C)宏替换只是字符替换D)宏名必须用大写字母表示
20.
有如下语句inta=10,b=20,*p1,*p2;p1=&a;p2=&b;如图1所示。
若要实现图2所示的存储结构,可选用的赋值语句是_______。
A)*p1=*p2;B)p1=p2;C)p1=*p2;D)*p1=p2;
21.设char*s="\ta\018bc";则指针变量s指向的字符串所占的字节数是_______。
A)9B)5C)6D)7
22.以下程序的输出结果是_______。
#include
#include
main()
{char*s1="AbCbEf",*s2="AB";
s1++;s2++;
printf("%d\n",strcmp(s1,s2));
}
A)正数B)负数C)零D)不确定的值
23.fread(buf,64,2,fp)的功能是_______。
A)从fp文件流中读出整数64,并存放在buf中
B)从fp文件流中读出整数64和2,并存放在buf中
C)从fp文件流中读出64个字节的字符,并存放在buf中
D)从fp文件流中读出2个64个字节的字符,并存放在buf中
24.以下一维数组a的正确定义是_______。
A)inta(10);B)intn=10,a[n];
C)intn;D)#defineSIZE10
scanf("%d",&n);inta[SIZE];
inta[n];
25.若有定义:
inta[2][3];则对a数组中第i行第j列元素地址的正确引用为_______。
A)*(a[i]+j)B)(a+i)C)*(a+j)D)a[i]+j
26.以下程序段的输出结果是_______。
main()
{intn[3],i,j,k;
for(i=0;i<3;i++)
n[i]=0;
k=2;
for(i=0;ifor(j=0;jn[j]=n[i]+1;
printf("%d\n",n[1]);
}
A)2B)1C)0D)3
27.以下程序输出的结果是_______。
intd=1;
fun(intp)
{intd=5;
d+=p++;printf("%d",d);
}
main()
{inta=3;
fun(a);
d+=a++;
printf("%d\n",d);
}
A)84B)96C)94D)85
28.下列各组变量中,不可作为函数参数的是_______。
A)指向结构体变量的指针变量;
B)数组名或指向数组的指针变量;
C)指向函数的指针变量;
D)共用体变量;
29.若有以下说明和语句:
structstudent
{intnumber;char*name;
}stu1,*p=&stu1;
则以下引用方式不正确的是_______和_______。
A)stu1->numberB)(*p).numberC)p->number
D)stu1.numberE)*p.number
30.
下列变量中,哪类变量的生存期和作用域是不一致的_______。
A)自动变量B)定义在文件最前面的全局变量
C)局部静态变量
D)寄存器变量
二、填空题(每小题2分,共20分)
•
1.C程序是由_______构成的,其编译是以_______为单位进行的。
2.
设a为int型变量,请写出描述"a是奇数"的表达式_______
3.若数组a有m列,则a[i][j]之前的数组元素个数为_______。
4.请读程序片段:
charstr[]="english",*p=str;
printf("%s\n",*(p+3));
上面程序片段的输出结果是_______。
5.执行下面的程序段后,k值为_______。
k=1;n=263;
do{k*=n%10;n/=10;}while(n);
6.变量的作用域是指变量的有效范围。
按作用域变量可分为_______变量
和_______变量两大类。
。
7.设有程序片段:
switch(ch)
{caseˊAˊ:
printf("85-100\n");
caseˊBˊ:
printf("70-84\n");
caseˊCˊ:
printf("60-69\n");
caseˊDˊ:
printf("<60\n");
default:
printf("error!
\n");
}
若ch的值为ˊDˊ,则输出结果是_______。
8.下面程序的功能是在三个字符串中找出最小的,请填空:
#include
#include
main()
{chars[20],str[3][20];inti;
for(i=0;i<3;i++)gets(str[i]);
strcpy(s,____________________________);
if(strcmp(str[2],s)<0)strcpy(s,str[2]);
printf("%s\n",_______);
}
9.写出下列两种指针的定义:
指针p1为指向整型数据的指针______________;
p2为指向字符串"Iamastudent"的指针______________。
10.在一个源文件中定义的局部变量的作用域为______________。
三、阅读程序,按要求完成各题。
(20分)
1.以下程序的功能是:
利用函数求出用户输入的5个float型数据的平均值,
请填空。
(4分)
floatfunc(floata[],intn)
{inti;
floatsum=0.0,ave;
for(i=0;_______;i++)
sum=______________;
ave=_______;
return(_______);
}
main()
{inti;floata[5],average;
for(i=0;i<5;i++)
scanf("%f",&a[i]);
average=func(a,5);
printf("Theaverageoffivefloatis:
%f\n",average);
}
2.下面程序是将数组a的内容逆置重放。
请填空:
(6分)
main()
{inta[8],i,j,t;
printf("Input8numbertothearray:
\n");
for(i=0;i<8;i++)
scanf("%d",_______);
for(i=0;i<=3;i++)
{j=_______;
t=a[i];a[i]=a[j];_______;
}
printf("\nThearrayhasbeeninvered:
");
for(i=0;i<8;i++)printf("%d",a[i]);
}
3.以下程序的功能是:
从键盘输入两个字符串,利用函数比较其是否相等,若相等返回1,否则返回0。
(6分)
f(chars[],chart[])
{inti=0;
while(s[i]==t[i]&&s[i]!
=ˊ\0ˊ)_______;
if(s[i]==ˊ\0ˊ&&_______)return
(1);
else_______;
}
main()
{chara[6],b[7];inti;
scanf("%s%s",a,b);
i=f(a,b);
printf("%d\n",i);
}
4.输入一整数x,在数组a中查找x第一次出现的位置。
请填空。
(4分)
#include
main()
{inta[10]={10,24,34,55,9,17,87,22,9,19},x,i;
printf(“Inputaninteger:
”);
scanf("_______",&x);
for(i=0;_______;i++)
if(_______)break;
if(_______)
printf("Notfound.\n");
else
printf("Positionis:
%d\n",i);
}
参考答案
模拟试题二
一.选择题
1.D)2.C)3.B)4.D)5.A)
6.D)7.C)8.B)9.B)10.C)
11.C)12.D)13.A)14.D)15.A)
16.C)17.B)18.A)19.D)20.B)
21.D)22.A)23.D)24.D)25.D)
26.D)27.A)28.D)29.A)E)30.C)
二.填空题
1.函数,文件2.a%2!
=0(或a%2==1)3.i*m+j
4.lish5.366.全局局部
7.<60
error!
8.(strcmp(str[0],str[1])<0?
str[0]:
str[1])s
9.int*p1;char*p2="Iamastudent";
10.该变量所在的函数
三.阅读程序
1.i2.&a[i]8-i-1a[j]=t
3.i++t[i]==ˊ\0ˊreturn(0)
4.%di<10a[i]==xi>=10