《最新C语言题库 (1).doc》由会员分享,可在线阅读,更多相关《最新C语言题库 (1).doc(24页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精品资料C语言题库 (1).一. 选择题(单项)1. C语言中的标识符只能由字母、数字和下划线种字符组成,且第一个字符。必须为字母必须为下划线C 必须为字母或下划线 D 可以是字母、数字和下划线中的任一种字符2下面4个选项中,均是C语言关键字的选项是。auto enum includeswitch typedef continueC signed union scanf D if struct type 3下面4个选项中,均是不合法的用户标识符的选项是。A P_0 dofloat la0 _AC ba goto int D _123 temp INT4在C语言中,int、char和short三
2、种类型的数据在内存中所占用的字节数。由用户自己定义均为2个字节C 是任意的 D 由所用机器的机器字长决定5下面4个选项中,均是合法浮点数的选项是。+1e+1 5e9.4 03e2.60 12e4 8e5C 123e 1.2e.4 +2e1 D e3 .8e4 5.e06.下面不正确的字符串常量是。abc 1212C 0 D 7.假设所有的变量均为整型,则表达式(a=2,b=5,b+,a+b)的值是。7 8C 6 D 28以下正确的叙述是。在C语言中,每行只能写一条语句若a是实型变量,C程序中允许赋值a=10,因此实型变量中允许存放整型数C 在C程序中,无论整数还是实数,都能被准确无误的表示 D
3、 在C程序中,%是只能用于整数运算的运算符9以下表达式值为3的是。A 1613%10 B 2+3/2C 14/32 D (2+6)/(129)10. 设变量a是整型,f是实型,i是双精度型,则表达式10+a+i*f值的数据类型为。A int B floatC double D 不确定11在C语言中,char型数据在内存中的存储形式是。A 补码 B 反码C 原码 D ASC码12设有说明语句:char w;int x;float y;double z;值的数据类型为。A float B charC int D double13在C语言中,要求运算数必须是整型的运算符是。A / B +C != D
4、 %14在C语言中一个int型数据在内存中占2个字节,则unsigned int型数据的取值范围为。A 0255 B 032 767C 065 535 D 02 147 483 64715下面正确的字符常量是。c C W D 16.已知各变量的类型说明如下: int k , a , b;unsigned long w=5; double x=1.42;则以下不正确的表达式是。A x%(-3) B w+= -2C k=(a=2,b=3,a+b) D a+=a-=(b=4)*(a=3)17.若定义语句:int a=7;float x=2.5;y=4. 7; 则表达式x+a%3*(int)(x+y)
5、%2/4的值是。A 2.500000 B 2.750000C 3.500000 D 0.00000018.已知字母A的ASC码为十进制数65,且定义c2为字符型变量,则执行语句c2=A+6-3;后,c2中的值为:A D B 68C 不确定的值 D C19以下程序的运行结果是。# includemain() int m=5,n=10; printf(“%d,%dn”,m+,-n);A 5, 9 B 6,9 C 5,10 D 6,1020. 以下程序的运行结果是。# includemain() int a=201,b=012; printf(“%2d,%2dn”,a,b);A 01,12 B 20
6、1,10 C 01,10 D 20,0121.设有如下程序# includemain() char ch1=A,ch2=a; printf(“%cn”,(ch1,ch2);则下列叙述正确的为A 程序的输出结果为大写字母A B 程序的输出结果为小写字母a C 运行时产生错误信息 D 格式说明符的个数少于输出项的个数,编译出错22以下正确定义整型变量a,b和c并为其赋初值5的语句是。A int a=b=c=5; B int a,b,c=5;C int a=5,b=5,c=5; D a=b=c=5;23.设x,y均为float型变量,则不合法的赋值语句是。A +x ; B y=(x%2)/10 ;
7、C ; D x=y=0;24.输入数据的形式是25,13,10,则程序的输出结果是。main()int x,y,z;scanf (“%d%d%d”,&x,&y,&z);printf(“x+y+z=%dn”,x+y+z);A x+y+z=48 B x+y+z=35 C x+z=35 D 不确定值25若有如下定义,则正确的赋值语句是。int a,b; float x;A a=1,b=2, B b+; C a=b=5 D b=int(x);1.已知学生记录描述为struct studentint no;char name20;char sex;structint year;int month;int
8、 day;birth;struct student s;设变量s中的“生日”应该是“1984年11月11日”,下列对“生日”的正确赋值方式是( )A. year=1984;B.birth.year=1984; month=11; birth.month=11;day=11; birth.day=11;C.s.year=1984; D.s.birth.year=1984;s.month=11; s.birth.month=11;s.day=11; s.birth.day=11;2.当说明一个结构体变量时系统分配给它的内存是( )A.各成员所需内存的总和B.结构中第一个成员所需内存量C.成员中占内
9、存量最大者所需的容量D.结构中最后一个成员所需内存量3.设有以下说明语句struct stuint a;float b;stutype;则以下叙述不正确的是( )A. struct 是结构体类型的关键字B. struct stu 是用户定义的结构体类型C. stutype 是用户定义的结构体类型名D. a 和 b 都是结构体成员名4.C语言结构体类型变量在程序执行期间( )A. 所有成员一直驻留在内存中B. 只有一个成员驻留在内存中C. 部分成员驻留在内存中D. 没有成员驻留在内存中5.在16位机动IBM-PC机上使用C语言,若有如下定义:struct dataint I; char ch;
10、double f;b;则结构体变量b占用内存的字节数是( )A.1 B.7 C.8 D.116.以下程序的运行结果是( )main()struct dateint year,month,day;today;printf(%dn,sizeof(struct date);A.6 B.8 C.10 D.127.根据下面的定义,能打印出字母M的语句是( )struct personchar name9;int age;struct person class10=John,17,Paul,19,Mary18,adam,16;A.printf(%cn,class3.name);B.printf(%cn,c
11、lass3.name1);C.printf(%cn,class2.name1);D.printf(%cn,class2.name0);8.下面程序的运行结果是( )main()struct cmplxint x;int y;cnumn2=1,3,2,7;printf(%dn),cnum0.y/cnum0.x*cnum1.x;A.0 B.1 C.3 D.69.若有以下定义和语句struct studentint age;int num;struct student stu3=1001,20,1002,19,1003,21;main()struct student *p;p=stu;则以下不正确的
12、引用是( )A.(p+)-num B.p+ C.(*p).num D.p=&stu.age10.以下 scanf 函数调用语句中对结构体变量成员的不正确引用是( )struct pupilchar name20; int age; int sex;pup5,*p;p=pup;A.scanf(%s,pup0.name); B.scanf(%d,&pup0.age);C.scanf(%d,&(p-.sex); D.scanf(%d,p-age);11.若有以下说明和语句:struct studentint age; int num;std.*p;p=&std;则以下对结构体变量std中成员age的
13、引用方式不正确的是( )A. std.age B.P-age C.(*p).age D.*p.age12.若有以下程序段:struct dentint n; int *m;int a=1,b=2,c=3;struct dent s3=101,&a,102,&b,103,&c;main()struct dent *p;p=s; 则以下表达式值为2是( )A.(P+)-m B.*(P+)-m C.(*P).m D.*(+p)-m13.设有以下语句:struct stint n; struct st *next;struct st a3=5.&a1,7,&a2,9,0;*p;p=&a0;则以下表达式
14、的值为6的是( )A.p+-n B.p-n+ C.(*p).n+ D.+p-n15.若有以下说明和语句,则下面表达式中的值为1002的是( )struct student int num;int age; ;struct student stu3=1001,20,1002,19,1003,21;struct student *p;p=stu;A.(p+)-num B.(+p)- num C.(*p).num D.(*+p).age16.以下对结构体变量stul中成员age的非法引用的是( )struct strudentint age; int num;stul,*p;p=&stul;A.st
15、ul.age B.student.age C.p-age D.(*p).age17.设有以下说明和定义语句,则下面表达式中值为3的是( )struct sint il; struct s *12;struct s a3=1,&a1,2,&a2,3,&a0,*ptrptr=&a1;A.ptr-il+ B.ptr+-il C.*ptr-il D.+ptr-il18.当说明一个共用体变量时系统分配给它的内存是( )A.各成员所需内存量的总和B.结构中第一个成员所需内存量C.成员中占内存量最大者所需内存量D.结构中最后一个成员所需内存量19.以下对C语言中共用体类型数据的叙述正确的是( )A.可以对共
16、用体变量名直接赋值B.一个共用体变量中可以同时存放其所有成员C.一个共用体变量中不能同时存放其所有成员D.共用体类型定义中不能出现结构体类型的成员20.若有以下定义语句union dataint l; char c; float f;a;int n;则以下语句正确的是( )A.a=5; B.a=2,a,1.2; C.printf(%dn,a.l); D.n=a;21.设有以下语句,则下面不正确的叙述是( )union dataint I; char c; float f;UN;A.UN所占的内存长度等于成员f的长度B.UN的地址和它的各成员地址都是同一地址C.UN不可以作为函数参数D.不能对U
17、N赋值,但可以在定义un时对它初始化22.C语言共用体类型变量在程序运行期间( )A.所有成员一直驻留在内存中B.只有一个成员驻留在内存中C.部分成员驻留在内存中D.没有成员驻留在内存中23.以下程序的运行结果是( )#includemain()union long a;int b;char c;m;printf(%dn,sizeof(m);A.2 B.4 C.6 D.825.以下程序的运行结果是:( )#includeunion pw int i;char ch2;a;main() a.ch0=13;a.ch1=0;printf(%dn,a.i);A.13 B.14 C.208 D.209
18、文件选择题:1下列哪个是字符写函数( )。 Afgetc Bfputc Cfgets D fwrite2下列哪个是字符串读函数( )。 Afgetc Bfputc Cfgets D fwrite3若要打开D盘上user文件夹下名为abctxt的文本文件进行读、写操作,符合此要求的函数调用是( )。Afopen(D:userabc.txt,r)Bfopen(D:userabc.txt,w)Cfopen(D:userabc.txt,r+)Dfopen(D:userabc.txt,rb)4下列哪个是读写文件出错检测函数( )。Aferror Bclearerr Cfeof D fwrite5当顺利执
19、行了文件关闭操作时,fclose函数的返回值是( )。A -1BTRUE C 0 D 16当不能正确执行文件关闭操作时,fclose函数的返回值是( )。A -1BEOF C TRUE D 17 以下要作为函数fopen中第一个参数的正确格式是:( )A.c:usertext.txt B.c:rsertext.txt C.usertext.txt D.c:usertext.txt8若执行fopen函数时发生错误,则函数的返回值是:( )A地址值 B.null C.1 D.EOF9.若以”a+”方式打开一个已存在的文件,则以下叙述正确的是:( )A.文件打开时,原有文件内容不被删除,位置指针移到
20、文件末尾,可作添加和读操作。B.文件打开时,原有文件内容被删除,位置指针移到文件开头,可作重新写和读操作。C.文件打开时,原有文件内容被删除,只可作写操作。D.以上各种说法皆不下确。10.当顺利执行了文件关闭操作时,fclose函数的返回值是:( )A-1 B.TURE C.0 D.111.已知函数的高速用形式:fread(buffer,size,count,fp);其中buffer代表的是( )A.一个整型变量,代表要读入的数据项总数B.一个文件指针,指向要读的文件C一个指针,指向要读入数据的存放地址 D.一个存储区,存放要读的数据项12.fscanf函数的正确调用形式是:( )Afscan
21、f(fp,格式字符串,输也表列) B.fscanf(格式字符串,输出表列, fp)C.fscanf(格式字符串,文件指针,输出表列)D.fscanf(文件指针,格式字符串,输入表列)13.fwrite函数的一般调用形式是:( )Afwrite(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都正确
22、10.若调用fputc函数输出字符成功,则其返回值是:( )AEOF B.1 C.0 D.输出的字符15.函数调用语句:fseek(fp,-20L,2);的含义是( )A将文件位置指针移到了距离文件头20个字节处B.将文件位置指针从当前位置向后移动20个字节 C.将文件 位置指针从文件末尾处向后退20个字节D.将文件位置指针移到了距离当前位置20个字节处16.利用fseek函数可以实现的操作是:( )A改变文件的位置指针 B.文件的顺序读写C.文件的随机读写D.以上答案均正确17.Rewind,函数的作用是:( )A.使位置指针重新返回文件的开头B.将位置指针指向文件中所要求的特定位置C.使位
23、置指针指向文件的末尾D.使位置指针自动移至下一个字符位置18.函数ftell(fp)作用是:( )A.得到流式文件 中的当前位置B.移动流式文件 的位置指针C.初始化流式文件 的位置指针 D.以上答案均正确 19、下列程序的输出结果是( )struct abc int a, b, c; ;main() struct abc s2=1,2,3,4,5,6;int t; t=s0.a+s1.b%s0.c; printf(%d n,t); A 2 B 3 C 4 D 720.下列程序的输出结果是( )struct student int a, b, c; ; main() struct studen
24、t stu2=1,2,3,4,5,6; int t;t=stu0.a+stu1.b%stu0.c;printf(%d n,t); (A) 0 (B) 1 (C) 3 (D) 5二填空题1C语言中的标识符可分为关键字、【用户标识符】和【预定义标识符】3类。2在C语言中,用“”开头的字符序列称为转义字符,转义字符“n”的功能是【换行】;转义字符“r” 的功能是【回车】。3在C语言中,用关键字【float】定义单精度实型变量,用关键字【double】定义双精度实型变量,用关键字【char】定义字符型变量。4在C语言中,&作为双目运算符时表示的是【按位与运算】,而作为单目运算符时表示的是【取地址】。5
25、C语言所提供的基本数据类型包括:单精度型、双精度型、【整型】、【字符型】和【枚举类型】。6运算符%两侧运算量的数据类型必须都是【整型】;运算符+和-的运算量必须是【变量】。7若a是int型变量,且a的初值是6,则执行表达式a+=a-=a*a后a的值为【-60】。8若有定义语句:int x=3,y=2;float a=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语言中的赋值表达式中,
26、赋值号左边须是【变量】。11. C语言中的标识符只能由3种字符组成,它们是【关键字】、【用户标识符】和【预定义标识符】。12表达式x=6应当读做【将6赋给变量x】。13设在C语言中一个int型数据在内存中占2个字节,则int型数据的取值范围为【-3276832767】(用十进制表示)。14若有定义语句:int s=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. 以
27、下程序的输出结果为【】。main() int x=1,y=2;printf(“x=%d y=%d*sum*=%dn”,x,y,x+y);printf(“10 Squared is :%dn”,10*10);x=1 y=2*sum*=310 Squared is :10018. 以下程序的输出结果为【】。 includestdio.hmain() int x=10;float pi=3.1416;printf(“(1) %dn”,x);printf(“(2) %6dn”,x);printf(“(3) %fn”,56.1);printf(“(4) %14fn”,pi);(1)10(2) 10(3)
28、56.100000(4) 3,14160019. 以下程序的输出结果为【20】。#includestdio.hmain() int n=0;n+=(n=10);printf(“%dn”,n);20.已知字母A的ASC的值为65。以下程序的输出结果为【a=66, b=E】。#includestdio.hmain() char a,b;a=A+4-3;b=A+6-2;printf(“a=%d,b=%cn”,a,b);编程题1输入三角形的三边长,求三角形的面积。可设三边长分别为a,b,c能构成三角形,则三角形的公式为: 其中: 2从键盘输入一个大写字母,要求改用小写字母输出。3输入一个华氏温度,要求
29、输出摄氏温度。公式为 输出要有文字说明,取2位小数。4设圆半径 ,求圆周长,圆面积。用scanf输入数据,输出结果时要求有文字说明,取小数点后2位数字。5设圆半径 ,求圆球表面积,圆球体积。用scanf输入数据,输出结果时要求有文字说明,取小数点后2位数字。6设圆半径 ,圆柱高h=3,求圆柱体积。用scanf输入数据,输出结果时要求有文字说明,取小数点后2位数字。结构体编程:1利用下列结构和初始化条件,计算并输出学生的平均成绩和不及格的人数。 struct student int num; char *name; char sex; float score; boy5= 101,Li ping
30、,M,45, 102,Zhang ping,M,62.5, 103,He fang,F,92.5, 104,Cheng ling,F,87, 105,Wang ming,M,58, ;答案:main() int i,c=0; float ave,s=0; for(i=0;i5;i+) s+=boyi.score; if(boyi.score60) c+=1; printf(s=%fn,s); ave=s/5;printf(average=%fncount=%dn,ave,c); 2根据如下结构,建立同学通讯录收入三个同学信息并输出 struct mem char name20; char ph
31、one10; ;答案:main() struct mem manNUM; int i; for(i=0;iNUM;i+) printf(input name:n); gets(mani.name); printf(input phone:n); gets(mani.phone); printf(nametttphonenn); for(i=0;iNUM;i+)printf(%sttt%sn,mani.name,mani.phone); 3利用下列结构和初始化条件,用指针变量输出结构数组。struct stu int num; char *name; char sex; float score;
32、boy5= 101,Zhou ping,M,45, 102,Zhang ping,M,62.5, 103,Liou fang,F,92.5, 104,Cheng ling,F,87, 105,Wang ming,M,58, ;答案:#include stdio.hmain() struct stu *ps; printf(NotNametttSextScoretn); for(ps=boy;psnum,p-score);p=p-next;while (p!=NULL);5写一函数从链表中删除学号为指定值num的结点答案:struct student *del(struct student *h
33、ead;long num)struct student *p1,*p2;if (head=NULL)printf(nlist null!n);goto end;p1=head;while (num!=p1-num&p1-next!=NULL)p2=p1;p1=p1-next;if (num=p1-num)if (p1=head) head=p1-next;else p2-next=p1-next;printf(delete:%ldn,num);n=n-1; else printf(%ld not been found!n,num);end:return(head);文件编程:1读入文件e盘上的
34、文件c1.doc,在屏幕上输出。答案:#includemain() FILE *fp; char ch; if(fp=fopen(e:c1.c,rt)=NULL) printf(nCannot open file strike any key exit!); getch(); exit(1); ch=fgetc(fp); while(ch!=EOF) putchar(ch); ch=fgetc(fp); fclose(fp);2从键盘输入一行字符,写入一个文件,再把该文件内容读出显示在屏幕上。答案:#includemain() FILE *fp; char ch; if(fp=fopen(e:
35、tt.c,a)=NULL) printf(Cannot open file strike any key exit!); getch(); exit(1); printf(input a string:n); ch=getchar(); while (ch!=n) fputc(ch,fp); ch=getchar(); rewind(fp); ch=fgetc(fp); while(ch!=EOF) putchar(ch); ch=fgetc(fp); printf(n); fclose(fp);3从string文件中读入一个含10个字符的字符串放入e盘tt.c文件中。答案:#includem
36、ain() FILE *fp; char str11; if(fp=fopen(“e:tt.c,rt)=NULL) printf(nCannot open file any key exit!); getch(); exit(1); fgets(str,11,fp); printf(n%sn,str); fclose(fp);4利用结构体,从键盘输入两个学生基本信息数据,写入e盘tt.c文件中,再读出这两个学生的数据显示在屏幕上。struct stu char name10; int num; int age; char addr15;boya2,*pp;答案:#includestruct s
37、tu char name10; int num; int age; char addr15;boya2,*pp;main() FILE *fp; char ch; int i; pp=boya; if(fp=fopen(e:tt3.c,wb+)=NULL) printf(Cannot open file strike any key exit!); getch(); exit(1); printf(ninput datan); for(i=0;iname,&pp-num,&pp-age,pp-addr); pp=boya; fwrite(pp,sizeof(struct stu),2,fp); rewind(fp); fread(pp,sizeof(struct stu),2,fp); printf(nnametnumber age addrn); for(i=0;iname,pp-num,pp-age,pp-addr); fclose(fp); getch();
限制150内