C语言练习题.doc_第1页
C语言练习题.doc_第2页
C语言练习题.doc_第3页
C语言练习题.doc_第4页
C语言练习题.doc_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C语言练习题(一)一、 选择题 下列各题给出了多个选项,请按照题目要求选择正确的答案。【1.1】 C语言中字符型(char)数据在内存中的存储形式是_D_。 A)原码 B)补码 C)反码 D)ASCII码【1.2】 C语言中,长整型long数据在内存中的存储形式是_D_。 A)ASCII码 B)原码 C)反码 D)补码【1.3】 C语言的运算符按运算对象的数目不同可以分为_C_。 A)单目运算一种 B)单目和双目运算符 C)单目、双目和三目运算符 D)单目、双目、三目和四目运算符【1.4】 下面对C语言运算符的优先级叙述正确的是_C_。 A)逻辑运算符高于算术运算符,算术运算符高于关系运算符 B)自增运算符高于关系运算符,关系运算符高于逻辑运算符 C)算术运算符高于逻辑运算符,自增运算符高于关系运算符 D)关系运算符高于逻辑运算符,逻辑运算符高于算术运算符【1.5】 C语言并不是非常严格的算术语言,在一下关于C语言的不严格的叙述中,错误的说法是_A_。 A)大写字母和小写字母的意义相同 B)有些不同类型的变量可以在一个表达式中运算 C)在赋值表达式中等号“=”左边的变量和右边的值可以是不同类型 D)同一个运算符号在不同的场合可以有不同的含义【1.6】 C语言中的简单数据类型包括_B_ _。 A)整形、实型、逻辑型 B)整型、实型、字符型 C)整型、字符型、逻辑型 D)整型、实型、逻辑型、字符型【1.7】 以下选项中属于C语言的数据类型是_C_。 A)复数型 B)逻辑型 C)双精度型 D)集合型【1.8】 在C语言中,int、char、和short三种类型数据所占用的内存_C_。 A)均为2个字符 B)由用户根据自己的需要定义 C)由所用机器的机器字长决定 D)是任意的【1.9】 在C语言中,错误的int类型的常数是_A_。 A)32768 B)0 C)037 D)0xAF【1.10】 下列常数中不能作为C语言常量的是_D_。 A)0xA5 B)2.5e - 2 C)3e2 D)0582【1.11】 在C语言中,十进制的47可等价的写为_D_。 A)2f B)02f C)57 D)057【1.12】 设int类型的数据长度为2个字符,则unsigned int类型数据的取值范围是_B_。 A)0255 B)065535 C)-3276832767 D)-256255【1.13】 在C语言中,数字029是一个_D_。 A)八进制数 B)十六进制数 C)十进制数 D)非法数【1.14】 下列不属于C语言关键字的是_D_。 A)default B)register C)enum D)external【1.15】 下列可以正确定义数据类型的关键字的_A_。 A)Long B)signed C)shorter D)integer【1.16】 下列可以正确表示字符型常数的是_B_。 A)a B)t C)n D)297【1.17】 以下错误的转义字符是_C_。 A) B) C)81 D)0【1.18】 已说明int a=256,执行语句printf(%x,a);的结果是_A_。 A)100 B)256 C)ffe D)00ff【1.19】 C语言中整数-8在内存中的存储形式是_ A_。 A)1111 1111 1111 1000 B)1000 0000 0000 1000 C)0000 0000 0000 1000 D)1111 1111 1111 0111【1.20】 下面各选项组中,均是C语言关键字的选项组是_B_。 A)auto,enum,include B)switch,typedef,continue C)signed,union,sanf D)if,struct,type【1.21】 将字符g赋给字符变量c,正确的表达式是_C_。 A)c=g B)c=101 C)c=147 D)c=0147【1.22】 已知 int i;float f;正确的语句是_D_。 A)(int f)%i B)int(f)%i C)int(f%i) D)(int)f%iD.(int)f%i正确先通过强制类型转换把浮点数转为整数再进行整数的取余计算。其它答案的括号位置不当,编译会报错。A在括号中再次定义已定义为浮点类型的变量为整型是不允许的。B的括号等于把int当成了函数,但int是数据类型,不能作为函数,编译时会报告int函数没定义C中把浮点数直接与整数进行取余运算是不允许的【1.23】 已知char a;int b;float c;double d;执行语句c=a+b+c+d;后,变量c的数据类型是_D_。 A)int B)char C)float D)doublec的类型不会变,仍然是float,只是在运算过程中的中间结会是double型,然后转化为float,赋给c。变量的类型经过定义后是不会变的。【1.24】 以下运算符中优先级最低的算符为_。 A)& B)& C)| D)=【1.25】 已知int j,i=1;执行语句j=-i+;后,j的值是_c or d _。 A)1 B)2 C)-1 D)-2【1.26】 已知 int i,a;执行语句i=(a=2*3,a*5),a+6:;后,变量i的值是_C_。 A)6 B)12 C)30 D)36执行后, i 的值是30。这题不简单,挺复杂的,属于钻牛尖的题。这里主要考你对逗号表达式的理解,逗号表达式的值等于最后一个表达式的值,而且逗号是C语言中等级最低的运算符,像i=(a=2*3,a*5),a+6;这一句,先算出a=2*3,得到a=6,然后再算出a*5,得到表达式的值30(但这时a的值仍等于6),然后把30这个值赋给i,然后再算出a+6,得出12,最终整个表达式的值为12,但题目问的是i的值,就是30.【1.27】 已知 int i=5;执行语句i+=+i;后,i的值是_C_。 A)10 B)11 C)12 D)ABC答案都不对+i是先加,后取值,所以后面的+i变成了6;“+=”这个符号的用法我举个例子,假如有个变量i=5,使用下列语句i+=1,则效果等同于i=i+1;如果i+=2,就等于i=i+2,以此类推。所以i=i+6,此时i为6,所以i=6+6=12,所以i=12。【1.28】 字符串22a,0n的长度是_B_。 A)8 B)7 C)6 D)5【1.29】 已知char*s=tNameAdressn;则s所指的字符串的长度为_B_。 A)19 B)15 C)18 D)说明不合法char *s=tNameAddressn; t ,N,a,m,e,A,d,d,r,e,s,s,n加上一个字符表示转义字符,算一个,一共15个【1.30】 已知char a=70;则变量a中_A_。 A)包含1个字符 B)包含2个字符 C)包含3个字符 D)说明不合法a就是个char型变量,一个char型变量只能放一个字符,你的例子里,a里面存放的是ascii码为70的字符,就是F【1.31】 已知char c=A;int i=1,j;执行语句j=!c&i+;后,i和j的值是_B_。 A)1,1 B)1,0 C)2,1 D)2,0j=!c&i+;执行时,j=!c,由于c为字符A,所以为真,!c就为假,所以j=0;条件j=!c&i+;由于j为假,所以不会执行i+;所以 i=1;【1.32】 已知int x=1,y=2,z;执行语句z=xy?+x:+y;后,z的值为_C_。 A)1 B)2 C)3 D)4z=3;你好,首先你得理解+i和i+的区别:+i的意思是在使用i变量之前把i+1,而i+的意思是在使用i变量之后把i+1理解了这一点上面的题目就很清楚了:xy返回的是false,所以z=y-;减号在后面所以先把y的值赋给了z之后才去改变y的值,所以z=3。当然如果z=-y的话,z就等于2了【1.33】 已知int n,i=1,j=2;执行语句n=ib后,变量a的值为_A_。 A)0 B)1 C)4 D)5 用程序验证:#includevoid main()int a=4,b=5,c;c=a=ab;printf(%dn,a);输出0.原因很简单:ab是假,返回0。a和c先后被赋值0. 【1.41】 已知char w;int x;float y;double z;则表达式w*x+z-y结果是类型是_D_。 A)float B)Char C)int D)doublec语言中 两个不同类型的运算 要转化成同类型的 转换从低到高 char-float-short-int-double【1.42】 sizeof(double)是_B_。 A)函数调用 B)double型表达式 C)int型表达式 D)非法表达式谭浩强版C程序设计(第四版)在p378的附录D“运算符和结合性”中,运算符:sizeof优先级:2 含义:长度运算符(单目运算符)结合方向:自右至左【1.43】 已知char ch=A;则下列表达式的值是_B_。 Ch=(ch=A&chbook Cpp oodb start$it line# pow aBc 3pai His.age while如果你的意思是按列的话,A就是正确的。如果按行的话B是最接近正确的。虽然My-book不是独立的标识符,但确实合法的标识符。【1.49】 C语言中,下列运算符的操作数必须是int类型的运算是_A_。 A)% B)/ C) D)+【1.50】 已知int x=1,y=3,z:则下列语句的输出结果是_D_。 printf(%dn,z=(x%y,x/y); A)1 B)0 C)4 D)3【1.51】 已知int x=6;则执行x+=x-=x*x;语句后,x的值为_B_。 A)36 B)-60 C)60 D)-24x+=x- =x*x 相当于 x = x - x * x , x = x + x ; 已知x=6 则 x = 6 - 6 * 6 = -30 x = -30 - 30 = -60 所以x = -60【1.52】 若w=1,x=2,y=3,z=4;则条件表达式wx?x:yX是否为假(很明显WX为假),然后执行(zy)判断表达式(若WX为真则执行W),因为(zy)为真,所以执行z,用函数输出结果也就是4了。(语法:逻辑判断表达式 ? 表达式1:表达式2-若逻辑判断表达式为真,则执行表达式1,若为假则执行表达式2)。【1.53】 已知int x;则使用逗号运算符的表达式(x=4*5,x*5),x+25的结果为_D_, 变量x的值为_A_。 A)20 B)100 C)表达式不合法 D)45 20 100 125 45 如:int y; y = (x=4*5,x*5),x+25); 那y=45 因为逗号表达式,其求解过程先表达式1,后表达式2. 对于本题有三个部分 x=4*5 x*5 x+25 是由前向后分别运算的. 第一部分x=4*5得到x=20 第二部分x*5 运算得到100,但没有返回,即没有对另一个变量赋值,所以运算的结果没有被接收. x+25 第三部分 ,因在第一部分X已被赋值,所以最后是45 【1.54】 已知int i=6,j;则执行语句j=(+i)+(i+)后,j的值是_B_。 A)4 B)14 C)13 D)15先执行(+i),i=7,然后j=7+7=14,最后(i+),i=8(+i)是先让i做自加1运算(i+)是先取i的值,然后再做自加1运算【1.55】 已知int x=1,y=-1;则语句printf(%dn,(x-&+y);的输出结果是_。 A)1 B)0 C)-1 D)2【1.56】 语句printf(%d,(a=2)&(b=-2);的输出结果是_B_。 A)无输出 B)结果不确定 C)-1 D)1赋值语句的值就是变量的值。1&-2。同时,要注意整型值到布尔值的转换。任何非零值都转换为1真,0值转换为0假。这里就是1&1,所以结果是1,真。【1.57】 已知int x=15,y=5;则执行以下语句后的输出结果为_。 Printf(%dn,x%=(y%=2); A)0 B)1 C)6 D)12【1.58】 已知unsigned int x=65535;则执行下列语句后的输出值为_D_。 printf(%dn,x); A)65535 B)1 C)无定值 D)-1x变量定义为无符号整型。格式控制符d是输出带符号的十进制整数,即输出-1。65535在内存中各位都为1,作为带符号数输出时最高位为1即数值为负。在内存中数据都以其补码形式保存,11111111变为原码为10000001即-1。【1.59】 已知int x,y,z,w;则为使以下语句输出结果为1234+123+12+1,正确的输入形式应当为_。 scanf(%4d-%3d-%2d-%1d,&x,&y,&z,&w); printf(%4d+%3d+%2d+%1dn,x,y,z,w); A)1234123121 B)1234 123 12 1 C)1234-123-12-1 D)1234+123+12+1【1.60】 已知int w=3,x=10,z=7;则执行下面语句后的输出结果为_A_。 printf(%d,x10?x+100:x-10); printf(%d,w+|z+); printf(%d,!wz); printf(%d,w&z); A)0111 B)11111 C)0101 D)0100【1.61】 当执行下面程序时,如果输入ABC,则输出的结果是_。 #include #include main() char ss10=12345; get(ss); strcat(ss,6789); printf(%sn,ss); A)ABC6789 B)ABC67 C)12345ABC6 D)ABC456789【1.62】 已知int x;float y;所用的scanf调用语句格式为: Scanf(x=%d,y=%f,&x,&y); 则为了将数据10和66.6分别赋给x和y,正确的输入应当是_D_。 A)x=10,y=66.6 B)10,66.6 C)1066.6 D)x=10y=66.6因为你的scanf里面有逗号,要严格按照格式输出。scanf(x=%d,y=%f,&x,&y);将其中的%d和%f换成对应的数即可得输入格式为x=10,y=66.6【1.63】 判断char类型变量c1是否为答大写字母的最简单且正确的表达式为_。 A)A=c1=A)&(c1=Z) C)(A=c1) D)(c1=A)&(c1=A)&(c=A)AND(cx)&(b=yz) 变量a的值为_B_,b的值为_A_。 A)5 B)0 C)1 D)2 6 0 1 4先执行a=wx 应为wz不执行,b还是初始值6【1.68】 执行下面语句后x的值为_D_。 int a=14,b=15,x; char c=a; x=(a&b)&(ca); A)TRUE B)FALSE C)0 D)1a&b的值为true,cB的值也为true,所以(a&b)&(cB)的值为true。但x是int型变量,所以(a&b)&(cB)的值最后要从bool型转换为int型赋给x。这样x的值应为1。【1.69】 已知int a=15,b=240;则表达式(a&b)&b的结果为_。 A)0 B)1 C)true D)false【1.70】 已知a=15,b=240;则表达式(a&b)&b|b的结果为_。 A)0 B)1 C)true D)false【1.71】 设a=2,b=3,执行表达式c=b*=a-1后。变量c的值是_。 A)5 B)3 C)2 D)4【1.72】 当c的值不少0时,在下列选项中能够将c的值赋给变量a、b的是_。 A)c=b=a B)(a=c)|(b=c) C)(a=c)&(b=c) D)a=c=b【1.73】 若定义了int x;则将x强制转化成双精度类型应该写成_。 A)(double)x B)x(double) C)double(x) D)(x)double【1.74】 若给定条件表达式(n)?(c+):(c-),则其中(n)的正确含义是_。 A)n=0 B)n=1 C)n!=0 D)n!=1【1.75】 要判断char类型变量m是否是数字,可以使用下列表达式_。 A)0=m&m=9 B)0=m&m=9 C)0=m&m=48&c=65&c=97&c=122)&c=27 A)66 B)27 C)85 D)ABC答案都不对【1.77】 下面对枚举变量的定义中,正确的是_。 A)enum color red,blue,green;a,b; B)enum color=red,blue,greena,b; C)enum color=red,blue,greena,b;D)enum color red,blue,greena,b;【1.78】 执行以下语句后的输出结果为_。 enum weekday sun,mon=3,tue,wed,thu; enum weekday workday; workday=wed; printf(%dn,workday); A)5 B)3 C)4 D)编译时出错【1.79】 若有定义:enum weekdaymon , tue , wed , thu , friworday;则错误的语句是 _。 A)workday = (enum weekday)3; B)workday = (enum weekday)(4-2); C)workday = 3; D)workday = thu;【1.80】 C语言的预处理命令_C语言文本的一部分。 A)是 B)不是【1.81】 以下正确的描述为_。 A)每个C语言程序必须在开头预处理命令:#include B)预处理命令必须位于C源程序首部 C)在C语言中预处理命令都以#开头 D)C语言的预处理命令只能实现宏定义和条件编译的功能【1.82】 以下有关宏替换叙述中,错误的是_。 A)宏替换不占用运行时间 B)宏名无类型 C)宏替换只是字符替换 D)宏名必须同大写字母表示【1.83】 C语言的编译系统对宏命令是_。 A)在程序运行时进行替换处理的 B)在程序连接时进行处理 C)和源程序中其他C语句同时进行编译的 D)在对源程序中其他成份正式编译之前进行处理的【1.84】 从下列选项中选择不会引起二义性的宏定义是_。 A)#define POWER(x)x*x B)#define POWER(x)(x)*(x) C)#define POWER(x)(x*x) D)#define POWER(x)(x)*(x)【1.85】 已知#define N3;的宏定义,执行语句i=N*3后,i的值是_。 A)3 B)6 C)9 D)ABC答案都不对【1.86】 若有宏定义如下: #define X 5 #define Y X+1 #define Z Y*X/2 则执行以下printf语句后,输出结果是_。 int a; a=Y; printf(%d,Z); printf(%dn,-a); A)7,6 B)12,6 C)12,5 D)7,5【1.87】 若有以下宏定义: #define N 2 #define Y(n)(N+1)*n) 则执行语句z=2*(N+Y(5);后的结果为_。 A)语句有错误 B)z=34 C)z=70 D)z无定值【1.88】 若有宏定义#define MOD(x,y)x%y,则执行以下语句后丶输出为_。 int z,a=15, b=100; z=MOD(b,a) printf (%dn,z+) A)11 B)10 C)6 D)宏定义不合法【1.89】 若a、b、c、d、t均为int类型变量,则执行以下程序段后的结果为_。 #define MAX(A,B)(A)(B)?(A):(B) #define PRINT(Y)printf(Y=%dn,Y) a=1;b=2;c=3;d=4; t=MAX(a+b,c+d); PRINT(t); A)Y=3 B)存在语法错误 C)Y=7 D)Y=0【1.90】 以下程序中存在错误的是_。 A)#define array_size100 B)#define PI 3.14159 Int array1array_size; #define S(r) PI*(r)*(r) area=S(3.2) C)#define PI 3.14159 D)#define PI 3.14159 #define S(r) PI*(r)*(r) #define S(r) PI*(r)*(r) area=S(a+b); area=S(a); 注意:“”代表一个空格。【1.91】 为了求i的3次方,请选择一个表达式填入_,使程序可以正确执行。 #define CUBE(x)(x*x*x) main( ) int i =4; printf(n%d,CUBE(_); A)i*i*i B)x*x*x C)x D)i【1.92】 语句typedef long class的作用是_。 A)建立了一种新的数据类型 B)定义了一个整型变量 C)定义了一个长整型变量 D)定义了一个新的数据类型标识符二、多选题【1.93】 选出所有合法的常量_。 A)3e22.5 B)-e-3 C)-.1e-1 D)BASIC E)045 F)0fd G)H)0xfdaL H)e8 I) J)【1.94】 选出所有合法的变量名_。 A)auto B)_auto_ C)-auto- D)2_and E)Turbo_C F)register G)_123【1.95】 已知int a=3;则下列表达式的值,那些等于0?_。 A)5% B)5/6 C)5/6.0

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论