C语言试题库完整版文档格式.docx
《C语言试题库完整版文档格式.docx》由会员分享,可在线阅读,更多相关《C语言试题库完整版文档格式.docx(45页珍藏版)》请在冰豆网上搜索。
(1)putchar函数可以向终端输出一个
A、整型变量表达式值
B、实型变量值
C、字符串
D、字符或字符型变量值
(2)若x,y均定义为int型,z定义为double型,以下合法的scanf函数调用语句是
A、scanf(“%d%lx,%le”,&
x,&
y,&
z);
B、scanf(“%2d*%d%lf”,&
C、scanf(“%x%*d%o”,&
D、scanf(“%x%o%6.2f”,&
(3)当输入数据的形式为:
25,13,10<
回车>
时,以下程序的输出结果为
main()
{intx,y,z;
scanf(“%d%d%d”,&
printf(“x+y+z=%d\n”,x+y+z);
}
A、x+y+z=48
B、x+y+z=35
C、x+z=35
D、不确定值
(4)以下能正确的定义整型变量a,b和c,并对它们赋初值为5的语句是
A、inta=b=c=5;
B、inta,b,c=5;
C、a=5,b=5,c=5;
D、a=b=c=5;
(5)若有以下定义,则正确的赋值语句是
inta,b;
floatx;
A、a=1,b=2;
B、b++;
C、a=b=5;
D、b=int(x);
第四章选择结构程序设计
(1)能正确表示“当x的值在[1,10]和[200,210]的范围为真,否则为假”的表达式是
A、(x>
=1)&
&
(x<
=10)&
(x.>
=200)&
=210)
B、(x>
=1)││(x<
=10)││(x.>
=200)││(x<
C、(x>
=1)&
=200)&
D、(x>
(x.>
(2)以下程序的运行结果是
#include“stdio.h”
{inta,b,d=241;
a=d/100%9;
b=(-1)&
(-1);
printf(“%d,%d”,a,b);
A、6,1
B、2,1
C、6,0
D、2,0
(3)请阅读以下程序:
{inta=5,b=0,c=0;
if(a+b+c)printf(“***\n”);
elseprintf(“$$$\n”);
以上程序。
A)有语法错误不能通过编译
B)可以通过编译但不能直接通过连接
C)输出***
D)输出$$$
(4)以下程序的运行结果是。
{intm=5;
if(m++>
5)printf(“%d\n”,m);
elseprintf(“%d\n”,m——);
A)4
B)5
C)6
D)7
(5)为了避免在嵌套的条件语句中if-else中产生二义性,c语言规定:
else子句总是与相配对。
A)缩排位置相同的if
B)其之前最近的if
C)其之后最近的if
D)同一行上的if
第五章循环控制
(1)设有程序段
intk=10
while(k=0)k=k-1
则下面描叙正确的是。
A)while(k=0)k=k-1;
B)循环是无限循环
C)循环体语句一次也不执行
D)循环体语句执行一次
(2)下面程序段的运行结果是。
intn=0;
while(n++<
=2);
printf(“%d”,n);
A)2
B)3
C)4
D)有语法错
(3)C语言中while和do-while循环的主要区别是。
A)do-while的循环体至少无条件执行一次
B)while的循环控制条件比do-while的循环控制条件严格
C)do-while允许从外部转到循环体内
D)do-while允许从外部转到循环体内
(4)以下能正确计算1*2*3*…*10的程序段是。
A)do{i=1;
s=1;
s=s*i;
i++;
}while(I<
=10);
B)do{i=1;
s=0;
C)i=1;
do{s=s*i;
D)i=1;
第六章数组
(1)在c语言中,引用数组元素时,其数组下标的数据类型允许是____。
A)整型常量
B)整型表达式
C)整型常量或整型表达式
D)任何类型的表达式
(2)以下能对二维数组a进行正确初始化的语句是____。
A)inta[2][]={{1,0,1},{5,2,3,}};
B)inta[][3]={{1,2,3},{4,5,6}};
C)inta[2][4]={1,2,3,},{4,5},{6}};
D)inta[][3]={{1,0,1},{},{1,1}};
)
(3)若有说明:
inta[3][4]={0};
则下面正确的叙述是____。
A)只有元素a[0][0]可得到初值0
B)此说明语句不正确
C)数组a中各元素都可得到初值,但其值不一定为0
D)数组a中每个元素均可得到初值0
(4)下面程序___(每行程序前面的数字表示行号)。
1main()
2{
3floata[10]={0};
4inti
5for(i=0;
i<
3;
i++)scanf(“%d”,&
a[i];
6for(i=1;
10;
i++)a[0]=a[0]+a{i};
7printf(“%f\n”,a[0]);
8}
A)没有错误
B)第3行有错误
C)第5行有错误
D)第7行有错误
(5)若二维数组a有m列,则计算机一元素a[i][j]在数组中位置的公式为____。
(假设a[0][0]位于数组的第一个位置上。
A)i*m+j
B)j*m+i
C)i*m+j-1
D)i*m+j+1
第七章函数
(1)以下正确的函数定义形式是。
A)doublefun(intx,inty)
C)doublefun(intx;
inty)
D)doublefun(intx,inty)
E)doublefun(intx,y);
(2)以下正确的函数形式是。
A)doublefun(intx,inty)
{z=x+y;
returnz;
B)fun(intx,y)
{intz;
C)fun(x,y)
{intx,y;
doublez;
z=x+y;
returnz;
{doublez;
z=x+y;
(3)C语言规定,简单变量做实参时,它和对应形参之间的数据传递方式是
A)地址传递
B)单向值传递
C)由实参传给形参,再由形参传回给实参
D)传递方式
(4)C语言允许函数值型缺省定义,此时该函数值隐含的类型是。
A)float型
B)int型
C)long型
D)double型
(5)下面函数调用语句含有实参的个数为。
func((exp1,exp2),(exp3,exp4,exp5));
A)1
B)2
C)4
D)5
第八章编译预处理命令
(1)请读程序:
#defineADD(x)x+x
{
intm=1,n=2,k=3;
intsum=ADD(m+n)*k;
printf(“sum=%d”,sum);
上面程序的运行结果是。
A)sum=9
B)sum=10
C)sum=12
D)sum=18
(2)以下程序的运行结果是。
#defineMIN(x,y)(x)<
(y)?
(x)+(y)
{intI=10,j=15,k;
k=10*MIN(I,j);
printf(“%d\n”,k);
A)10
B)15
C)100
D)150
(3)在宏定义#definePI3.14159中,用宏名PI代替一个。
A)常量
B)单精度数
C)双精度数
D)字符串
(4)若有宏定义如下:
#defineX5
#defineYX+1
#defineZY*x/2
则执行以下printf语句后,输出结果是。
inta;
a=Y;
printf(“%d\n”,Z);
printf(“%d\n”,--a);
A)7B)12C)12D)7
6655
(5)若有以下宏定义:
#defineN2
#defineY(n)((N+1)*n)
则执行语句z=2*(N+Y(5));
后的结果是。
A)语句有错误
B)z=34
C)z=70
D)z无定值
第九章指针
(1)以下程有错误,错误原因是
{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;
(2)已有定义intk=2;
int*ptr1,*ptr2;
且ptr1和ptr2均已指向变量K,下面不能正确执行的赋值语句是.
A)k=*ptr1+*ptr2;
B)ptr2=K;
C)ptr1=ptr2;
D)k=*ptr1*(*ptr2);
(3)变量的指针,其含义是指该变量的________.
A)值B)地址C)名D)一个标志
(4)若有语句int*point,a=4;
和ponit=&
a;
下面均代表地址的一组选项是_________.
A)a,point,*&
a
B)&
*a,&
a,*point
C)*&
point,*point,&
a
D)&
a,&
*point,point
(5)下面能正确进行字符串赋值操作的是________.
A)chars[5]={“ABCDE”};
B)chars[5]={‘A’,’B’,’C’,’D’,’E’};
C)char*S;
s=”ABCDE”;
D)char*S;
scanf(“%s”,s);
(6)若有以下定义,则对A数组元素的正确引用是_______.
A)*&
a[5]
B)*a+2
C)*(P+5)
D)*(a+2)
(7)若有以下定义,则对a数组元素地址的正确引用是_______>
A)p+5
B)*a+1
C)&
a+1
D)&
a[0]
(8)若有定义:
inta[2][3];
则对a数组的第I行第J列(假设I,J已正确说明并赋值)元素值的正确引用为_______.
A)*(*(a+I)+J)
B)(a+I)[j]
C)*(a+I+j)
D)*(a+I)+j
(9)若有定义:
则对a数组的第i行第j列(假设i,j已正确说明并赋值)元素地址的正确引用为________.
A)*(a[i]+j)
B)(a+i)
C)*(a+j)
E)a[i]+j
(10)若有以下定义和语句,则对a数组元素地址的正确引用为_________.
Inta[2][3],(*p)[3]
P=a;
A)*(p+2)
B)p[2]
C)p[1]+1
D)(p+1)+2
第一十章结构体与共用体
(1)以下对结构体类型变量的定义中不正确的是_________.
A)#defineSTUDENTstructstudent
STUDENT
{intnum;
floatage;
}std1;
B)structstudent
floatage;
C)struct
{intnum;
}std1;
D)struct
}student;
structstudentstd1;
(2)设有以下语句
(3)structstu
{inta;
floatb;
}stutype;
则下面叙述正确的是__________.
A)struct是结构体类型的关键字
B)structstu是用户定义的结构体类型
C)stutype是用户定义的结构体类型名
D)a和b都是结构体成员名
(4)设有以下定义:
structsk
{intn;
}data,*p;
若要使p指向data中的n域,正确的赋值语句是_________
A)p=&
data.n;
B)*p=data.n;
C)p=(structsk*)&
D)p=(structsk*)data.n;
(5)设有以下语句:
structst
structst*next;
staticstructsta[3]={5,&
a[1],7,&
a[2],9,’\0’},*p;
p=&
a[0];
则以下表达式的值为6的是_______.
A)p++->
n
B)p->
n++
C)(*p).n++
D)++p->
第一十一章位运算
(1)以下运算符中优先级最低的是优先级最高的是。
A)&
B)&
C)||
D)|
(2)若有运算符<
<
sixeof,^,&
=则它们按优先级按由高到低的正确排列次序是。
A)sizeof,&
=,<
^
B)sizeof,<
^,&
=
C)^,<
sizeof,&
D)<
=,sizeof
(3)在C语言中,要求运算数必须是整型的运算符是。
A)^
B)%
C)!
D)>
(4)在C语言中,要求运算数必须是整型或字符型的运算符是。
A)&
C)!
D)||
(5)sozeof(float)是。
A)一种函数调用
B)一种不合法的表示形式
C)一个整型表达式
D)一个浮点表达式
第一十二章文件
(!
)系统的标准输入文件是指。
A)键盘
B)显示器
C)软盘
D)硬盘
(2)以下可作为函数fopen中第一个参数的正确格式是。
A)c:
user\text.txt
B)c:
\user\text.txt
C)"c:
\user\text.txt"
D)"c:
\\user\text.txt"
(3)若执行fopen函数时发生错误,则函数的返回值是 .
A)地址值
B)0
C)1
D)EOF
(4)若要用fopen函数打开一个新的二进制文件,该文件要既能读又能写,则文件方式字符串应是 。
A)"ab+"
B)"wb+"
C)"rb+"
D)"ab"
(5)当顺利执行了文件关闭操作时,fclose函数的返回值是 。
A)-1
B)TURE
C)0
D)1
二、填空
第一章C语言概述
(1)C源程序的基本单位是()
(2)一个C源程序至少应包括一个()
(3)在一个C源程序中,注释部分两侧的分界符分别为()和()
(4)在C语言中,输入操作是由库函数()完成的,输出操作是由库函数()完成的。
(1)在C语言中(以16位机为例),一个char型数据在内存中所占的字节数为(),一个int型数据在内存中所占的字节数为()。
(2)在C语言中,实型变量分为两种类型,它们是()和()。
(3)若a是int型变量,则计算表达式a=25/3%3后,a的值为()。
(4)C语言中的标识符只能由三种字符组成,它们是(),()和()
(5)表达式8/4*(int)2.5/(int)(1.25*3.7+2.3)值的数据类型为()。
(1)以下程序的输出结果是()。
{intx=1,y=2;
printf(“x=%dy=%d*sum*=%d\n”,x,y,x+y);
printf(“10squaredis:
%d\n”,10*10);
(2)以下程序的输出结果是()。
#include<
studo.h>
{inta=325;
doublex=3.1415926;
printf(“a=%+06dx=%+e\n”,a,x,);
(3)假设变量a和b均为整型,以下语句可以下借助任何变量把a、b中的值进行交换。
请填空。
a+=();
b=a-();
a-=();
(4)设x,y和z都是int型变量,m为long型变量,则在16位微型机上执行下面的赋值语句后,x值为(),y值为(),z值为()。
y=(x=32767,x=-1);
z=m=0xFFFF
(5)若x为int型变量,则执行以下语句后x的值是()
x=7;
x+=x-=x+x;
(1)当a=3,b=2,c=1时,表达式f=a>
b>
c的值是()。
(2)在C语言中表示逻辑“真”值用()。
(3)设x,y,z均为int型变量,请写出描述“x或y中有一个小于z”的表达式().
(4)当m=2,n=1,a=1,b=2,c=3时,执行完d=(m=a!
=b)&
(n=b>
c)后;
n的值为(),m的值为()。
(5)有inta=3,b=4,c=5;
则表达式a||b+c&
b==c的值为()。
(1)执行下面程序段后,K值是()。
K=1;
n=263;
Do{k*=n%10;
n/=10}while(n);
(2)下面程序段中循环体的执行次数是()。
A=10;
B=0;
Do{b+=2;
a-=2+b;
}while(a>
=0);
(3)下面程序段的运行结果是()。
X=2’
Do{printf(“*”);
x--;
}while(!
x==0);
(4)下面程序段的运行结果是()。
I=1;
a=0;
s=1;
Do{a=a+s*i;
s=-s;
i++;
}while(i<
=10)
Printf(“a=%d,a”);
(5)鸡兔共有30只,脚共有90个,下面程序段是计算鸡兔各有多少只,请填空。
For(x=1;
x<
=29;
x++)
{y=30-x;
if()printf(“%d,%d\n”,x,y);
(1)在C语言中,二维数组的定义方式为:
类型说明符 数组名()();
(2)在C语言中, 二维数组元素在内存中的存放顺序是()。
(3)若有定义:
doublex[3][5];
则x数组中行下标的下限为(),列下标的上限为()。
(4)若二维数组a有m列,则计算机任一元素a[i][j]在数组中位置的公式为:
().(假设a[0][0]位于数组的第一个位置上。
(5)若有定义:
inta[3][4]={{1,2},{0},{4,6,8,10}};
则初始化后,a[1][2]得到的初值是(),a[2][1]得到初值是()。
(1)C语言规定,可执行程序的开始执行点是()。
(2)在C语言中,一个函数一般由两个部分组成,它们是()和()。
(3)下面add函数的功能是求两个参数的和,并将和值返回调用函数。
函数中错误的部分是();
改正后为()。
Voidadd(floata,floatb)
{floatc;
c=a+b;
returnc’
(4)以下程序的运行结果是()。
main()
{increment();
increment();
}
{intx=0;
x+=1;
printf(“%d”,x);
(5)以下Check函数的功能是对value中的值进行四舍五入计算,若计算后的值与ponse值相等,则显示“WELLDONE!
!
”,否则显示计算后的值。
已有函数调用语句Check(po