C语言-选择题(最全版)(共23页).doc
精选优质文档-倾情为你奉上C语言程序设计基础知识练习50101、 在C语言源程序中,以下叙述正确的是( )。答案:CA、 main函数必须位于文件的开头 B、 每行只能写一条语句 C、 程序中的一个语句可以写成多行D、 每个语句的最后必须有点号50102、 关于C语言的源程序的叙述中,错误的是( )。答案:CA、 C语言的源程序由函数构成B、 main函数可以书写在自定义函数之后 C、 必须包含有输入语句D、 一行可以书写多个语句50103、 关于C语言数据类型的叙述,正确的是( )。答案:CA、 枚举类型不是基本类型B、 数组不是构造类型C、 变量必须先定义后使用D、 不允许使用空类型50104、 C程序中main函数的位置( )。答案:CA、 必须在最开始B、 必须在系统库函数后面C、 可以在自定义函数后面D、 必须在最后50105、 C语言的函数体由( )括起来。答案:BA、 ( )B、 C、 D、 /* */50106、 关于C语言的叙述中,不正确的是( )。答案:DA、 C程序可由一个或多个函数组成B、 C程序必须包含一个main()函数C、 C程序的基本组成单位是函数D、 注释说明只能位于一条语句的后面50107、 以下叙述不正确的是( )。答案:DA、 C程序的执行总是从main函数开始B、 一个C源程序必须包含一个main函数C、 C语言程序的基本组成单位是函数D、 在编译C程序源程序时,可发现注释中的拼写错误50108、 结构化程序设计的三种基本结构是( )。答案:CA、 函数结构、分支结构、判断结构B、 函数结构、嵌套结构、平行结构C、 顺序结构、分支结构、循环结构D、 分支结构、循环结构、嵌套结构50109、 对于C语言源程序,以下叙述错误的是( )。答案:CA、 可以有空语句B、 函数之间是平等的,在一个函数内部不能定义其它函数C、 程序调试时如果没有提示错误,就能得到正确结果D、 注释可以出现在语句的前面50201、 下面关于C语言用户标识符的描述,正确的是( )。答案:DA、 不区分大小写B、 用户标识符不能描述常量C、 类型名也是用户标识符D、 用户标识符可以作为变量名50202、 以下( )是正确的变量名。答案:DA、 5fB、 ifC、 f.5D、 _f550203、 以下( )是正确的常量。答案:DA、 E-5B、 1E5.1C、 'a12'D、 32766L50204、 以下( )是正确的变量名。答案:DA、 a.beeB、 -p11C、 intD、 p_1150205、 以下( )是正确的字符常量。答案:CA、 "c"B、 '''C、 'W'D、 "32a"50206、 以下( )是不正确的字符串常量。答案:AA、 'abc'B、 "12'12"C、 "0"D、 " "50207、 以下( )是错误的整型常量。答案:BA、 -0xcdfB、 018C、 0xeD、 01150208、 以下( )是正确的浮点数。答案:BA、 e3B、 .62C、 2e4.5D、 12350209、 若有说明语句:char c='95' 则变量c包含( )个字符。答案:AA、 1B、 2C、 3D、 语法错误50301、 若有定义:int a=2; 则正确的赋值表达式是( )。答案:AA、 a-=(a*3)B、 double(-a)C、 a*3D、 a*4=350302、 语句x=(a=3,b=+a);运行后,x、a、b的值依次为( )。答案:CA、 3,3,4B、 4,4,3C、 4,4,4D、 3,4,350303、 语句a=(3/4)+3%2;运行后,a的值为( )。答案:BA、 0B、 1C、 2D、 350304、 char型变量存放的是( )。答案:AA、 ASCII代码值B、 字符本身C、 十进制代码值D、 十六进制代码值50305、 若有定义:int x,a;则语句x=(a=3,a+1);运行后,x、a的值依次为( )。答案:CA、 3,3B、 4,4C、 4,3D、 3,450306、 若有定义:int a; 则语句a=(3 * 4)+ 2 % 3;运行后,a的值为( )。答案:BA、 12B、 14C、 11D、 1750307、 若有定义:int a,b; double x,则以下不符合C语言语法的表达式是( )。答案:AA、 x%(-3)B、 a+=-2C、 a=b=2D、 x=a+b50308、 若有定义:int x=2,y=3;float i;,则以下符合C语言语法的表达式是( )。答案:BA、 x=x*3=2B、 x=(y=1)C、 i=float(x)D、 i%(-3)50309、 设double型变量a,b,c,e均有值;对代数式(3ae)/(bc),不正确的C语言表达式是( )。答案:CA、 a/b/c*e*3B、 3*a*e/b/cC、 3*a*e/b*cD、 a*e/c/b*350401、 下面叙述正确的是( )。答案:BA、 2/3 与 2.0/3.0 等价B、 (int)2.0/3 与 2/3 等价C、 +5 与 6 等价D、 'A'与"A"等价50402、 下面叙述中,错误的是( )。答案:AA、 其算术运算对象不包含函数B、 %(模运算符)的运算对象只能为整型量C、 算术运算符的结合方向是"自左至右"D、 自加和自减运算符的结合方向是"自右至左"50403、 下面叙述正确的是( )。答案:AA、 强制类型转换运算的优先级高于算术运算B、 若a和b是整型变量,(a+b)+是合法的C、 'A'*'B' 是不合法的D、 "A"+"B"是合法的50404、 若有定义:int k,i=2,j=4; 则表达式 k=(+i)*(j-) 的值是( )。答案:BA、 8B、 12C、 6D、 950405、 设整型变量a为5,使b不为2的表达式是( )。答案:CA、 b=(+a)/3B、 b=6-(-a)C、 b=a%2D、 b=a/250406、 若有定义:int a=1,b=2,c=3; 则语句 +a|+b&&+c;运行后b的值为( )。答案:CA、 1B、 0C、 2D、 350407、 若有定义:int i,j;则表达式(i=2,j=5,i+,i+j+)的值是( )。答案:BA、 7B、 8C、 9D、 1050408、 若有定义:int a,b;则表达式(a=2,b=5,a*2,b+,a+b)的值是( )。答案:BA、 7B、 8C、 9D、 1050409、 若有定义:int m=5,n=3;则表达式(m+1,n+1,(-m)+(n-)的值是( )。答案:BA、 6B、 7C、 8D、 950501、 已知 int a;使用scanf()函数输入一个整数给变量a,正确的函数调用是( )。答案:BA、 scanf("%d",a);B、 scanf("%d",&a);C、 scanf("%f",&a);D、 scanf("%lf",&a);50502、 已知 double a;使用scanf()函数输入一个数值给变量a,正确的函数调用是( )。答案:DA、 scanf("%ld",&a);B、 scanf("%d",&a);C、 scanf("%7.2f",&a);D、 scanf("%lf",&a);50503、 已知 char a;使用scanf()函数输入一个字符给变量a,不正确的函数调用是( )。答案:BA、 scanf("%d",&a);B、 scanf("%lf",&a);C、 scanf("%c",&a);D、 scanf("%u",&a);50504、 putchar()函数的功能是向终端输出( )。答案:BA、 多个字符B、 一个字符C、 一个实型变量值D、 一个整型变量表达式50505、 getchar()函数的功能是从终端输入( )。答案:DA、 一个整型变量值B、 一个实型变量值C、 多个字符D、 一个字符50506、 若有定义:int x=1234,y=123,z=12;则语句printf("%4d+%3d+%2d", x, y, z);运行后的输出结果为( )。答案:DA、 B、 C、 1234+1234+1234D、 1234+123+1250507、 已有如下定义和输入语句,int a; char c1,c2;scanf("%d%c%c",&a,&c1,&c2);若要求a、c1、c2的值分别为10、A和B,正确的数据输入是( )。答案:AA、 10ABB、 10 A BC、 10A BD、 10 AB50508、 已有如下定义和输入语句:int a,b;scanf("%d,%d",&a,&b);若要求a、b的值分别为10和20,正确的数据输入是( )。答案:BA、 10 20B、 10,20C、 a=10,b=20D、 10;2050509、 以下程序的运行结果是( )。void main() int a=65; char c='A' printf("%x,%d",a,c);答案:DA、 65,aB、 41,aC、 65,65D、 41,6550601、 下面叙述中,( )不是结构化程序设计中的三种基本结构之一。答案:AA、 数据结构B、 选择结构 C、 循环结构D、 顺序结构50602、 下面叙述中,( )不是结构化程序设计三种基本结构的共同特点。答案:AA、 先判断后执行B、 单入口,单出口C、 程序中没有执行不到的语句D、 无死循环50603、 结构化程序设计不包括( )。答案:AA、 最优化B、 自顶而下,逐步细化C、 模块化设计D、 结构化编码50604、 以下运算符中优先级最高的是( )。答案:DA、 >B、 |C、 &&D、 +50605、 若有定义:int x=3,y=4;则表达式 !x|y 的值为( )。答案:AA、 1B、 OC、 3D、 450606、 若有定义:int i=7,j=8;则表达式 i>=j|i<j 的值为( )。答案:AA、 1B、 变量i的值C、 0D、 变量j的值50607、 若希望当a的值为奇数时,表达式的值为"真",a的值为偶数时,表达式的值为"假"。则不能满足要求的表达式是( )。答案:CA、 a%2=1B、 !(a%2=0)C、 !(a%2)D、 a%250608、 若有定义:int x=3,y=4,z=5;则值为0的表达式是( )。答案:DA、 'x'&&'y'B、 x<=yC、 x|y+z&&y-zD、 !(x<y)&&!z|1)50609、 若有定义:int a=5,b=2,c=1;则表达式a-b<c|b=c的值是( )。答案:AA、 0B、 1C、 2D、 -150701、 已知double a=5.2; 则正确的赋值表达式是( )。答案:AA、 a+=a-=(a=4)*(a=3)B、 a=a*3=2C、 a%3D、 a=double(-3)50702、 已知char a='R' 则正确的赋值表达式是( )。答案:AA、 a=(a+)%4B、 a+2=3C、 a+=256-D、 a='078'50703、 已知int a='R' 则正确的表达式是( )。答案:AA、 a%10B、 a=int(3e2)C、 2*a=a+D、 a=a+a=a+350704、 设单精度型变量f、g的值均为2.0,使f为4.0的表达式是( )。答案:AA、 f+=gB、 f-=g+2C、 f*=g-6D、 f/=g*1050705、 若有定义:float x=3.5;int z=8;则表达式 x+z%3/4 的值为( )。答案:BA、 3.75B、 3.5C、 3D、 450706、 若有定义:int a=1,b=2,c=3,d=4,x=5,y=6;则表达式 (x=a>b)&&(y=c>d) 的值为( )。答案:AA、 0B、 1C、 5D、 650707、 若有定义:int a=2,b=3; float x=3.5,y=2.5;则表达式(float)(a+b)/2+(int)x%(int)y的值是( )。答案:AA、 3.5B、 3.0C、 2.5D、 2.050708、 若有定义:int b=7; float a=2.5,c=4.7;则表达式a+(b/2*(int)(a+c)/2)%4的值是( )。答案:CA、 2.5B、 3.5C、 4.5D、 5.550709、 若有定义:int a=6,b=2;char c1='a',c2='b'则表达式a+b%5+c2-c1的值是( )。答案:CA、 7B、 8C、 9D、 表达式错误50801、 以下的if语句中,x的值一定被重新赋值的是( )。答案:BA、 if(x=y) x+=y;B、 if(x>y && x!=y ); x+=y;C、 if(x!=y) scanf("%d",&x); else scanf("%d",&y); D、 if(x<y) x+;y+; 50802、 C语言对if嵌套语句的规定:else总是与( )配对。答案:BA、 第一个ifB、 之前最近的且尚未配对的ifC、 缩进位置相同的ifD、 之前最近的if50803、 对于整型变量x,下述if语句( )与赋值语句: x=x%2=0?1:0;不等价。答案:BA、 if (x%2!=0) x=0; else x=1;B、 if (x%2) x=1; else x=0;C、 if (x%2=0) x=1; else x=0;D、 if (x%2=1) x=0; else x=1;50804、 若有定义:int x=1,y=2,z=4;则以下程序段运行后z的值为( )。if(x>y) z=x+y;else z=x-y;答案:BA、 3B、 -1C、 4D、 不确定 50805、 若有定义:int a=1,b=2,c=3;则执行以下程序段后a,b,c的值分别为( )。if (a<b) c=a;a=b;b=c;答案:DA、 a=1,b=2,c=3B、 a=2,b=3,c=1C、 a=2,b=3,c=3D、 a=2,b=1,c=150806、 以下程序段运行后变量a的值为( )。int x=6,y=5;int a;a=(-x=y+)?x:y+1;答案:DA、 0B、 1C、 6D、 550807、 以下程序的运行结果是( )。void main() int n='e' switch(n-) default: printf("error "); case 'a': case 'b': printf("good "); break; case 'c': printf("pass "); case 'd': printf("warn "); 答案:CA、 errorB、 goodC、 error goodD、 warn50808、 以下程序的运行结果是( )。void main() int n='c' switch(n+) default: printf("error "); break; case 'a': case 'b': printf("good "); break; case 'c': printf("pass "); case 'd': printf("warn "); 答案:CA、 passB、 warnC、 pass warnD、 error50809、 以下程序的运行结果是( )。void main( ) int n=5; if(n+>=6) printf("%dn",n); else printf("%dn",+n);答案:DA、 4B、 5C、 6D、 750901、 设有整型变量x,下述语句( )不会出现死循环。答案:BA、 for(;x+=1);B、 for(;(x=getchar()!='n');C、 while(1) x+;D、 for(x=10;x-);50902、 对于整型变量x,与while(!x)等价的是( )。答案:BA、 while(x!=0)B、 while(x=0)C、 while(x!=1)D、 while(x)50903、 对于整型变量x和y,语句 for(x=0,y=0;(y!=123)&&(x<4);x+) y+; 中的“y+;”被执行( )。答案:AA、 4次B、 0次C、 123次D、 3次50904、 在c语言中while循环和do-while循环的主要区别是( )。答案:BA、 do-while循环体内可以使用break语句,while循环体内不能使用break语句B、 do-while的循环体至少无条件执行一次,while的循环体不是C、 do-while循环体内可以使用continue语句,while循环体内不能使用continue语句D、 while的循环体至少无条件执行一次,do-while的循环体不是50905、 以下程序段运行后,循环体运行的次数为( )。int i=10,x;for (;i<10;i+)x=x+i;答案:BA、 10B、 0C、 1D、 无限50906、 以下程序段运行后变量n的值为( )。int i=1,n=1;for (;i<3;i+) continue;n=n+i;答案:DA、 4B、 3C、 2D、 150907、 以下程序的运行结果是( )。void main() int sum = 0, item = 0; while(item < 5) item+; sum += item; if(sum=5) break; printf("%dn",sum);答案:BA、 10B、 15C、 5D、 650908、 以下程序的运行结果是( )。void main() int sum = 0, item = 0; while(item < 5) item+; sum += item; if(sum>=6) break; printf("%dn",sum);答案:CA、 10B、 15C、 6D、 750909、 以下程序的运行结果是( )。void main() int sum = 0, item = 0; while(item < 5) item+; if(item = 2) continue; sum += item; printf("%dn",sum);答案:BA、 10B、 13C、 15D、 151001、 下列数组定义中,正确的是( )。答案:AA、 int a5=0;B、 int a=0 1 2;C、 int a5=0;D、 int a;51002、 下列数组定义中,正确的是( )。答案:AA、 int a10;B、 int n=10,an;C、 int N=10;int aN;D、 int n;scanf("%d",&n); int an;51003、 已知 int a10; 则对a数组元素引用不正确的是( )。 答案:AA、 a10B、 a3+5C、 a10-10D、 a551004、 若有定义:int a3=0,1,2;则a1的值为( )。答案:BA、 0B、 1C、 2D、 351005、 若有定义:int a5=1,2,3,4,5;则语句a1=a3+a2+2-a3-1;运行后a1的值为( )。答案:AA、 6B、 5C、 1D、 251006、 以下能对一维数组a进行正确初始化的语句是( )。答案:DA、 int a5=(0,0,0,0,0);B、 int a5=0;C、 int a5=1,2,3,4,5,6,7;D、 int a=0;51007、 下面程序段的运行结果是( )。int i=0,a=3,4,5,4,3;do ai+; while(a+i<5);for(i=0;i<5;i+) printf("%d ",ai);答案:DA、 4 5 6 5 4B、 3 4 5 4 3C、 4 5 5 5 4D、 4 5 5 4 3 51008、 下面程序段的运行结果是( )。int i=0,a=7,5,7,3,8,3;do ai+=2; while(a+i>5);for(i=0;i<6;i+) printf("%d ",ai);答案:CA、 9 7 9 5 10 5B、 9 5 9 3 10 3C、 9 5 7 3 8 3D、 7 5 7 3 8 3 51009、 下面程序段的运行结果是( )。int i=0,a=1,2,3,4,5;do ai+=10; while(a+i>2);for(i=0;i<5;i+) printf("%d ",ai);答案:AA、 11 2 3 4 5B、 1 2 3 4 5C、 11 12 13 14 15D、 11 12 3 4 5 51101、 设有如下程序段:int a33=1,0,2,1,0,2,1,0,1,i,j,s=0;for(i=0;i<3;i+) for(j=0;j<i;j+) s=s+aij;则执行该程序段后,s的值是( )。答案:CA、 0B、 1C、 2D、 351102、 有如下定义 int a3=1,2,3,4,5,6,7,8;则数组a的行数是( )。答案:BA、 2B、 3C、 4D、 无法确定的51103、 以下数组定义中,正确的是( )。答案:DA、 int a23=1,2,3,4,5,6,7;B、 int a=1,2,3,4,5,6,7,8,9;C、 int a2= 1,2,3,4,5,6;D、 int a4= 6;51104、 若有定义:int a34=1,2,0,1,2,3;则a11的值为( )。答案:AA、 0B、 1,2C、 1D、 351105、 若有定义:int a33;则表达式&a21-a的值为( )。答案:AA、 7B、 8C、 6D、 951106、 若有定义:int i=0,x=0;int a33=1,2,3,4,5,6,7,8,9;则以下程序段运行后x的值为( )。for (;i<3;i+) x+=ai2-i;答案:CA、 0B、 12C、 15D、 1851107、 若有定义int a23;则对数组元素的非法引用是( )。答案:DA、 a01/2B、 a11C、 a4-40D、 a0351108、 以下数组定义中,正确的是( )。答案:CA、 int a2=1,2,3,4,5;B、 int a2=0,;C、 int a22=1,2,3;D、 int a=1,2,3,4;51109、 若有定义int a3=1,2,3,4,5,6,7,8,9;则表达式sizeof(a)/sizeof(a0)的值为( )。答案:DA、 3B、 4C、 5D、 951201、 设有以下变量定义: char str1="string",str28,*str3,*str4="string"( )是正确的。答案:AA、 strcpy(str1,"China");B、 str2="China"C、 strcpy(*str3,"China");D、 strcpy(str40,"China");51202、 有如下定义: char str6= 'a','b','0','d','e','f'则语句: printf("%s",str);的输出结果是( )。答案:DA、 abB、 abdefC、 ab0D、 ab51203、 设有如下数组定义: char str8= "FuJian"则分配给数组str的存储空间是( )个字节。答案:CA、 6B、 7C、 8D、 951204、 若有定义:char a="abcdef"char b="xyz"则以下程序段运行后屏幕输出为( )。strcpy(a,b);printf("%c",a2);答案:BA、 cB、 zC、 0D、 d51205、 以下程序段运行后屏幕输出为( )。char a="abc0mis"printf("%d",strlen(a);答案:CA、 5B、 8C、 3D、 451206、 若有定义:int a=2;则语句a=strcmp("miss","miss");运行后a的值为( )。答案:BA、 1B、 0C、 -1D、 251207、 以下程序段运行后屏幕输出为( )。 char str="abcd" printf("%d",strlen(str);答案:BA、 4B、 5C、 6D、 751208、 以下程序段运行后屏幕输出为( )。char str80;strcpy(str,"hello");printf("%d",strlen(str);答案:AA、 5B、 6C、 7D、 8051209、 若有定义:char str16="abcdm",*ps,*str2="abcdef"( )是正确的。答案:BA、 strcpy(str1,str2); B、 表达式strcmp(str1,str2)的值大于0C、 str1=str2;D、 表达式strlen(str1)的值为651301、 设有如下函数定义:int fun(char *str) char *p=str; while ( *p != '0') p+; return (p-str);则以下语句执行后的输出结果是( )。printf("%dn",fun("Student");答案:AA、 7B、 8C、 9D、 1051302、 以下程序的运行结果是( )。int fun(int array44) int j; for(j=0;j<4;j+) printf("%2d",array2j); printf("n");main() int a44=0,1,2,0,1,0,0,4,2,0,0,5,0,4,5,0; fun(a);答案:AA、 2 0 0 5B、 1 0 0 4C、 0 1 2 0D、 0 4 5 051303、 如下fun函数的类型是( )。fun(float x)double y; int z ; y=x * x ; z=(int)y ; return(z);答案:CA、 voidB、 doubleC、 intD、 float51304、 以下程序运行后屏幕输出为( )。#include<stdio.h>int f(int x,int y) return(x+y);main() int a=2,b=3,c; c=f(a,b); printf("%d+%d=%dn",a,b,c);答案:BA、 0B、 2+3=5C、 2+3=0D、 3+2=551305、 以下程序运行后屏幕输出为( )。#include<stdio.h>int a=2,b=3;int max(int a,int b) int c; c=a>b?a:b; return(c);main() int a=4; printf("%d",max(a,b);答案:DA、 2,3B、 2C、 3D、 451306、 以下程序运行后屏幕输出为( )。#include<stdio.h>void f(int i) int a=2; a=i+; printf("%d,",a);main() int a=1,c=3; f(c); a=c+; printf("%d",a);答案:BA、 4,3B、 3,3C、 4,5D、 3,551307、 若有如下函数定义:int fun() static int k=0; return +k;以下程序段运行后屏幕输出为( )。int i;for(i=1;i<=5;i+) fun();printf("%d",fun();答案:DA、 0B、 1C、 5D、 651308、 下面程序的输出结果是( )。#include <stdio.h>int global=100;fun()int global=5;return +global;void main() printf("%dn",fun();答案:DA、 100B、 101C、 5D、 651309、 下列关于C语言函数的描述中,正确的是( )。答案:BA、 函数的定义可以嵌套,但函数的调用不可以嵌套B、 函数的定义不可以嵌套,但函数的调用可以嵌套C、 函数的定义和函数的调用都可以嵌套D、 函数的定义和函数的调用都不可以嵌套51401、 若有以下宏定义,#define MOD(x,y) x%y则执行以下程序段后,z的值是( )。int z,a=15,b=100;z=MOD(b,a);答案:DA、 100B、 15C、 11D、 1051402、 以下叙述中,正确的是( )。答案:BA、 “#define PRICE=30”定义了与30等价的符号常量PRICEB、 预编译处理命令行都必须以“#”开头C、 宏名只能包含大写字母和数字字符D、 在程序的一行上可以书写几个有效的宏定义51403、 以下叙述中,正确的是( )。答案:AA、 宏展开不占用运行时间,只占用编译时间B、 预编译处理命令行必须以分号结束C、 一个源程序只能有一个预编译处理命令行D、 使用带参数的宏定义时,应该说明每个参数的数据类型51404、 以下的叙述中不正确的是( )。答案:CA、 宏展开不占用运行时间,只占用编译时间B、 宏名无类型C、 宏名必须用大写字母表示D、 预处理命令行都必须以#号开始51405、 若有定义:#define PI 3,则表达式PI*2*2的值为( )。答案:AA、 12B、 4