《C语言程序设计练习一(17页).doc》由会员分享,可在线阅读,更多相关《C语言程序设计练习一(17页).doc(17页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、-C语言程序设计练习一-第 17 页C语言程序设计练习一说明:本练习题主要是让学生通过练习进一步巩固C语言程序设计的基本概念和知识。本练习题与考试题库无关,如有类同纯属巧合。一、单项选择题1.下面转义字符中,表示字符串结束的是(C)A. r B. n C. 0D. f2.在Turbo C2.0中,若定义unsigned int a;则变量a在内存中分配的字节数是(B)A.1个B.2个 C.4个D.8个3.设有int x=2,y,z;执行z=y=x-;后,变量z的值是(C)A.0B.1C.2D.34.以十六进制形式输出整数的格式说明符是(C)A.%uB.%ld C.%xD.%o5.下面合法的if
2、语句是(A)A.if(a=b) c+;B.if(a=b) c+; C.ifi(ab) c+; D.if(a=b) c+;6.结束while(表达式)循环的条件是(A)A.当表达式的值为0时B.当表达式的值不为0时C.当表达式的值为1时D.当表达式的值为非1时7.下面列出的位运算符中,表示按位与操作的是(B)A.B.&C.D.|8.设有说明:int x=0x03,y=3;表达式x&y的值是(A)A.0B.1C.2D.39. 设有int a=3, b=-4, c=5;表达式(ab)? a+b: (a-b,b+4,a-=b+4)的值是(C)A. 1 B. 0 C. 3D. 710. 若有下列程序段,
3、欲使a=2、b=3,对应正确的数据输入方法是(B)(其中表示换行) int a, b; scanf(a=%d b=%d,&a, &b);A. 2B. a=2 b=3 C. a=2, b=3 D. 2,3 311. 下列if语句中,有语法错误的是(C)A. if(xy);B. if(x=y) x+y;C. if(x!=y) scanf(%d, &x) else scanf(%d,&y)D. if(xy) x+; y+;12. 下面程序段执行后的输出结果是(A)int i=-1;if(i B. & C. 15. 设有说明:int u=1, v=14;表达式u+v2的值是(B)A. 0B. 3 C.
4、 5D. 716.设有 int a =3, b=-4, c=0;表达式(ab)?a:b)&c0的值是(B)A.-4 B.0 C.1D.317.若有下列程序段,欲使a=2、b=3,对应正确的数据输入方法是(C)(其中表示换行)int a, b;scanf(a=%d, b=%d,&a,&b);A.2 B.a=2 b=3 C.a=2, b=3 D.2,3 318.关于if语句下面叙述正确的是(D)A.只有当if语句中表达式的值等于1时,才执行if的内嵌语句B.只有当if语句中表达式的值为假时,才执行if的内嵌语句C.只有当if语句中表达式的值等于0时,才执行if的内嵌语句D.只要if语句中表达式的值
5、非0时,就执行if的内嵌语句19.若int x=0; 则while(x=0); 的循环次数是(D)A.0 B.1 C.2D.无限次20.下面各个运算符的优先级从左到右依次降低的是(D)A.& | B. & |C. & |D. & 21.设有说明:int u=1, v=2;表达式:u+vb?a:c0) y=1;else y=0;ABCD27执行下面程序段后,输出字符A的个数是(B)for(i=0;i=5;i+=2) printf(A);A0个 B3个 C5个D6个28设有说明:int x=0x15,y=0x0f;则x&y的结果是(A)A0x5 B0x15 C0xf0D0xf529如果在程序中要使
6、用系统提供的函数strlen,则需要书写的编译预处理命令是(C)A#includeB#includeC#includeD #incLude30整数在机器内存中的表示是(B)A1000000000000010B1111111111111110C11111111111111101D111111111111111131下列运算符中优先级最低的是(D)A B! C%D= =32设有int a=3,b=,c=5;表达式+ +ac+b+ +的值是(B)A6 B5 C4D333以十进制无符号形式输出整数的格式说明符是(A)A%u B%x C%oD%d34执行while(表达式)循环的条件是(C)A当表达式的
7、值为0时B仅当表达式的值为1时C当表达式的值非0时D当表达式的值不为1时35下列位运算符中,表示按位异或操作的是(C)A B CD&36下列各个位运算符的优先级从左到右依次升高的是(C)A& B & C& D& 37设有说明:int u=1,v=3;则表达式u= v的值是(D)A0B1C3D838下列转义字符中,表示回车的是(B)A0 Bn Cr Df39若定义double d;则d在内存中分配的字节数是(D)A1个 B2个 C4个 D8个40下列表达式中运算结果为3的表达式是(B)A(-7)%4 B7/4+2 C7/4*4-4 D8/3+8/341设有int a=3,b=-4,c=5;表达式
8、a+-c+b+的值是(A)A-6 B-5 C-4 D-342在printf语句中,格式说明符u表示(C)A以十进制带符号形式输出整数B以十六进制带符号形式输出整数C以十进制无符号形式输出整数D以十六进制无符号形式输出整数43关于switch中的表达式,正确的说法是(D)A它必须是算术表达式B它必须是关系表达式C它必须是逻辑表达式D它可以是任意类型的表达式44对do语句while(表达式);结构的循环,下列说法正确的是(B)A当表达式的值为非零时不执行循环体B循环体至少被执行一次C当表达式的值为零时循环体一次也不执行D循环体仅被执行一次45只能在循环语句中用于结束本轮循环的语句是(B)Abrea
9、k; Bcontinue; Cgoto Dif46.下列是合法C语言常量的是( C )A. e B. 7E4.0 C. E4 D. -9.13E-3047.设有int a=3,b=-4,c=5;表达式(ab)?a:b&c B. & | C. | D. | 50.设有说明:int u=1,v=3,w=5;表达式:v &u|w的值是( B )A. 3 B. 5 C. 6 D. 851.在Turbo C 2.0中,若定义char ch;则变量ch在内存中分配的字节数是( A )A.1个 B.2个 C.4个D.8个652.下面程序段的输出结果是( B )main()int a=2,b=5;printf
10、(a=d,b=d,a,b);A.a=2,b=5 B.a=2,b=5 C.a=2,b=5 D.a=d,b=d53.设有条件表达式(exp)? a+:b-,则下列表达式中能够与该表达式完全等价的表达式是( A )A.(exp!=0)? a+b-B.(exp=0)? a+b-C.(exp=1)? a+b-D.(exp!=1)? a+:b-54.对于for(表达式l;表达式2;表达式3)语句;控制循环结束的表达式是( B )A.表达式1 B.表达式2 C.表达式3 D.表达式l和表达式355.设有int x=2,y,z;执行z=y=x;后变量y的值是( C )A.0 B.1 C.2 D.356.在下列
11、选项中,没有构成死循环的程序段是( C )A.int i=100;B.for(;);while(1) i=i100+1;if(i100) break;C.int k=1000;D.int s=36;do+k;while(k10000); while(s);一一s;57.设有说明:int u=l,v=3,w=5;表达式:u1|u120); a=a+1;printf(%d,a);A. 100B. 101 C. 120D. 12161. 下面程序执行后,i的值是(C)main( ) int a 5=1,2,3,4,5,i=2 printf(%d,ai+);A. 1B. 2 C. 3 D. 462.
12、下面程序的输出结果是(C)main( ) int i, x33=9,8,7,6,5,4,3,2,1;for(i=0;i4;i+=2) printf(%d, xi1);A. 5 1B. 52 C. 8 2D. 9363.下面程序段的输出结果是(B)main( ) int s, p;s=p=5;p=-s;p+;+p;printf(%dn,p);A.5 B.6 C.7D.864.若执行下面程序时,从键盘输入数据3和4,则程序的输出结果是(A)main( ) int a,b,s;scanf(%d, &a,&b);s=a;if(ab) s=bs=s*s;printf(%d,s);A.9 B.12 C.1
13、6D.2565.下面程序段的输出结果是(C)for (i=1; i3;i+)for (j=1;j3;j+) printf(%d , i+j); printf(n);A.2 3 3 4 B.2 3 4 C.2 3 D.2 3 43 466下列程序段的输出结果是(B)void main(void) iny y=1,x=5; if(x=0)y=0; printf(dn,y);A1 B0 C1D567执行如下程序段后,x的值是(D)int x=1,y=1; if(y0)x=y; else x+=y;A1 B0 C1D268下列程序段输出的结果是(A) for(i=1;i3;i+ +) for(j=1;
14、j3;j+ +) printf(%d,i+j);A2 3 3 4B2 3 4C2 3D2 3 4 3 469若有int a=3,b=4,c=5,d=6,x=4;执行下列程序段后x的值是(A)if(ab)if(c= =d)x=c;elsex=d+A4 B5 C6 D770.下列程序的输出结果是( D )main( ) int x=5,y;if(x0)y=-1;if(x=0)y=0;y=1;printf(%d,y);A. -5 B. -1 C. 0 D. 171.下列程序段的输出结果是( D )i=1;while(i3)j=1;while(j5)printf(d,x);else printf(dn
15、,x);A.7和5 B.6和3 C.7和4 D.6和474.设有下面程序:# includestdio.hvoid main(void)unsigned x=1,y=3,z=5;printf(dn,zxy);该程序的运行结果是( C )A.0 B.3 C.4 D.575.若有定义int a35;则数组a在内存中占用的字节数是(D)A.8B.15 C.16D.3076.下面程序的输出结果是(C)mian ( ) int a5=2,4,6,8,10,i;i=2;printf(%d,ai+);A.2 B.4 C.6D.877.下面程序的输出结果是(A)main( ) int a34=1,3,5,7,
16、9,11,13,15,17,19,21,23; int i,j,k=0; for(i=0;i3;i+)k=k+ai0; printf(%dn,k);A.27 B.33 C.39D.4578若有定义char a = computer;则存储字符m的数组元素是(B)Aa1 Ba2 Ca3Da479若有定义int a 4=1,2,3,4;则aa3-a1*a1的值是(A)A1 B2 C3D480若有定义int s4=1,2,3,4;则aa2*a0+1的值是(B)A1 B2 C3D481若有定义int a35;则数组a在内存中分配的字节数是(D)A8 B15 C24 D3082已知strl和str2是字
17、符串数组,下列哪一个函数能正确的完成字符串的输入?(A)Agets(strl) Bgets(strl,str2) Cgetchar(strl) Dgetchar(strl,str2)83.已知str1和str2是字符数组名,下面函数中能正确地完成字符串输出的是( B )A. puts (str1,str2) B. puts (str2) C. putchar (strl) D. putchar (str1,str2)84.设有下列程序:( A )void main(void)int x4=1,3,5,7,i;i=0:printf(d,xi+);其输出结果是A.1 B.3 C.5 D.785.定
18、义如下变量和数组int k;int x33=9,8,7,6,5,4,3,2,l;则执行下面语句for(k=0;k3;k+)if(k2)printf(5d,xkk);后输出结果是( B )A.3 B.5 C.7D.986.下面能正确进行字符串赋值操作的是( C )A.char s5=ABCDE;B.char s5=A,B,C,D,E;C.char *s;s=ABCDE;D.char *s;scanf(s,s);87.在C语言中,当函数返回值的类型缺省时,表示该函数返回值的类型是(D)A.charB.float C.longD.int88.若有说明:int *p,m=5,n;以下正确的程序段是(D
19、)A.p=&n;B.p=&n;scanf(%d,n); scanf(%d,*p);C.scanf(%d,&n);D.p=&n; p=n; *p=m;89.变量的指针,其含义是指该变量的(B)A.值B.地址 C.名 D.一个标志90. 在C程序中,若用基本数据类型所定义的变量调用函数,正确的说法是(B)A. 由系统自动指定对应实参和形参是否共用存储单元B. 对应实参和形参各占一个独立的存储单元C. 对应实参和形参共用一个存储单元D. 可以由用户指定对应实参和形参是否共用存储单元91. 下面叙述中不正确的是(D)A. 不同函数中可以使用相同名字的变量B. 形式参数是局部变量C. 在一个函数内部定义
20、的变量只能在本函数范围内有效D. 在一个函数内部的复合语句中定义的变量在本函数范围内有效92. 设有语句int a410,*p=*a;则下面表达式中属于地址表达式的是(B)A. a12B. a1 C. *(p+1*10+2)D. *(a1+2)93.以下正确的函数定义形式是(A)A. double fun(int x, int y)B. double fun(int x; int y)C. double fun(int x, int y);D. double fun(int x, y);94.关于变量以下不正确的说法是(B)A.在不同函数中可以使用相同名字的变量B.形式参数是全局变量C.在函数
21、内定义的变量只在本函数范围内有效D.在函数内的复合语句中定义的变量是局部变量95.设有语句int a410,*p=*a;则下列表达式中不是地址表达式的是(C)A.&a12 B.a3 C.*(p+1*10+2) D.p+1*10+296如果一个C程序仅由一个源文件组成,则在一个源文件中定义的全局变量的作用域为(D)A源文件的全部范围B本程序的全部范围C本函数的全部范围D从定义该变量的位置开始至本文件末尾97下列定义中,不是指针数组定义的是(C)Aint*p5; Bfloat*q4; Cint(*r)6;Dchar*w7;98若有语句int*point,a=4;和point=&a;下面代表地址的一
22、组选项是(D)Aa,point,*&aB&*a,&a,*pointC*&point,*point,&aD&a,&*point,point99下列程序的运行结果是(B)#difine N 9fun (char s ) char*p=s+4,*q=s; int i; for(i=0;i4;i+ +,p+ +,q + +) si=*p; si+4=*q main( ) char ssN= ABCDEFGH; fun(ss) printf(%sn,ss);AEFGHABCD BEFGHEFGH CABCDEFGH DABCDABCD100.设有下列程序:ff( )int c=9;static int
23、a=1,b=4;if(b=4)a+=c;b+;else a+=c;b;printf(a=d,b=dn,a,b);main( )ff( );ff( );则该程序执行后,显示的结果为( D )A.a=10,b=5B.a=10,b=4a=19,b=5 a=l9,b=5C.a=10,b=4D.a=10,b=5a=19,b=4 a=19,b=4101若有int a =1,2,3,4,5,6,7,8,9,10,且0i10,则对数组元素地址正确表示的是(D)A&a+1 B&a+ + C&aD&ai102下列关于函数的描述中正确的是(C)AC程序中有调用关系的所有模块必须放在同一个源文件中B函数必须有返回值,
24、否则不能使用函数CC程序必须由一个或一个以上函数构成DC函数既可以嵌套定义又可以嵌套调用103设有下列程序,则(B)int d=10;main()int a=3;printf(“%d,%dn”,a,d);Aa是全局变量,d是全局变量 Ba是局部变量,d是全局变量Ca是全局变量,d是局部变量 Da是局部变量,d是局部变量104若有说明:int*p1,*p2,m=5,n;以下进行赋值的语句中合理的是(C)Ap1=m; B&p2=n; Cpl=&m;p2=p1; D*p1=&m;105下列为指针数组定义的是(D)Afloat(*)6; Bfloat p6; Cfloat(*)(); Dfloat *
25、p6;106.下列关于函数的说明中不正确的是( A )A. 函数名后面可以不要一对圆括号B. 函数参数类型必须作说明C. 函数形参个数可以是一个、多个或没有D. 空函数被调用时不做任何工作107下列关于C语言程序说法正确的是(D)AC语言程序总是从有定义的函数起顺序执行B在C语言程序中,被调用函数必须在main函数中定义CC语言程序中的main函数必须放在程序的开始部分DC语言程序总是从main函数起开始执行108.若有定义:int a5;则a数组中首元素的地址可以表示为( C )A. &a B. a+1 C. a D. &a1109.设有char s=ta017bc;则指针变量s指向的字符串
26、在内存中所占的字节数是( B )A. 5 B. 6 C. 7 D. 9110.若有定义# define P(x)=x x x+1和说明语句:int a=2;则表达式P(2)的值是( C )A. 6 B. 8 C. 9 D. 10111.下列关于函数的说法中,不正确的是( D )A.函数名后面一定要一对圆括号B.空函数被调用时不做任何工作C.函数形参个数可以是一个、多个或没有D.函数参数类型可不作说明112.下面程序段的运行结果是( C )chars *s=abcde;s+=2 printf(d,s);A.cde B.字符c C.字符c的地址 D.无确定的输出结果113下列为指针数组定义的是(D
27、)Afloat(*)6; Bfloat p6; Cfloat(*)(); Dfloat *p6;114凡是函数中未指定存储类别的局部变量,其隐含的存储类别为(A)A自动(auto) B静态(static) C外部(extern)D寄存器(register)115. 下面定义不正确的是()A. struct starB. struct starint id int id;char *name; char *name; star1=1001, Moon; ; star1=1001, Moon;C. structD. struct starint id; int id;char *name; cha
28、r *name; star1=123, Sun; star1;116.下面关于结构体类型变量定义不正确的是()A. struct scoreB. structint math;int math;int Chinese;int Chinese; Li, Wang; Li, Wang;C. struct scoreD. struct scoreint math;int math;int Chinese;int Chinese; ;Li, Wang;struct score Li, Wang;117设有结构体的定义如下:() struct cjd long bh;int*q;char xm9;; 则
29、sizeof(struct cjd)的值是A14 B15 C16D17118下列关于结构体类型定义正确的是()Astruct ABCBstruct ABC int aint a; char bchar b; char*p char * p;Cstruct ABCDstruct ABC int a; int a, char b;char b, char * p;char *p,119.结构体是C提供的一种专门处理彼此相互有联系,数据类型()A.不一致的多个数据的数据结构B.不一致的单个数据的数据结构C.一致的多个数据的数据结构 D.一致的单个数据的数据结构120.设有说明:FILE *fp;ch
30、ar *filename=paper;对于fp=fopen(filename,rb+);语句,下面说法正确的是()A.打开名为filename的文件读写B.打开名为paper的文件读写C.打开名为filename的文件只读D.打开名为paper的文件只读121. 如果将文件指针fp指向文件末尾,正确的语句是()A. feof(fp);B. rewind(fp); C. fseek(fp,0L,0);D. fseek(fp,0L,2);122. 下面程序段中,不能完成的功能是()FILE *fp;char ch =v;fp=fopen(boy, rb+);fputc(ch,fp);A. 建立文件
31、指针fp与文件boy的联系B. 从boy文件中读取一个字符C. 向boy文件中写一个字符D. 打开名为boy的二进制文件123.下面程序段中,不能完成的功能是()FILE *fp;char ch;fp=fopen(file1, rb+);ch=fgetc(fp);A.建立文件指针fp与文件file1的联系B.从file1文件中读一个字符C.向file1文件中写一个字符D.打开名为file1的二进制文件124.在格式:fread(stu,size,n,fp);中,下面说法不正确的是()A.stu是内存中存放数据的首地址B.n表示读n次C.size是一个数据块的字节数D.fp表示文件指针125由FILE*fp;fp=fopen(a:abc.txt,r+);可以推知fopen 函数的原型是()Achar *fopen(char,char);BFILE*fopen(char*,char*);Cint fopen (char*,char*);DFILF fopen(char* ,char*);126如果文件存储的是数据在内存中存放的字节形式,则该文件是()AASCII文件 B文本文件 C二进制文件 D设备文件