C语言题库 (1).doc
如有侵权,请联系网站删除,仅供学习与交流一.二.三.四.五.六.七.八.九. C语言题库 (1)【精品文档】第 15 页十. 选择题(单项)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个字节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 在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 %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)%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以下程序的运行结果是。# include<stdio.h>main() int m=5,n=10; printf(“%d,%dn”,m+,-n);A 5, 9 B 6,9 C 5,10 D 6,1020. 以下程序的运行结果是。# include<stdio.h>main() int a=201,b=012; printf(“%2d,%2dn”,a,b);A 01,12 B 201,10 C 01,10 D 20,0121.设有如下程序# include<stdio.h>main() 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 ; 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 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.成员中占内存量最大者所需的容量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; 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,"Mary"18,"adam",16;A.printf("%cn",class3.name);B.printf("%cn",class3.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;则以下不正确的引用是( )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的引用方式不正确的是( )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;则以下表达式的值为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.stul.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.可以对共用体变量名直接赋值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.不能对UN赋值,但可以在定义un时对它初始化22.C语言共用体类型变量在程序运行期间( )A.所有成员一直驻留在内存中B.只有一个成员驻留在内存中C.部分成员驻留在内存中D.没有成员驻留在内存中23.以下程序的运行结果是( )#include<stdio.h>main()union long a;int b;char c;m;printf("%dn",sizeof(m);A.2 B.4 C.6 D.825.以下程序的运行结果是:( )#include<stdio.h>union 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文件选择题: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当顺利执行了文件关闭操作时,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.文件打开时,原有文件内容不被删除,位置指针移到文件末尾,可作添加和读操作。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函数的正确调用形式是:( )Afscanf(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都正确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.使位置指针指向文件的末尾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 student 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语言中,&作为双目运算符时表示的是【按位与运算】,而作为单目运算符时表示的是【取地址】。5C语言所提供的基本数据类型包括:单精度型、双精度型、【整型】、【字符型】和【枚举类型】。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语言中的赋值表达式中,赋值号左边须是【变量】。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. 以下程序的输出结果为【】。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)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输入一个华氏温度,要求输出摄氏温度。公式为输出要有文字说明,取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",'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;i<5;i+) s+=boyi.score; if(boyi.score<60) c+=1; printf("s=%fn",s); ave=s/5;printf("average=%fncount=%dn",ave,c);2根据如下结构,建立同学通讯录收入三个同学信息并输出 struct mem char name20; char phone10;答案:main() struct mem manNUM; int i; for(i=0;i<NUM;i+)printf("input name:n"); gets(mani.name); printf("input phone:n"); gets(mani.phone); printf("nametttphonenn"); for(i=0;i<NUM;i+)printf("%sttt%sn",mani.name,mani.phone);3利用下列结构和初始化条件,用指针变量输出结构数组。struct stu int num; char *name; char sex; float score;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.h"main() struct stu *ps; printf("NotNametttSextScoretn"); for(ps=boy;ps<boy+5;ps+)4编写一个链表输出的函数print。答案:void print( struct student *head)struct student *p;printf("nNow,These %d records are:n",n);p=head;if (head!=NULL)doprintf("%ld %5.1fn",p->num,p->score);p=p->next;while (p!=NULL);5写一函数从链表中删除学号为指定值num的结点答案:struct student *del(struct student *head;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盘上的文件c1.doc,在屏幕上输出。答案:#include<stdio.h>main() 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从键盘输入一行字符,写入一个文件,再把该文件内容读出显示在屏幕上。答案:#include<stdio.h>main() FILE *fp; char ch; if(fp=fopen("e: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文件中。答案:#include<stdio.h>main() 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;答案:#include<stdio.h>struct stu 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;i<2;i+,pp+) scanf("%s%d%d%s",pp->name,&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;i<2;i+,pp+) printf("%st%5d%7d %sn",pp->name,pp->num,pp->age,pp->addr); fclose(fp); getch();