C语言题库 1.docx
《C语言题库 1.docx》由会员分享,可在线阅读,更多相关《C语言题库 1.docx(26页珍藏版)》请在冰豆网上搜索。
C语言题库1
一.选择题(单项)
1.C语言中的标识符只能由字母、数字和下划线3种字符组成,且第一个字符——。
A 必须为字母 B 必须为下划线
C必须为字母或下划线D可以是字母、数字和下划线中的任一种字符
2.下面4个选项中,均是C语言关键字的选项是——。
A autoenuminclude B switchtypedefcontinue
CsignedunionscanfDifstructtype
3.下面4个选项中,均是不合法的用户标识符的选项是——。
A AP_0do B floatla0_A
Cb-agotointD_123tempINT
4.在C语言中,int、char和short三种类型的数据在内存中所占用的字节数——。
A 由用户自己定义 B 均为2个字节
C是任意的D由所用机器的机器字长决定
5.下面4个选项中,均是合法浮点数的选项是——。
A +1e+15e-9.403e2 B -.6012e-4-8e5
C123e1.2e-.4+2e-1D-e3.8e-45.e-0
6.下面不正确的字符串常量是——。
A ˊabcˊ B 〞12ˊ12〞
C〞0〞D〞〞
7.假设所有的变量均为整型,则表达式(a=2,b=5,b++,a+b)的值是——。
A 7 B 8
C6D2
8.以下正确的叙述是——。
A 在C语言中,每行只能写一条语句
B 若a是实型变量,C程序中允许赋值a=10,因此实型变量中允许存放整型数
C在C程序中,无论整数还是实数,都能被准确无误的表示
D在C程序中,%是只能用于整数运算的运算符
9.以下表达式值为3的是——。
A16-13%10B2+3/2
C14/3-2D(2+6)/(12-9)
10.设变量a是整型,f是实型,i是双精度型,则表达式10+ˊaˊ+i*f值的数据类型为——。
AintBfloat
CdoubleD不确定
11.在C语言中,char型数据在内存中的存储形式是——。
A补码B反码
C原码DASCⅡ码
12.设有说明语句:
charw;intx;floaty;doublez;
值的数据类型为——。
AfloatBchar
CintDdouble
13.在C语言中,要求运算数必须是整型的运算符是——。
A/B++
C!
=D%
14.在C语言中一个int型数据在内存中占2个字节,则unsignedint型数据的取值范围为——。
A0~255B0~32767
C0~65535D0~2147483647
15下面正确的字符常量是——。
A 〞c〞 B 〞\\〞
CˊWˊDˊˊ
16.已知各变量的类型说明如下:
intk,a,b;
unsignedlongw=5;
doublex=1.42;
则以下不正确的表达式是——。
Ax%(-3)Bw+=-2
Ck=(a=2,b=3,a+b)Da+=a-=(b=4)*(a=3)
17.若定义语句:
inta=7;floatx=2.5;y=4.7;则表达式x+a%3*(int)(x+y)%2/4的值是——。
A2.500000B2.750000
C3.500000D0.000000
18.已知字母A的ASCⅡ码为十进制数65,且定义c2为字符型变量,则执行语句
c2=ˊAˊ+ˊ6ˊ-ˊ3ˊ;后,c2中的值为:
ADB68
C不确定的值DC
19.以下程序的运行结果是——。
#include
main()
{
intm=5,n=10;
printf(“%d,%d\n”,m++,--n);
}
A5,9B6,9C5,10D6,10
20.以下程序的运行结果是——。
#include
main()
{
inta=201,b=012;
printf(“%2d,%2d\n”,a,b);
}
A01,12B201,10C01,10D20,01
21.设有如下程序
#include
main()
{
charch1=’A’,ch2=’a’;
printf(“%c\n”,(ch1,ch2));
}
则下列叙述正确的为——
A程序的输出结果为大写字母A
B程序的输出结果为小写字母a
C运行时产生错误信息
D格式说明符的个数少于输出项的个数,编译出错
22.以下正确定义整型变量a,b和c并为其赋初值5的语句是——。
Ainta=b=c=5;Binta,b,c=5;
Cinta=5,b=5,c=5;Da=b=c=5;
23.设x,y均为float型变量,则不合法的赋值语句是——。
A++x;By=(x%2)/10;C
;Dx=y=0;
24.输入数据的形式是25,13,10<回车>,则程序的输出结果是——。
main()
{
intx,y,z;
scanf(“%d%d%d”,&x,&y,&z);
printf(“x+y+z=%d\n”,x+y+z);
}
Ax+y+z=48Bx+y+z=35Cx+z=35D不确定值
25.若有如下定义,则正确的赋值语句是——。
inta,b;floatx;
Aa=1,b=2,Bb++;Ca=b=5Db=int(x);
1.已知学生记录描述为
structstudent
{intno;
charname[20];
charsex;
struct
{intyear;
intmonth;
intday;}birth;};
structstudents;
设变量s中的“生日”应该是“1984年11月11日”,下列对“生日”的正确赋值方式是()
A.year=1984;
h.day=11;
2.当说明一个结构体变量时系统分配给它的内存是()
A.各成员所需内存的总和
B.结构中第一个成员所需内存量
C.成员中占内存量最大者所需的容量
D.结构中最后一个成员所需内存量
3.设有以下说明语句
structstu
{inta;floatb;}stutype;则以下叙述不正确的是()
A.struct是结构体类型的关键字
B.structstu是用户定义的结构体类型
C.stutype是用户定义的结构体类型名
D.a和b都是结构体成员名
4.C语言结构体类型变量在程序执行期间()
A.所有成员一直驻留在内存中
B.只有一个成员驻留在内存中
C.部分成员驻留在内存中
D.没有成员驻留在内存中
5.在16位机动IBM-PC机上使用C语言,若有如下定义:
structdata
{intI;charch;doublef;}b;
则结构体变量b占用内存的字节数是()
A.1B.7C.8D.11
6.以下程序的运行结果是()
main()
{structdate
{intyear,month,day;}today;
printf("%d\n",sizeof(structdate));}
A.6B.8C.10D.12
7.根据下面的定义,能打印出字母M的语句是()
structperson
{charname[9];
intage;};
structpersonclass[10]={"John",17,"Paul",19,"Mary"18,"adam",16};
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]);
8.下面程序的运行结果是()
main()
{structcmplx{intx;inty;}cnumn[2]={1,3,2,7};
printf("%d\n"),cnum[0].y/cnum[0].x*cnum[1].x;}
A.0B.1C.3D.6
9.若有以下定义和语句
structstudent
{intage;
intnum;};
structstudentstu[3]={{1001,20},{1002,19},{1003,21}};
main()
{structstudent*p;p=stu;……}则以下不正确的引用是()
A.(p++)->numB.p++C.(*p).numD.p=&stu.age
10.以下scanf函数调用语句中对结构体变量成员的不正确引用是()
structpupil
{charname[20];intage;intsex;}pup[5],*p;
p=pup;
A.scanf("%s",pup[0].name);B.scanf("%d",&pup[0].age);
C..scanf("%d",&(p->.sex));D.scanf("%d",p-age);
11.若有以下说明和语句:
structstudent
{intage;intnum;}std.*p;
p=&std;则以下对结构体变量std中成员age的引用方式不正确的是()
A.std.ageB.P->ageC.(*p).ageD.*p.age
12.若有以下程序段:
structdent
{intn;int*m;};
inta=1,b=2,c=3;
structdents[3]={{101,&a},{102,&b},{103,&c}};
main()
{structdent*p;p=s;……}则以下表达式值为2是()
A.(P++)->mB.*(P++)->mC.(*P).mD.*(++p)->m
13.设有以下语句:
structst
{intn;structst*next;};
structsta[3]={5.&a[1],7,&a[2],9,'\0'};*p;
p=&a[0];则以下表达式的值为6的是()
A.p++->nB.p->n++C.(*p).n++D.++p->n
15.若有以下说明和语句,则下面表达式中的值为1002的是()
structstudent
{intnum;intage;};
structstudentstu[3]={{1001,20},{1002,19},{1003,21}};
structstudent*p;
p=stu;
A.(p++)->numB.(++p)->numC.(*p).numD.(*++p).age
16.以下对结构体变量stul中成员age的非法引用的是()
structstrudent
{intage;intnum;}stul,*p;
p=&stul;
C.p->ageD.(*p).age
17.设有以下说明和定义语句,则下面表达式中值为3的是()
structs
{intil;structs*12;};
structsa[3]={1,&a[1],2,&a[2],3,&a[0]},*ptr
ptr=&a[1];
A.ptr->il++B.ptr++->ilC.*ptr->ilD.++ptr->il
18.当说明一个共用体变量时系统分配给它的内存是()
A.各成员所需内存量的总和
B.结构中第一个成员所需内存量
C.成员中占内存量最大者所需内存量
D.结构中最后一个成员所需内存量
19.以下对C语言中共用体类型数据的叙述正确的是()
A.可以对共用体变量名直接赋值
B.一个共用体变量中可以同时存放其所有成员
C.一个共用体变量中不能同时存放其所有成员
D.共用体类型定义中不能出现结构体类型的成员
20.若有以下定义语句
uniondata
{intl;charc;floatf;}a;
intn;则以下语句正确的是()
A.a=5;B.a={2,'a',1.2};C.printf("%d\n",a.l);D.n=a;
21.设有以下语句,则下面不正确的叙述是()
uniondata
{intI;charc;floatf;}UN;
A.UN所占的内存长度等于成员f的长度
B.UN的地址和它的各成员地址都是同一地址
C.UN不可以作为函数参数
D.不能对UN赋值,但可以在定义un时对它初始化
22.C语言共用体类型变量在程序运行期间()
A.所有成员一直驻留在内存中
B.只有一个成员驻留在内存中
C.部分成员驻留在内存中
D.没有成员驻留在内存中
23.以下程序的运行结果是()
#include
main()
{union
{longa;
intb;
charc;}m;
printf("%d\n",sizeof(m));}
A.2B.4C.6D.8
25.以下程序的运行结果是:
()
#include
unionpw
{inti;
charch[2];
}a;
main()
{a.ch[0]=13;
a.ch[1]=0;
printf("%d\n",a.i);}
A.13B.14C.208D.209
文件选择题:
1.下列哪个是字符写函数()。
A.fgetcB.fputcC.fgetsDfwrite
2.下列哪个是字符串读函数()。
A.fgetcB.fputcC.fgetsDfwrite
3.若要打开D盘上user文件夹下名为abc.txt的文本文件进行读、写操作,符合此要求的函数调用是()。
A.fopen("D:
\\user\\abc.txt","r")B.fopen("D:
\user\abc.txt","w")
C.fopen("D:
\\user\\abc.txt","r+")D.fopen("D:
\user\abc.txt","rb")
4.下列哪个是读写文件出错检测函数()。
A.ferrorB.clearerrC.feofDfwrite
5.当顺利执行了文件关闭操作时,fclose函数的返回值是()。
A.-1B.TRUEC.0D.1
6.当不能正确执行文件关闭操作时,fclose函数的返回值是()。
A.-1B.EOFC.TRUED.1
7.以下要作为函数fopen中第一个参数的正确格式是:
()
A.c:
user\text.txtB.c:
\rser\text.txtC.\user\text.txtD.c:
\\user\\text.txt
8.若执行fopen函数时发生错误,则函数的返回值是:
()
A.地址值B.nullC.1D.EOF
9.若以”a+”方式打开一个已存在的文件,则以下叙述正确的是:
()
A.文件打开时,原有文件内容不被删除,位置指针移到文件末尾,可作添加和读操作。
B.文件打开时,原有文件内容被删除,位置指针移到文件开头,可作重新写和读操作。
C.文件打开时,原有文件内容被删除,只可作写操作。
D.以上各种说法皆不下确。
10.当顺利执行了文件关闭操作时,fclose函数的返回值是:
()
A.-1B.TUREC.0D.1
11.已知函数的高速用形式:
fread(buffer,size,count,fp);其中buffer代表的是()
A.一个整型变量,代表要读入的数据项总数
B.一个文件指针,指向要读的文件
C.一个指针,指向要读入数据的存放地址
D.一个存储区,存放要读的数据项
12.fscanf函数的正确调用形式是:
()
A.fscanf(fp,格式字符串,输也表列)
B.fscanf(格式字符串,输出表列,fp)
C.fscanf(格式字符串,文件指针,输出表列)
D.fscanf(文件指针,格式字符串,输入表列)
13.fwrite函数的一般调用形式是:
()
A.fwrite(buffer,count,size,fp)
B.fwrite(fp,size,count,buffer)
C.fwrite(fp,count,size,buffer)
D.fwirte(buffer,size,count,fp)
14.fgetc函数的作用是从指定文件读入一个字符,该文件的打开方式必须是()
A.只写B.追加C.读或读写D.答案B和C都正确
10.若调用fputc函数输出字符成功,则其返回值是:
()
A.EOFB.1C.0D.输出的字符
15.函数调用语句:
fseek(fp,-20L,2);的含义是()
A.将文件位置指针移到了距离文件头20个字节处
B.将文件位置指针从当前位置向后移动20个字节
C.将文件位置指针从文件末尾处向后退20个字节
D.将文件位置指针移到了距离当前位置20个字节处
16.利用fseek函数可以实现的操作是:
()
A.改变文件的位置指针
B.文件的顺序读写
C.文件的随机读写
D.以上答案均正确
17.Rewind,函数的作用是:
()
A.使位置指针重新返回文件的开头
B.将位置指针指向文件中所要求的特定位置
C.使位置指针指向文件的末尾
D.使位置指针自动移至下一个字符位置
18.函数ftell(fp)作用是:
()
A.得到流式文件中的当前位置
B.移动流式文件的位置指针
C.初始化流式文件的位置指针
D.以上答案均正确
19、下列程序的输出结果是()
structabc
{inta,b,c;};
main()
{structabcs[2]={{1,2,3},{4,5,6}};
intt;
t=s[0].a+s[1].b%s[0].c;
printf("%d\n",t);}
A2B3C4D7
20.下列程序的输出结果是()
structstudent
{inta,b,c;};
main()
{structstudentstu[2]={{1,2,3},{4,5,6}};intt;
t=stu[0].a+stu[1].b%stu[0].c;
printf("%d\n",t);}
(A)0(B)1(C)3(D)5
二.填空题
1.C语言中的标识符可分为关键字、【用户标识符】和【预定义标识符】3类。
2.在C语言中,用“\”开头的字符序列称为转义字符,转义字符“\n”的功能是【换行】;转义字符“\r”的功能是【回车】。
3.在C语言中,用关键字【float】定义单精度实型变量,用关键字【double】定义双精度实型变量,用关键字【char】定义字符型变量。
4.在C语言中,&作为双目运算符时表示的是【按位与运算】,而作为单目运算符时表示的是【取地址】。
5.C语言所提供的基本数据类型包括:
单精度型、双精度型、【整型】、【字符型】和【枚举类型】。
6运算符%两侧运算量的数据类型必须都是【整型】;运算符++和--的运算量必须是【变量】。
7.若a是int型变量,且a的初值是6,则执行表达式a+=a-=a*a后a的值为【-60】。
8.若有定义语句:
intx=3,y=2;floata=2.5,b=3.5;则表达式(x+y)%2+(int)a/(int)b的值为【1】。
9.假设m是一个3位数,从左到右依次用a、b、c表示各位数字,则从左到右各位数字是b、a、c的3位数的表达式是【(m/10%10)*100+m/100*10+m%10】。
10.在C语言中的赋值表达式中,赋值号左边须是【变量】。
11.C语言中的标识符只能由3种字符组成,它们是【关键字】、【用户标识符】和【预定义标识符】。
12.表达式x=6应当读做【将6赋给变量x】。
13.设在C语言中一个int型数据在内存中占2个字节,则int型数据的取值范围为【-32768~32767】(用十进制表示)。
14.若有定义语句:
ints=6;则表达式s%2+(s+1)%2的值为【1】。
15.把以下多项式写成只含3次乘法运算,其余皆为加、减运算的C语言表达式为【】。
16.以下程序的输出结果为【*3.140000,3.142*】。
main()
{
printf(“*%f,%4.3f*\n”,3.14,3.1415);
}
17.以下程序的输出结果为【】。
main()
{
intx=1,y=2;
printf(“x=%dy=%d*sum*=%d\n”,x,y,x+y);
printf(“10Squaredis:
%d\n”,10*10);
}
x=1y=2*sum*=3
10Squaredis:
100
18.以下程序的输出结果为【】。
include<stdio.h>
main()
{
intx=10;
floatpi=3.1416;
printf(“
(1)%d\n”,x);
printf(“
(2)%6d\n”,x);
printf(“(3)%f\n”,56.1);
printf(“(4)%14f\n”,pi);
}
(1)10
(2)10
(3)56.100000
(4)3,141600
19.以下程序的输出结果为【20】。
#include<stdio.h>
main()
{
intn=0;
n+=(n=10);
printf(“%d\n”,n);
}
20.已知字母A的ASCⅡ的值为65。
以下程序的输出结果为【a=66,b=E】。
#include<stdio.h>
main()
{
chara,b;
a=ˊAˊ+ˊ4ˊ-ˊ3ˊ;
b=ˊAˊ+ˊ6ˊ-ˊ2ˊ;
printf(“a=%d,b=%c\n”,a,b);
}
编程题
1.输入三角形的三边长,求三角形的面积。
可设三边长分别为a,b,c能构成三角形,则三角形的公式为:
其中:
2.从键盘输入一个大写字母,要求改用小写字母输出。
3.输入一个华氏温度,要求输出摄氏温度。
公式为
输出要有文字说明,取2位小数。
4.设圆半径,求圆周长,圆面积。
用scanf输入数据,输出结果时要求有文字说明,取小数点后2位数字。
5.设圆半径,求圆球表面积,圆球体积。
用scanf输入数据,输出结果时要求有文字说明,取小数点后2位数字。
6.设圆半径,圆柱高h=3,求圆柱体积。
用scanf输入数据,输出结果时要求有文字说明,取小数点后2位数字。
结