1、C语言程序设计练习一一、单项选择题1.下面转义字符中,表示字符串结束的是()A. r B. n C. 0D. f2.在Turbo C2.0中,若定义unsigned int a;则变量a在内存中分配的字节数是()A.1个B.2个 C.4个D.8个3.设有int x=2,y,z;执行z=y=x-;后,变量z的值是()A.0B.1C.2D.34.以十六进制形式输出整数的格式说明符是()A.%uB.%ld C.%xD.%o5.下面合法的if语句是()A.if(a=b) c+;B.if(a=b) c+; C.ifi(ab) c+; D.if(a=b) c+;6.结束while(表达式)循环的条件是()
2、A.当表达式的值为0时B.当表达式的值不为0时C.当表达式的值为1时D.当表达式的值为非1时7.若有定义int a35;则数组a在内存中占用的字节数是()A.8B.15 C.16D.308.在C语言中,当函数返回值的类型缺省时,表示该函数返回值的类型是()A.charB.float C.longD.int9.若有说明:int *p,m=5,n;以下正确的程序段是()A.p=&n;B.p=&n;scanf(%d,n); scanf(%d,*p);C.scanf(%d,&n);D.p=&n; p=n; *p=m;10.变量的指针,其含义是指该变量的()A.值B.地址 C.名 D.一个标志16.结构
3、体是C提供的一种专门处理彼此相互有联系,数据类型()A.不一致的多个数据的数据结构B.不一致的单个数据的数据结构C.一致的多个数据的数据结构 D.一致的单个数据的数据结构11.下面列出的位运算符中,表示按位与操作的是()A.B.&C.D.|12.设有说明:int x=0x03,y=3;表达式x&y的值是()A.0B.1C.2D.319.设有说明:int u=1,v=3,w=2;表达式(v1|u2)&w的值是()A.0B.1C.3 D.513.设有说明:FILE *fp;char *filename=paper;对于fp=fopen(filename,rb+);语句,下面说法正确的是()A.打开
4、名为filename的文件读写B.打开名为paper的文件读写C.打开名为filename的文件只读D.打开名为paper的文件只读14. 设有int a=3, b=-4, c=5;表达式(ab)? a+b: (a-b,b+4,a-=b+4)的值是()A. 1 B. 0 C. 3D. 715. 若有下列程序段,欲使a=2、b=3,对应正确的数据输入方法是()(其中表示换行) int a, b; scanf(a=%d b=%d,&a, &b);A. 2B. a=2 b=3 C. a=2, b=3 D. 2,3 316. 下面程序段的输出结果是()main() int s, p; s=p=5; p
5、=+s; p+; +p; printf(%dn,p); A. 5B. 6 C. 7D. 817. 下列if语句中,有语法错误的是()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+;18. 下面程序段执行后的输出结果是()int i=-1;if(i120); a=a+1;printf(%d,a);A. 100B. 101 C. 120D. 12121. 下面程序执行后,i的值是()main( ) int a 5=1,2,3,4,5,i=2 printf(%d,ai+);A.
6、1B. 2 C. 3 D. 422. 下面程序的输出结果是()main( ) int i, x33=9,8,7,6,5,4,3,2,1;for(i=0;i B. & C. 28. 设有说明:int u=1, v=14;表达式u+v2的值是()A. 0B. 3 C. 5D. 729. 如果将文件指针fp指向文件末尾,正确的语句是()A. feof(fp);B. rewind(fp); C. fseek(fp,0L,0);D. fseek(fp,0L,2);30. 下面程序段中,不能完成的功能是()FILE *fp;char ch =v;fp=fopen(boy, rb+);fputc(ch,fp
7、);A. 建立文件指针fp与文件boy的联系B. 从boy文件中读取一个字符C. 向boy文件中写一个字符D. 打开名为boy的二进制文件31.设有 int a =3, b=-4, c=0;表达式(ab)?a:b)&c0的值是()A.-4 B.0 C.1D.332.若有下列程序段,欲使a=2、b=3,对应正确的数据输入方法是()(其中表示换行)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 333.下面程序段的输出结果是()main( ) int s, p;s=p=5;p=-s;p+;+p;printf(%dn,p
8、);A.5 B.6 C.7D.834.关于if语句下面叙述正确的是()A.只有当if语句中表达式的值等于1时,才执行if的内嵌语句B.只有当if语句中表达式的值为假时,才执行if的内嵌语句C.只有当if语句中表达式的值等于0时,才执行if的内嵌语句D.只要if语句中表达式的值非0时,就执行if的内嵌语句35.若执行下面程序时,从键盘输入数据3和4,则程序的输出结果是()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.16D.2536.若int x=0; 则while(x=0); 的循环
9、次数是()A.0 B.1 C.2D.无限次37.下面程序段的输出结果是()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 438.下面程序的输出结果是()mian ( ) int a5=2,4,6,8,10,i;i=2;printf(%d,ai+);A.2 B.4 C.6D.839.下面程序的输出结果是()main( ) int a34=1,3,5,7,9,11,13,15,17,19,21,23; int i,j,k=0; for(i=0;i | B. &
10、 |C. & |D. & 45.设有说明:int u=1, v=2;表达式:u+vb?a:c0) y=1;else y=0;ABCD53执行下面程序段后,输出字符A的个数是()for(i=0;i=5;i+=2) printf(A);A0个 B3个 C5个D6个54若有定义char a = computer;则存储字符m的数组元素是()Aa1 Ba2 Ca3Da455若有定义int a 4=1,2,3,4;则aa3-a1*a1的值是()A1 B2 C3D412凡是函数中未指定存储类别的局部变量,其隐含的存储类别为()A自动(auto) B静态(static) C外部(extern)D寄存器(re
11、gister)56如果一个C程序仅由一个源文件组成,则在一个源文件中定义的全局变量的作用域为()A源文件的全部范围B本程序的全部范围C本函数的全部范围D从定义该变量的位置开始至本文件末尾57下列定义中,不是指针数组定义的是()Aint*p5; Bfloat*q4; Cint(*r)6;Dchar*w7;58若有语句int*point,a=4;和point=&a;下面代表地址的一组选项是()Aa,point,*&aB&*a,&a,*pointC*&point,*point,&aD&a,&*point,point59下列程序的运行结果是()#difine N 9fun (char s ) char
12、*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 DABCDABCD60设有结构体的定义如下:() struct cjd long bh;int*q;char xm9;; 则sizeof(struct cjd)的值是A14 B15 C16D1761设有说明:int x=0x15,y=0x0f;则x&y的结果是()A0x5 B0x15 C0xf0D0xf562
13、如果在程序中要使用系统提供的函数strlen,则需要书写的编译预处理命令是()A#includeB#includeC#incLudeD #incLude63由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*);64整数在机器内存中的表示是()A1000000000000010B1111111111111110C11111111111111101D111
14、111111111111165下列运算符中优先级最低的是()A B! C%D= =66设有int a=3,b=,c=5;表达式+ +ac+b+ +的值是()A6 B5 C4D367以十进制无符号形式输出整数的格式说明符是()A%u B%x C%oD%d69下列程序段的输出结果是()void main(void) iny y=1,x=5; if(x=0)y=0; printf(dn,y);A1 B0 C1D569执行如下程序段后,x的值是()int x=1,y=1; if(y0)x=y; else x+=y;A1 B0 C1D270执行while(表达式)循环的条件是()A当表达式的值为0时B仅
15、当表达式的值为1时C当表达式的值非0时D当表达式的值不为1时71下列程序段输出的结果是() for(i=1;i3;i+ +) for(j=1;j& B & C& D& 78设有说明:int u=1,v=3;则表达式u= v的值是()A0B1C3D879如果文件存储的是数据在内存中存放的字节形式,则该文件是()AASCII文件 B文本文件 C二进制文件 D设备文件80下列转义字符中,表示回车的是()A0 Bn Cr Df81若定义double d;则d在内存中分配的字节数是()A1个 B2个 C4个 D8个82下列表达式中运算结果为3的表达式是()A(-7)%4 B7/4+2 C7/4*4-4
16、D8/3+8/383设有int a=3,b=-4,c=5;表达式a+-c+b+的值是()A-6 B-5 C-4 D-384在printf语句中,格式说明符u表示()A以十进制带符号形式输出整数B以十六进制带符号形式输出整数C以十进制无符号形式输出整数D以十六进制无符号形式输出整数85若有int a=3,b=4,c=5,d=6,x=4;执行下列程序段后x的值是()if(ab)if(c= =d)x=c;elsex=d+A4 B5 C6 D786关于switch中的表达式,正确的说法是()A它必须是算术表达式B它必须是关系表达式C它必须是逻辑表达式D它可以是任意类型的表达式87对do语句while(
17、表达式);结构的循环,下列说法正确的是()A当表达式的值为非零时不执行循环体B循环体至少被执行一次C当表达式的值为零时循环体一次也不执行D循环体仅被执行一次88只能在循环语句中用于结束本轮循环的语句是()Abreak; Bcontinue; Cgoto Dif89若有定义int a35;则数组a在内存中分配的字节数是()A8 B15 C24 D3090已知strl和str2是字符串数组,下列哪一个函数能正确的完成字符串的输入?()Agets(strl) Bgets(strl,str2) Cgetchar(strl) Dgetchar(strl,str2)91下列关于函数的描述中正确的是()AC
18、程序中有调用关系的所有模块必须放在同一个源文件中B函数必须有返回值,否则不能使用函数CC程序必须由一个或一个以上函数构成DC函数既可以嵌套定义又可以嵌套调用92设有下列程序,则()int d=10;main()int a=3;printf(“%d,%dn”,a,d);Aa是全局变量,d是全局变量 Ba是局部变量,d是全局变量Ca是全局变量,d是局部变量 Da是局部变量,d是局部变量93若有说明:int*p1,*p2,m=5,n;以下进行赋值的语句中合理的是()Ap1=m; B&p2=n; Cpl=&m;p2=p1; D*p1=&m;94下列为指针数组定义的是()Afloat(*)6; Bflo
19、at p6; Cfloat(*)(); Dfloat *p6;95设有说明:FILE*fp;对于fp=fopen(c:abc.dat, rb);语句,下列说法中不正确的是()Afp将指向abc.dat文件B以只读方式打开二进制文件C打开文件的文件名是abc.datD以读写方式打开ASCII码文件96ASCII码文件的结束可以用符号常量EOF表示。EOF的值是()A0 B1 C-1 D不能确定的值97.下列是合法C语言常量的是( )A. e B. 7E4.0 C. E4 D. -9.13E-3098.设有int a=3,b=-4,c=5;表达式(ab)?a:b&c0的值是( )A. 0 B. 1
20、 C. 3 D. 499.以指数形式输出实型数的格式说明符是( )A. %u B. %x C. %f D. %e100.下列程序的输出结果是( )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. 1101.下列程序段的输出结果是( )i=1;while(i3)j=1;while(j B. & | C. | D. | 107.设有说明:int u=1,v=3,w=5;表达式:v &u|w的值是( )A. 3 B. 5 C. 6 D. 8108.设有下列程序:( )#includestdio.h
21、main( )unsigned x=8,y=2;printf(%dn,y|(x&y);该程序的运行结果是A. -1 B. 0xff C.127 D. 65535109.若有定义# define P(x) x x x+1和说明语句:int a=2;则表达式P(2)的值是( )A. 6 B. 8 C. 9 D. 10110.在语句fgets(str,n,p);中,下列说法不正确的是( )A. str是字符指针B. 一次可以读n个字符C. str是字符数组名D. 一次可以读n-1个字符111.在Turbo C 2.0中,若定义char ch;则变量ch在内存中分配的字节数是( )A.1个 B.2个
22、C.4个D.8个6112.下面程序段的输出结果是( )main()int a=2,b=5;printf(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=d113.设有条件表达式(exp)? a+:b-,则下列表达式中能够与该表达式完全等价的表达式是( )A.(exp!=0)? a+b-B.(exp=0)? a+b-C.(exp=1)? a+b-D.(exp!=1)? a+:b-114.对于for(表达式l;表达式2;表达式3)语句;控制循环结束的表达式是( )A.表达式1 B.表达式2 C.表达式3 D.表达式l和表达式3115.设有下列程
23、序:( )void main(void)int x4=1,3,5,7,i;i=0:printf(d,xi+);其输出结果是A.1 B.3 C.5 D.7116.下列关于函数的说法中,不正确的是( )A.函数名后面一定要一对圆括号B.空函数被调用时不做任何工作C.函数形参个数可以是一个、多个或没有D.函数参数类型可不作说明117.指向与文件参数有关的结构体类型的指针变量称为( )A.函数指针 B.整型指针 C.字符型指针 D.文件指针118.设有int x=2,y,z;执行z=y=x;后变量y的值是( )A.0 B.1 C.2 D.3119.两次运行下面的程序,如果从键盘上分别输入6和4,则输出
24、的结果是( )void main(void)int x;scanf(d,x);if(x + + 5)printf(d,x);else printf(dn,x);A.7和5 B.6和3 C.7和4 D.6和4120.在下列选项中,没有构成死循环的程序段是( )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;121.定义如下变量和数组int k;int x33=9,8,7,6,5,4,3,2,l;则执行下面语句for(k=0;
25、k3;k+)if(k2)printf(5d,xkk);后输出结果是( )A.3 B.5 C.7D.9122.设有下列程序:ff( )int c=9;static int a=1,b=4;if(b=4)a+=c;b+;else a+=c;b;printf(a=d,b=dn,a,b);main( )ff( );ff( );则该程序执行后,显示的结果为( )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=4123.下面能正确进行字符串赋值操作的是( )A.char s5=ABCDE;B.char s5=A,B,C,D,E;C.char *s;s=ABCDE;D.char *s;scanf(s,s);124.下面程序段的运行结果是( )chars *s=abcde;s+=2 printf