《C语言程序设计》习题库建议收藏保存.docx
《《C语言程序设计》习题库建议收藏保存.docx》由会员分享,可在线阅读,更多相关《《C语言程序设计》习题库建议收藏保存.docx(51页珍藏版)》请在冰豆网上搜索。
![《C语言程序设计》习题库建议收藏保存.docx](https://file1.bdocx.com/fileroot1/2022-12/6/749bebf5-4a64-4109-8769-c1e460542e91/749bebf5-4a64-4109-8769-c1e460542e911.gif)
《C语言程序设计》习题库建议收藏保存
一、单选题(每题4分,共25道小题,总分值100分)
1.
fscanf函数的正确调用形式是()。
(4分)
Afscanf(fp,格式字符串,输出表列);
Bfscanf(格式字符串,输出表列,fp);
Cfscanf(格式字符串,文件指针,输出表列);
Dfscanf(文件指针,格式字符串,输入表列);
正确答案D
2.
下面程序段中,for循环的执行次数是()。
char*s=”a18bc”;
for( ;*s!
=’’;s++) printf(“*”);
(4分)
A9
B5
C6
D7
正确答案C
3.
以下在任何情况下计算平方数时都不会引起二义性的宏定义是( )。
(4分)
A#definePOWER(x)x*x
B#definePOWER(x)(x)*(x)
C#definePOWER(x)(x*x)
D#definePOWER(x)((x)*(x))
正确答案D
4.
请读程序
#include
#defineMUL(x,y)(x)*y
main()
{inta=3,b=4,c;
c=MUL(a++,b++);
printf("%d",c);
}
上面程序的输出结果是()。
(4分)
A12
B15
C20
D16
正确答案A
5.
若哟于以下说明和语句:
structstudent
{intage;
intnum;
}std,*p;
p=&std;
则以下对结构体变量std中成员age的引用方式不正确的是()。
(4分)
Astd.age
Bp->age
C(*p).age
D*p.age
正确答案D
6.
若二维数组a有m列,则在a[i][j]前面的元素个数为()。
(4分)
Aj*m+i
Bi*m+j
Ci*m+j-1
Di*m+j+1
正确答案B
7.
判断char型变量cl是否为小写字母的正确表达式为().
(4分)
A’a’<=c1<=f’z’
B(c1>=a)&&(c1<=z)
C(‘a’>=c1) (‘z’<=c1)
D(c1>=’a’)&&(c1<=’z’)
正确答案D
8.
如果a=1,b=2,c=3,d=4,则条件表达式a<b?
a:
c<d?
c:
d的值为().
(4分)
A1
B2
C3
D4
正确答案A
9.
在位运算中,操作数每右移一位,其结果相当于().
(4分)
A操作数乘以2
B操作数除以2
C操作数除以4
D操作数乘以4
正确答案B
10.
以下程序的正确运行结果是( ).
main()
{inta=2,I;
for(I=0;I<3;I++)printf(“4%d”,f(a));
}
f(inta)
{intb=0;staticintc=3;
b++;c++;
return(a+b+c);
}
(4分)
A7 7 7
B7 1013
C7 9 11
D7 8 9
正确答案D
11.
下面有关for循环的正确描述是( )
(4分)
Afor循环只能用于循环次数已经确定的情况
Bfor循环是先执行循环体语句,后判定表达式
C在for循环中,不能用break语句跳出循环体
Dfor循环体语句中,可以包含多条语句,但要用花括号括起来
正确答案D
12.
若有说明:
inta[][3]={1,2,3,4,5,6,7};则a数组第一维的大小是()。
(4分)
A2
B3
C4
D无确定值
正确答案B
13.
编辑程序的功能是( )。
(4分)
A建立并修改程序
B将c源程序编译成目标程序
C调试程序
D命令计算机执行指定的操作
正确答案A
14.
已知x=43,ch=’A’,y=0;则表达式(x>=y6&&ch(‘B’&&!
Y)的在值是().
(4分)
A0
B语法错
C1
D“假”
正确答案C
15.
以下程序有错,错误的原因是()。
main()
{int*p,i;char*q,ch;
p=&i;
q=&ch;
*p=40;
*p=*q;
.
.
.
}
(4分)
Ap和q的类型不一致,不能执行*p=*q;语句
B*p中存放的是地址值,因此不能执行*p=40;语句
Cq没有指向具体的存储单元,所以*q没有实际意义
Dq虽然指向了具体的存储单元,但该单元中没有确定的值,所以不能执行*p=*q;语句
正确答案D
16.
请读程序片段:
intx=20;
printf(“%d”,~x);
上面程序片段的输出结果是().
(4分)
A02
B–20
C-21
D-11
正确答案C
17.
下面程序的运行结果是().
#include
main()
{intnum=0;
while(num<=2)
{num++;
printf(“%d\n”,num);
}
}
(4分)
A1
B1 2
C123
D1234
正确答案C
18.
下面程序()。
1main()
2{
3inta[3]={0};
4intI;
5for(I=0;I<3;I++)scanf(“%d”,&a[I]);
6for(I=I;I<4;I++)a[0]=a[0]+a[I];
7printf(“%d”,a[0]);
8}
(4分)
A没有错误
B第3行有错误
C第5行有错误
D第6行有错误
正确答案D
19.
根据定义和数据的输入方式,输入语句的正确形式为()。
已有定义:
floatf1,f2;
数据的输入方式:
4.52
3.5
(4分)
Ascanf(“%f,%f”,&f1,&f2);
Bscanf(“%f%f”,&f1,&f2);
Cscanf(“%3.2f%2.1f”,&f1,&f2);
Dscanf(“%3.2f,%2.1f”,&f1,&f2);
正确答案B
20.
已有定义intk=2;int*ptr1,*ptr2;且ptr1和ptr2均已指向变量k,下面不能正确执行的赋值语句是()。
(4分)
Ak=*ptr1+*ptr2;
Bptr2=k;
Cp1=*p2;
D*p1=p2;
正确答案B
21.
以下能正确计算1*2*3*……*10的程序是().
(4分)
A
do
s=s*i;
i++;
}while(i<=10);
Bdo{i=1;s=0;
s=s*i; i++;
}while(i<=10);
Ci=1;s=1;
do{s=s*i;
i++;
}while(i<=10);
Di=1;s=0;
do{s=s*i;
i++;
}while(i<=10);
正确答案C
22.
以下程序输出的结果是()
voidmain()
{ inta=5,*p1,**p2;
p1=&a,p2=&p1;
(*p1)++;
printf(“%d”,**p2);
}
(4分)
A5
B4
C6
D不确定
正确答案C
23.
若有以下说明和语句,则对中域的正确引用方式是()。
Structpupil
{char name[20;
intsex;
}pup,*p;
p=&pup;
(4分)
Ap.pup.sex
Bp->pup.sex
C(*p).pup.sex
D(*p).sex
正确答案D
24.
若有以下定义和说明:
#include“stdio.h”
structstd
{charnum[6];
charname[8];
floatmark[4];
}a[30];
FILE *fp;
设文件中以二进制形式存有10个班的学生数据,且已正确打开,文件指针定
位于文件开头。
若要从文件中读出30个学生的数据放入a数组中,以下不能
此功能的语句是()。
(4分)
Afor(i=0;i<30;i++)
fread(&a[i],sizeof(structstd),1L,fp);
Bfor(i=0;i<30; i++, i++)
fread(a+i,sizeof(structstd),1L,fp);
Cfread(a,sizeof(structstd),30L,fp);
Dfor(i=0;i<30;i++)
fread(a[i],sizeof(structstd),1L,fp);
正确答案D
25.
设有以下说明语句
structstu
{inta;
floatb;
}stutype;
则下面的叙述不正确的是().
(4分)
Astruct是结构体类型的关键字
Bstructstu是用户定义的结构体类型
Cstutype是用户定义的结构体类型名
Da和b都是结构体成员名
正确答案C
一、单选题(每题4分,共25道小题,总分值100分)
1.
根据题目中已给出的数据的输入和输出形式,程序中输入输出语句的正确内容是()。
main()
{intx;floaty;
pringf(“enterx,y;”)
输入语句
输出语句
}
输入形式 enterx,y:
23.4
输出形式 x+y=5.40
(4分)
Ascanf(“%d,%f”,&x,&y);
printf(“x+y=%4.2f”,x+y);
Bscanf(“%d%f”,&x,&y);
printf(“x+y=%4.2f”,x+y);
Cscanf(“%d%f”,&x.&y);
printf(“x+y=%6.1f”,x+y);
Dscanf(“%d%3.1f”,&x,&y);
printf(“x+y=%4.2f”,x+y);
正确答案B
2.
对以下说明语句的正确理解是()。
inta[10]={6,7,8,9,10};
(4分)
A将5个初值依次赋给a[1]至a[5]
B将5个初值依次赋给a[0]至a[4]
C将5个初值依次赋给a[6]至a[10]
D因为数组长度与初值的个数不同,所以此语句不正确
正确答案B
3.
下面程序()。
1main()
2{
3inta[3]={0};
4intI;
5for(I=0;I<3;I++)scanf(“%d”,&a[I]);
6for(I=I;I<4;I++)a[0]=a[0]+a[I];
7printf(“%d”,a[0]);
8}
(4分)
A没有错误
B第3行有错误
C第5行有错误
D第6行有错误
正确答案D
4.
以下对C语言中共用体类型数据的叙述正确的是( )。
(4分)
A可以对共用体变量名直接赋值
B一个共用体变量中可以同时存放其所有成员
C一个共用体变量中不可能同时存放其所有成员
D共用体类型定义中不能出现结构体类型的成员
正确答案C
5.
设有以下语句:
charx=3,y=6,z;
z=x^y<<2;
则z的二进制值是().
(4分)
A00010100
B00011011
C00011100
D0*******
正确答案B
6.
下面程序段的运行结果是()
intn=0;
while(n++<=2); printf(“%d”,n);
(4分)
A2
B3
C4
D有语法错
正确答案C
7.
fwrite函数的一般调用形式是()。
(4分)
Afwrite(buffer,count,size,fp);
Bfwrite(fp,size,count,buffer);
Cfwrite(fp,count,size,buffer);
Dfwrite(buffer,size,count,fp);
正确答案D
8.
若要利用下面的程序片段使指针变量p指向一个存储整型变量的存储单元,则[ ]中应填入的内容是( )。
Int*p;
P=[ ]malloc(sizeof(int));
(4分)
Aint
Bint*
C(*int)
D(int*)
正确答案D
9.
下面程序段的运行结果是().
for(y=1;y<10;)y=((x=3*y,x+1),x-1);
printf(“x=%d,y=%d”,x,y);
(4分)
Ax=27,y=27
Bx=12,y=13
Cx=15,y=14
Dx=y=27
正确答案C
10.
下面程序段中,for循环的执行次数是()。
char*s=”a18bc”;
for( ;*s!
=’’;s++) printf(“*”);
(4分)
A9
B5
C6
D7
正确答案C
11.
对for(表达式1;;表达式3)可以理解为().
(4分)
Afor(表达式1;0;表达式3)
Bfor(表达式1;1;表达式3)
Cfor(表达式1;表达式1;表达式3)
Dfor(表达式1;表达式3;表达式3)
正确答案B
12.
设有下面的程序段:
chats[]=”china”;char*p;p=s;
则下列叙述正确的是()。
(4分)
As和p完全相同
B数组s中的内容和指针变量p中的内容相等
Cs数组长度和p所指向的字符串长度相等
D*p与s[0]相等
正确答案D
13.
设有以下说明:
structpacked
{unsignedone:
1;
unsignedtwo:
2;
unsignedthree:
3;
unsignedfour:
4;
}data;
则以下位段数据的引用中不能得到正确数值的是()
(4分)
Adata.one=4
Bdata.two=3
Cdata.three=2
Ddata.four=1
正确答案A
14.
在宏定义#definePI 3.14159中,用宏名PI代替一个()。
(4分)
A常量
B单精度数
C双精度数
D字符串
正确答案D
15.
若有宏定义:
#defineMOD(x,y)x%y
则执行以下语句后的输出为( )。
Intz,a=15,b=100;
Z=MOD(b,a);
Printf(“%d”,z++);
(4分)
A11
B10
C6
D宏定义不合法
正确答案B
16.
阅读以下程序及对程序功能的描述,其中正确的描述是()。
#include
main()
{
file*in,*out;
charch,infile[10],outfile[10];
scanf(“%s”,infile);
printf(“Entertheinfilename:
”);
scanf(“%s”,outfile);
if(in=fopen(infile,”r”))==NULL)
{
printf(“cannotopeninfile”);
exit(0);
}
if((out=fopen(outfile,”w”))==NULL)
{
Printf(“cannotopenoutfile”);
Exit(0);
}
while(!
Feof(in)fputc(fgetc(in),out);
fclose(in);
fclose(out);
}
(4分)
A程序完成将磁盘文件的信息在屏幕上显示的功能
B程序完成将两个磁盘文件和二为一的功能
C程序完成将一个磁盘文件复制到另一个磁盘文件中
D程序完成将两个磁盘文件合并且在屏幕上输出
正确答案C
17.
若使用一维数组名作函数实参,则以下正确的说法是().
(4分)
A必须在主调函数中说明此数组的大小
B实参数组类型与形参数组类型可以不匹配
C在被调函数中,不需要考虑形参数组的大小
D实参数组名与形参数组名必须一致
正确答案A
18.
以下能正确计算1*2*3*……*10的程序是().
(4分)
A
do
s=s*i;
i++;
}while(i<=10);
Bdo{i=1;s=0;
s=s*i; i++;
}while(i<=10);
Ci=1;s=1;
do{s=s*i;
i++;
}while(i<=10);
Di=1;s=0;
do{s=s*i;
i++;
}while(i<=10);
正确答案C
19.
已有定义intk=2;int*ptr1,*ptr2;且ptr1和ptr2均已指向变量k,下面不能正确执行的赋值语句是()。
(4分)
Ak=*ptr1+*ptr2;
Bptr2=k;
Cp1=*p2;
D*p1=p2;
正确答案B
20.
以下对结构体类型变量的定义中不正确的是().
(4分)
A#defineSTUDENTstructstudent
STUDENT
{intnum;
floatage;
}std1;
Bstructstudent
{intnum;
floatage;
}std1;
Cstruct
{intnum;
floatage;
}std1;
Dstruct
intnum;
floatage;
}student;
structstudentstd1;
正确答案D
21.
若有以下定义和语句:
uniondata
{inti;
charc;
floatf;
}a;
intn;
则以下语句正确的是( )。
(4分)
Aa=5;
Ba={2,’a’,1.2};
Cprintf(“%d”,a);
Dn=a;
正确答案B
22.
对于for(表达式1;;表达式3)可理解为()
(4分)
Afor(表达式1;1;表达式3)
Bfor(表达式1:
1;表达式3)
Cfor(表达式1;表达式1;表达式3)
Dfor(表达式1;表达式3;表达式3)
正确答案B
23.
以下程序的运行结果是()。
#defineMIN(x,y) (x)<(y)?
(x):
(y)
main()
{inti=10,j+15,k;
k+10*MIN(i,j);
printf(“%d”,k);
}
(4分)
A10
B15
C100
D150
正确答案B
24.
以下可作为函数fopen中第一个参数的正确格式是()。
(4分)
Ac:
userext.txt
Bc:
userext.txt
Cuserext.txt
Dc\user\text.txt
正确答案D
25.
以下使i的运算结果为4的表达式是()。
(4分)
Ainti=0,j=0;
(i=3,(j十十)十i);
Binti=1,j=0;
j=i=((i=3)*2);
Cinti=0,j=1;
(j==1)?
(i=1);(i=3);
Dinti=1,j=1;
i+=j十=2;
正确答案D
一、单选题(每题4分,共25道小题,总分值100分)
1.
若有以下程序段:
…………
inta[]={4,0,2,3,1},I,j,t;
for(I=1i<5;I++)
{t=a[I];j=I-1;
while(j>=0&&t>a[j])
{a[j+I]=a[j];j--;}
a[j+1]=t;}
…………
则该程序段的功能是()。
(4分)
A对数组a进行插入排序(升序)
B对数组a进行插入排序(降序)
C对数组a进行选择排序(升序)
D对数组a进行选择排序(降序)
正确答案B
2.
对以下说明语句的正确理解是()。
inta[10]={6,7,8,9,10};
(4分)
A将5个初值依次赋给a[1]至a[5]
B将5个初值依次赋给a[0]至a[4]
C将5个初值依次赋给a[6]至a[10]
D因为数组长度与初值的个数不同,所以此语句不正确
正确答案B
3.
设有以下说明语句
structstu
{inta;
floatb;
}stutype;
则下面的叙述不正确的是().
(4分)
Astruct是结构体类型的关键字
Bstructstu是用户定义的结构体类型
Cstutype是用户定义的结构体类型名
Da和b都是结构体成员名
正确答案C
4.
当说明一个共用体变量时系统分配给它的内存是( )。
(4分)
A各成员所需内存量的总和
B结构中第一个成员所需内存量
C成员中占内存量最大者所需