1《C程序设计》练习题一、选择题1、c语言程序设计的基本单位是()。A)程序行B)语句C)函数D)字符2、一个算法应该具有“确定性”等5个特性,下面对另外4个特性的描述中错误的是()。A)有零个或多个输入B)有零个或多个输出(有一个或多个输出)C)有穷性D)可行性3、结构化程序由三种基本结构组成,三种基本结构组成的算法()A)可以完成任何复杂的任务B)只能完成部分复杂的任务C)只能完成符合结构化的任务D)只能完成一些简单的任务4、以下叙述中正确的是()A)C程序中注释部分可以出现在程序中任意合适的地方B)花括号{和}只能作为函数体的定界符(还可以是复合语句,switch结构中)C)构成C程序的基本单位是函数,所有函数名都可以由用户命名(只有自定义函数由用户命名)D)分号是C语句之间的分隔符,不是语句的一部分(分号是C语句结束标记,是语句的一部分)5、以下叙述中正确的是()A)C语言的源程序不必通过编译就可以直接运行B)C语言中的每条可执行语句最终都将被转换成二进制的机器指令C)C源程序经编译形成的二进制代码可以直接运行D)C语言中的函数不可以单独进行编译6、C语言中最基本的数据类型包括()A)整型、实型、逻辑型B)整型、实型、字符型C)整型、字符型、逻辑型D)整型、实型、逻辑型、字符型7、vc6.0中int类型变量所占字节数是()A)1B)2C)3D)48、以下每个选项都代表一个常量,其中正确的整型常量是A)0.0B)-20C)1,000D)4569、一下每个选项都代表一个常量,其中不正确的实型常量是()A)2.606E-1B)0.8103e2C)-77.7D)44.6e-210、以下选项中,为合法关键字的是()A)SwicthB)cherC)CaseD)defaultE)unsiguld11、以下符号不能用作用户标识符的是()用户标识符命名规则:只能是数字、字母、下划线组成,不能以数字开头,不能是系统的关键字,也不提倡用预定义标识符来命名。A)IFB)SwitchC)getsD)case12、以下符号中不合法的用户标识符是()A)_123B)printfC)a$D)Dim13、以下符号中不合法的用户标识符是()A)abc.cB)fileC)MainD)PRINTF14、可用作用户标识符的一组标识符是()A)void(关键字)define(关键字)wordB)a3_b3_xyzIFC)For-abc(应该是下划线)CaseD)2a(数字开头)DOsizeof(是关键字)15、C语言中提供的合法的数据类型关键字()A)DoubleB)shortC)integerD)Char16、以下运算符中要求运算对象必须是整型的是()A)%B)/C)=D)*17、不能正确表示ab/cd的C语言表达式的是()A)a/(c*d)*bB)a*b/c/dC)a*b/c*dD)a*b/(c*d)18、若x和y代表整型数,以下表达式中不能正确表示数学关系|x-y|10的是()A)abs(x-y)10(abs是绝对值函数)B)x-y-10&&x-y10C)(x-y)-10||!(y-x)10D)(x-y)*(x-y)10019、若已定义x和y为double类型,则表达式:x=1,y=x+3/2的值是()除法运算符的规则,如果两边的运算对象都是整型,结果必定是整数,也即3/2的结果为1,y=x+3/2=1+1=2,但y的类型是double类型,所以结果是2.0A)1B)2C)2.0D)2.520、若以下选项中的变量已正确定义,则正确的赋值语句是()A)x1=26.8%3;%要求两边都是整型数据B)1+2=x2;赋值运算符=要求=号左侧一定是变量C)x3=0x12;D)x4=1+2=3;赋值运算符的求值顺序是自右向左,那么1+2=3,等号左侧就不是变量,而是表达式,所以是错误的。21、以下叙述正确的是(多选)()A)在C程序中无论是整数还是实数,只要在允许范围内都能准确无误的表示。(实数不能准确无误的表示。)B)若在定义语句doublea,b;之后,因为变量a、b已经正确定义,因此立刻执行这样的表达式:a=b+9.3是正确的。C)在C程序中,常量、变量、函数调用,都是表达式的一种。D)在main函数中,变量一经定义,系统将自动赋予初始值。E)凡是表达式都有一个值。22、以下的变量定义中,合法的是()A)float3_four=3.4;(3_four变量名不合法)B)int_abc_=2.1e-2;可以这样赋值,只取整数部分赋值,会造成数据的丢失C)doublea=1+4e2.0;(实型常量表示e后面的指数必须是整数)D)shortdo=15;(do是关键字,因此这个变量名不合法)23、有以下定义语句doublea,b;intw;longc;若各变量已正确赋值,则下列选项中正确的表达式是()A)a=a+b=b++a+b=b++等号左侧不是变量,而是表达式B)w%((int)a+b)((int)a+b)的类型还是double类型C)(c+w)%(int)aD)w=a==b;此为赋值语句,题中要表达式24、有以下程序main(){intm=0256,n=256;printf(%o%o\n,m,n);}程序运行后的输出结果是()A)02560400B)0256256C)256400D)40040025、有以下程序2main(){inta=666,b=888;printf(%d\n,a,b);//如果改成printf(“%d%d\n”,a);则输出结果为666,和一个随机值}程序运行后的输出结果是()A)错误信息B)666C)888D)666,88826、若有intk=11;则表达式(k++*1/3)的值是()A)0B)3C)11D)1227、在C语言中,如果下面的变量都是int类型,则输出的结果是()。sum=pad=5;pad=sum++,pad++,++pad;A)7B)6C)5D)428、以下程序的输出结果是()。#includestdio.hmain(){inti=010,j=10;printf(%d,%d\n,++i,j--);}A)11,10B)9,10C)010,9D)10,929、已知在ASCII代码中,字母A的序号为65,以下程序的输出的结果是()。#includestdio.hmain(){charc1='A',c2='Y';printf(%d,%d\n,c1,c2);}A)因输出格式不合法,输出错误信息B)65,90C)A,YD)65,8930、以下程序的输出结果是()。#includestdio.hmain(){printf(%d\n,NULL);//NULL是符号常量}A)不确定的(因变量无定义)B)0C)-1D)131、设有语句chara='\71';则变量a()。’\71’与’\071’等价,表示字符’9’A)包含1个字符B)包含2个字符C)包含3个字符D)说明不合法33、以下程序的输出结果是()。#includestdio.hmain(){inta=2,c=5;printf(a=%%d,b=%%d\n,a,c);%%是用来输出一个%,此时就没有相应的%d来输出a和c的值}A)a=%2,b=%5B)a=2,b=5C)a=%%d,b=%%dD)a=%d,b=%d34、以下程序的输出结果是()。#includestdio.hmain(){inta,b,d=241;a=d/100%9;除法/与取余符号%的优先级相同,按照自左向右顺序计算,241/100的结果是2,2%9的余数是2b=(-1)&&(-1);逻辑表达式的结果不是0就是1,逻辑与符号,只要左右两边都是非0数据,则结果一定为真,用数值1表示。printf(%d,%d\n,a,b);}A)6,1B)2,1C)6,0D)2,035、以下程序的输出结果是()。#includestdio.hmain(){inti=1,j=3;printf(%d,i++);{inti=0;i+=j*2;printf(,%d,%d,,i,j);}printf(%d,%d\n,i,j);}A)1,6,3,1,3B)1,6,3,2,3C)1,6,3,6,3D)1,7,3,2,336、在字符常量定义#definePI3.14159中,用标识符PI代替一个()符号常量通常用大写字母表示A)单精度数B)双精度数C)常量D)字符串37、字符(char)型数据在微机内存中的存储形式是()A)反码B)补码C)EBCDIC码D)ASCII码38、执行下面的程序段()。intx=35;charz='A';intb;b=((x&&15)&&(z'a'));后,b的值为A)0B)1C)2D)339、假设在程序中a,b,c均被定义成实型,并且已赋大于1的值,则下列不能正确表示代数式abc1的表达式是()A)1/a*b*cB)1/(a*b*c)C)1/a/b/(float)cD)1.0/a/b/c40、设a=5,b=6,c=7,d=8,m=2,n=2,执行(m=ab)&&(n=cd)后n的值为()根据逻辑与符号的短路特性来计算,如果左边对象为假,则就停止计算,表达式的结果就为0,此时m的值为0,n的值没有变化,为2A)1B)2C)3D)441、若k是int型变量,且有下面的程序片段:k=--3;//--和++运算符只针对变量进行自加和自减,而3是常量,所以有语法错误if(k=0)printf(“####”);elseprintf(“&&&&”);上面程序片段的输出结果是()A)####B)&&&&C)####&&&&D)有语法错误,无输出结果42、若执行下面的程序时从键盘上输入3和4,则输出是()main(){inta,b,s;scanf(“%d%d”,&a,&b);//此时a为3,b为43s=a;//s=3;if(s=a*5)//此时s=3*5=15,是个非0数据,则if条件表达式成立,执行里面的内嵌语句.//注意:s=a*5与s==a*5不同,前者是赋值运算,后者是关系比较运算printf(“%d\n”,s++);elseprintf(“%d\n”,s+b);}A)14B)15C)16D)2043、执行下面程序中输出语句后,a的值是()main(){inta;printf(“%d\n”,(a=3*5,a*4,a*5));}/*此题考查复制运算符=和逗号运算符,的优先级,赋值运算符的优先级高于逗号运算符,因此,可以确定a的初值是15,逗号运算符的求解顺序是自左向右,整个逗号表达式的值即为最后一个表达式的值a*5,即15*5,为75.*/A)75B)20C)15D)1044、为表示关系x≥y≥z,应使用C语言表达式()A)(x=y)&&(y=z)//还可以写成z=y&&y=xB(x=y)AND(y=z)C)(x=y=z)D)(x=y)&(y=z)45、以下程序的输出结果是()main(){intx=10,y=10;printf(%d%d\n,x--,--y);}/*x—是先使用x的初值,然后使得x的值减1;--y是先使y的值减1,然后再使用y的值*/A)1010B)99C)910D)10946、若要求在if后一对圆括号中表示a不等于0的关系,则能正确表示这一关系的表达式为()A)a0//c语言中不等于的写法是!=B)!a//此等价于a==0C)a=0//此时a=0是赋值,不是关系比较,当表示比较时用==D)a47、两次运行下面的程序,如果从键盘上分别输入6和4,则输出结果是()main(){intx;scanf(%d,&x);if(x++5)/*注意x++5的用法,先使用x,当输入6时,65成立,但不马上执行printf(“%d”,x);,而是让x的值加1,此时if中表达式的判断才结束。当输入4时,45不成立,要执行else分支,可是在执行之前,x的值要先加1,此时由4变成5,而printf(“%d\n”,x--);则是先使用x,也即输出x的值,