1、1C 语言程序设计练习一 一、单项选择题1.下面转义字符中,表示字符串结束的是( d )A. r B. n C. 0 D. f2.在 Turbo C2.0 中,若定义 unsigned int a;则变量 a 在内存中分配的字节数是( c )A.1 个 B.2 个 C.4 个 D.8 个3.设有 int x=2,y,z;执行 z=y=x-;后,变量 z 的值是( b )A.0 B.1 C.2 D.34.以十六进制形式输出整数的格式说明符是( b )A.%u B.%ld C.%x D.%o5.下面合法的 if 语句是( b )A.if(a=b) c+; B.if(a=b) c+; D.if(a=
2、b) c+;6.结束 while(表达式)循环的条件是( )A.当表达式的值为 0 时 B.当表达式的值不为 0 时C.当表达式的值为 1 时 D.当表达式的值为非 1 时7.若有定义 int a35;则数组 a 在内存中占用的字节数是( d )A.8 B.15 C.16 D.308.在 C 语言中,当函数返回值的类型缺省时,表示该函数返回值的类型是( )A.char B.float C.long D.int9.若有说明:int *p,m=5,n;以下正确的程序段是( a )A.p= B.p=scanf(%d,n); scanf(%d ,*p);C.scanf(%d , D.p=p=n; *p
3、=m;10.变量的指针,其含义是指该变量的( b )A.值 B.地址 C.名 D.一个标志16.结构体是 C 提供的一种专门处理彼此相互有联系,数据类型( a )A.不一致的多个数据的数据结构 B.不一致的单个数据的数据结构C.一致的多个数据的数据结构 D.一致的单个数据的数据结构11.下面列出的位运算符中,表示按位与操作的是( b )A. B.scanf(a=%d b=%d,A. 2 B. a=2 b=3 C. a=2, b=3 D. 2,3316. 下面程序段的输出结果是( b )main() int s, p;s=p=5;p=+s;p+; +p;printf( %dn,p);A. 5 B
4、. 6 C. 7 D. 817. 下列 if 语句中,有语法错误的是( b )A. if(xy);B. if(x=y) x+y;C. if(x!=y) scanf(%d, a=a+1;printf(%d,a);A. 100 B. 101 C. 120 D. 12121. 下面程序执行后,i 的值是( c )main( ) int a 5=1,2,3,4,5,i=2printf(%d,ai+);A. 1 B. 2 C. 3 D. 422. 下面程序的输出结果是( )main( ) int i, x33=9,8,7,6,5,4,3,2,1;for(i=0;i B. 表达式 u+v2 的值是( )A
5、. 0 B. 3 C. 5 D. 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);A. 建立文件指针 fp 与文件 boy 的联系 B. 从 boy 文件中读取一个字符C. 向 boy 文件中写一个字符 D. 打开名为 boy 的二进制文件31.设有 int a =3, b=-4, c=0;表达式(ab)
6、?a:b)scanf(a=%d, b=%d,A.2 B.a=2 b=3 C.a=2, b=3 D.2,3333.下面程序段的输出结果是( )main( ) int s, p;s=p=5;p=-s;p+;+p;printf(%dn,p);A.5 B.6 C.7 D.834.关于 if 语句下面叙述正确的是( )A.只有当 if 语句中表达式的值等于 1 时,才执行 if 的内嵌语句B.只有当 if 语句中表达式的值为假时,才执行 if 的内嵌语句C.只有当 if 语句中表达式的值等于 0 时,才执行 if 的内嵌语句D.只要 if 语句中表达式的值非 0 时,就执行 if 的内嵌语句35.若执行
7、下面程序时,从键盘输入数据 3 和 4,则程序的输出结果是( )main( ) int a,b,s;scanf(%d, s=a;if(a | B. 表达式:u+vb?a:c0) y=1;else y=0;A B)0(1xy )0(1xyC D)0(1xy )0(1xy53执行下面程序段后,输出字符 A 的个数是( )for(i=0;i B#include10C#incLude D #incLude63由 FILE*fp;fp=fopen(a:abc.txt,r+); 可以推知 fopen 函数的原型是( )Achar *fopen(char,char); BFILE *fopen(char*,
8、char*);Cint fopen (char*,char*); DFILF fopen(char* ,char*);64整数在机器内存中的表示是( )A1000000000000010 B1111111111111110C11111111111111101 D111111111111111165下列运算符中优先级最低的是( )A B! C% D= =66设有 int a=3,b=, c=5;表达式+ +ac+b+ +的值是( )A6 B5 C4 D367以十进制无符号形式输出整数的格式说明符是( )A%u B%x C%o D%d69下列程序段的输出结果是( )void main(void)i
9、ny y=1,x=5;if(x=0)y=0;printf( dn,y);A1 B0 C1 D569执行如下程序段后,x 的值是( )int x=1,y= 1;if(y则表达式 u B. 表达式:v printf(%dn,y|(x该程序的运行结果是A. -1 B. 0xff C.127 D. 65535109.若有定义# define P(x) x x x+1 和说明语句:16int a=2;则表达式 P(2)的值是( )A. 6 B. 8 C. 9 D. 10110.在语句 fgets(str,n,p);中,下列说法不正确的是( )A. str 是字符指针 B. 一次可以读 n 个字符C. s
10、tr 是字符数组名 D. 一次可以读 n-1 个字符111.在 Turbo C 2.0 中,若定义 char ch;则变量 ch 在内存中分配的字节数是( )A.1 个 B.2 个 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+
11、b- D.(exp!=1)? a+:b-114.对于 for(表达式 l;表达式 2;表达式 3)语句;控制循环结束的表达式是( )A.表达式 1 B.表达式 2 C.表达式 3 D.表达式 l 和表达式 3115.设有下列程序:( )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.指向与文件参数有关的结构体类型
12、的指针变量称为( )A.函数指针 B.整型指针 C.字符型指针 D.文件指针118.设有 int x=2,y,z ;执行 z=y=x;后变量 y 的值是( )A.0 B.1 C.2 D.3119.两次运行下面的程序,如果从键盘上分别输入 6 和 4,则输出的结果是( )void main(void)17int 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(;) ;
13、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;k3;k+ )if(k 2)printf (“5d“,xkk) ;后输出结果是( )A.3 B.5 C.7 D.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=
14、dn“,a,b ) ;main( )ff( ) ;ff( ) ;则该程序执行后,显示的结果为( )A.a=10,b=5 B.a=10, b=4a=19,b=5 a=l9,b=5C.a=10,b=4 D.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.下面程序段的运行结果是( )18chars *s=“abcde“;s+=2 printf(“d“,s) ;A.cde B.字符c C.字符c的地址 D.无确定的输出结果125下列为指针数组定义的是( )Afloat(*)6; Bfloat p6; Cfloat(*)(); Dfloat *p6;126.设有下面程序:# include“stdio.h“void main(void)unsigned x=1,y=3,z=5;printf(“dn“ ,zxy) ;该程序的运行结果是( )A.0 B.3 C.4 D.5127.设有说明:int u=l,v=3,w=5;表达式:u= (v|w)的值是( )A.1 B.5 C.13 D.128