C程序的设计1_5复习题答案_第1页
C程序的设计1_5复习题答案_第2页
C程序的设计1_5复习题答案_第3页
C程序的设计1_5复习题答案_第4页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

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

文档简介

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

2、结构中 )C)构成 C 程序的基本单位是函数,所有函数名都可以由用户命名(只有自定义函数由用户命名)D)分号是 C 语句之间的分隔符,不是语句的一部分(分号是 C 语句结束标记,是语句的一部分)5、以下叙述中正确的是()A) C 语言的源程序不必通过编译就可以直接运行B) C 语言中的每条可执行语句最终都将被转换成二进制的机器指令C) C 源程序经编译形成的二进制代码可以直接运行D) C 语言中的函数不可以单独进行编译6、 C 语言中最基本的数据类型包括()A) 整型、实型、逻辑型 B) 整型、实型、字符型C) 整型、字符型、逻辑型 D) 整型、实型、逻辑型、字符型7、 vc6.0 中 int

3、 类型变量所占字节数是()A) 1B) 2C) 3D) 48、以下每个选项都代表一个常量,其中正确的整型常量是A) 0.0B)-20C) 1 ,000D)4569、一下每个选项都代表一个常量,其中不正确的实型常量是()A) 2.606E-1B) 0.8103e 2C ) -77.7 D) 44.6e-210、以下选项中,为合法关键字的是()A) SwicthB) cherC) CaseD) defaultE ) unsiguld11、以下符号不能用作用户标识符的是()用户标识符命名规则:只能是数字、字母、下划线组成,不能以数字开头,不能是系统的关键字,也不提倡用预定义标识符来命名。A) IFB

4、) 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) Cha

5、r16、以下运算符中要求运算对象必须是整型的是()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& x-y10C) (x-y)10D) (x-y)*(x-y)10019、若已定义x 和 y 为 double 类型,则表达式:x=1, y=x+3/2的值是()除法运算符的规则,如果两边的运算对象都是整型,结果必定是整数,也即3/2

6、 的结果为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)若在定义语句double

7、a , b;之后,因为变量a、 b 已经正确定义,因此立刻执行这样的表达式: a=b+9.3 是正确的。C)在 C 程序中,常量、变量、函数调用,都是表达式的一种。D)在 main 函数中,变量一经定义,系统将自动赋予初始值。E)凡是表达式都有一个值。22、以下的变量定义中,合法的是()A)float 3_four=3.4;( 3_four变量名不合法 )B) int _abc_=2.1e-2; 可以这样赋值,只取整数部分赋值,会造成数据的丢失C) double a=1+4e2.0; (实型常量表示e 后面的指数必须是整数)D)short do=15;( do 是关键字,因此这个变量名不合法)

8、23、有以下定义语句double a,b; int w; long c;若各变量已正确赋值,则下列选项中正确的表达式是()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( ) int m=0256,n=256; printf(%o %on,m,n);.专业 .专注 .程序运行后的输出结果是()A)0256 0400B)0256 256C)256 400D)400 40025、有以下程序main( ) int

9、a=666,b=888;printf(%dn,a,b); /如果改成printf(“ %d%dn” ,a);则输出结果为666,和一个随机值程序运行后的输出结果是()A) 错误信息B)666C)888D)666,88826、若有 int k=11;则表达式(k+*1/3 )的值是()A)0B)3C)11D) 1227、 在 C语言中,如果下面的变量都是int类型,则输出的结果是() 。sum=pad=5;pad=sum+,pad+,+pad;A)7B)6C)5D)428、 以下程序的输出结果是()。# include main() int i= , j=10;printf(%d,%dn,+i

10、, j-);A) 11,10B) 9,10C) ,9D) 10,929、 已知在 ASCII 代码中,字母A 的序号为65,以下程序的输出的结果是() 。# include main( ) char c1=A, c2=Y;printf(%d,%dn,c1,c2);A) 因输出格式不合法,输出错误信息B ) 65, 90C ) A, YD) 65,8930、 以下程序的输出结果是()。# include main()printf(%dn,NULL);/NULL 是符号常量A)不确定的(因变量无定义)B ) 0C) -1D) 131、 设有语句 char a=71; 则变量 a ( )。 71 与

11、 等价,表示字符 9 A) 包含 1 个字符 B )包含 2 个字符 C )包含 3 个字符 D )说明不合法33、以下程序的输出结果是() 。# include main( )int a=2,c=5;printf(a=%d,b=%dn,a,c);%是用来输出一个%,此时就没有相应的%d来输出 a 和 c 的值A) a=%2,b=%5B) a=2,b=5C) a=%d,b=%dD) a=%d,b=%d34、以下程序的输出结果是() 。# includemain( )int a ,b,d=241;a=d/100%9;除法 / 与取余符号 %的优先级相同,按照自左向右顺序计算,241/100 的结

12、果是2,2%9的余数是2b=(-1)&(-1);逻辑表达式的结果不是0 就是 1,逻辑与符号,只要左右两边都是非0 数据,则结果一定为真,用数值1 表示。printf(%d,%dn,a,b);A) 6,1B) 2,1C) 6,0D) 2,035、以下程序的输出结果是() 。# includemain() int i=1,j=3; printf(%d,i+ ); int i=0; i+=j*2; printf(,%d,%d,i,j); printf(%d,%dn,i,j);A) 1,6,3,1,3B) 1,6,3,2,3C) 1,6,3,6,3 D) 1,7,3,2,336、 在字符常量定义 #

13、definePI3.14159中,用标识符PI 代替一个()符号常量通常用大写字母表示A)单精度数 B)双精度数C)常量D) 字符串37、 字符 (char)型数据在微机存中的存储形式是()A) 反码 B) 补码 C) EBCDIC 码 D) ASCII 码38、 执行下面的程序段()。int x=35;char z=A;int b;b=(x&15)&(zb)&(n=cd) 后 n 的值为()根据逻辑与符号的短路特性来计算,如果左边对象为假,则就停止计算,表达式的结果就为0,此时 m的值为 0, n 的值没有变化,为 2A) 1B) 2C) 3D) 441、若 k 是 int型变量,且有下面的

14、程序片段:.专业 .专注 .k =-3;/-和 +运算符只针对变量进行自加和自减,而3 是常量,所以有语法错误47、两次运行下面的程序, 如果从键盘上分别输入6 和 4, 则输出结果是()if(k5)/*注意x+5 的用法,先使用x ,当输入6时, 65 成立,但不马上执行上面程序片段的输出结果是()printf(“ %d” ,x);,而是让 x 的值加 1,此时 if中表达式的判断才结束。当输入 4 时,45 不成立,A)#B)&C)#&D) 有语法错误,无输出结果要执行 else分支,可是在执行之前,x 的值要先加1,此时由 4 变成 5,而 printf(“ %dn” ,x-);42、若

15、执行下面的程序时从键盘上输入3 和 4, 则输出是()则是先使用x,也即输出x 的值,此时是5,保持不变 */main()printf(%d,x);elseint a,b,s;printf(%dn,x-);scanf(“ %d%d”, &a,&b);/此时 a 为 3,b 为 4s=a;/s=3;A) 7和 5B) 6和 3C) 7和 4D) 6和 4if (s=a*5)/ 此时 s=3*5=15 ,是个非0 数据,则if条件表达式成立,执行里面的48、以下程序的输出结果是()嵌语句 .main( )/注意: s=a*5 与 s=a*5 不同,前者是赋值运算,后者是关系比较运算 int a=

16、-1, b=4, k;printf(“%dn”, s+);k=(+a0)&!(b-=0);/* 此题除考查 +、 - 之外,还考查的是逻辑与&的短路特性问题else逻辑表达式的结果不是0 就是 1,因此 k 的值不是0 就是 1;等号右侧除了有小括号之外,就是printf(“ %dn” ,s+b);逻辑与 &和逻辑非!,逻辑非的优先级高于逻辑与,但有括号先计算括号里面的;a 的初值是 -1 ,而+a0 则是,先使得a 的值加 1,然后再和0 进行比较,即为0=y)&(y=z)/ 还可以写成 z=y&y=y)AND(y=z)C)(x=y=z) D)(x=y)&(y=z)51、若有以下定义和语句,

17、则输出结果是: ()10 进制: 181+0 80=845、以下程序的输出结果是()int u=,v=0x10,w=10;/010 是一个8 进制数据,将其转化成main( )/0x10是一个 16进制数据,将其转化成10 进制: 1 161+0 160=16 int x=10,y=10;/至于为什么要转化成10 进制,原因是 %d格式符就是用来输出 10进制整型数据的printf(%d %dn,x-,-y); printf(%d,%d,%dn” ,u,v,w);/*x 是先使用 x 的初值,然后使得x 的值减1; -y是先使 y 的值减 1,然后再使用y 的值 */A) 8,16,10B)

18、10,10,10C) 8,8,10D) 8,10,10A) 10 10B)99C)910D)10952、下面程序的输出是()46、若要求在 if后一对圆括号中表示a 不等于0 的关系 , 则能正确表示这一关系的表达式为()main()A) a0/c语言中不等于的写法是 != unsigned a=32768;/*32768是 2 的 16 次幂, unsigned int类型占用 4 个字节,并且无符B) !a/此等价于 a=0号数都是正数 */C) a=0/此时 a=0 是赋值,不是关系比较,当表示比较时用=printf(a=%dn,a);/*%d 用来输出10 进制整型数据, 是有符号数据

19、, int类型也占用 4 个D) a字节,又由于正数在存中的存储原码和补码相同,就是这个正数的二进制表示形式,因此,a 的值.专业 .专注 .按照 int类型输出,结果还是32768*/A)a=32768B)a=32767C)a= -32768D)a= -153、若有以下定义: float x;int a,b;则正确的switch语句是()A)switch(x) case1.0:printf(*n);/case后只能是整型和字符型常量case2.0:printf(*n);B)switch(x) case1,2:printf(*n);/case后面只能是整型常量表达式,不能写成1, 2 的形式c

20、ase3:printf(*n);/case和 3 之间有空格A) C)switch (a+b)D)switch (a+b);/ 多了分号 case 1:printf(n); case 1:printf(*n);c ase 1+2:printf(*n);case 2:printf(*n);54、若 a、b 均是正整型变量,以下正确的switch语句是()B) switch(a*a+b*b)/缺少 B)switch(a*a+b*b);/ 多了分号case 1:case 3:y=a+b;break;case 3:case 0:case5:y=a-b;case 1:y=a+b;break;case 0

21、:y=b-a;break;C)switch(a)D)switch(a+b)default:x=a+b;case10:x=a+b;break;/case和 10 之间要有空格case 10:y=a-b;break;case 11:y=a-b;break;case 11:x=a*d;break;55、若有定义 :int x,y;char a,b,c;并有以下输入数据( 此处 代表换行符,代表空格):1 2A B C则能给 x 赋整数 1,给 y 赋整数 2,给 a 赋字符 A,给 b 赋字符 B,给 c 赋字符 C 的正确程序段是A) scanf(x=%dy=%d,&x,&y);a=getchar

22、();b=getchar();c=getchar();/* 输入格式不符,正确输入应该是x=1 y=2 的形式, 除此, getchar ()函数能够接收空格和回车符作为有效字符,也即 a=getchar();接收的是回车符,而不是字符A,b=getchar();接收的字符A,而不是字符B,c=getchar();接收的是 A 后面的空格符,而不是字符C。 */B) scanf(%d%d,&x,&y);a=getchar();b=getchar();c=getchar();/ * 此时,虽然数值型接收对,但字符接收不符合题中要求,解释同上*/C) scanf(%d%d%c%c%c” ,&x,&

23、y,&a,&b,&c);D) scanf(%d%d%c%c%c%c%c%c”,&x,&y,&a,&a,&b,&b,&c,&c);56、假定所有变量均已正确说明,下列程序段运行后x 的值是a=b=c=0;x=35;if(!a)x-;elseif(b);if(c)x=3;elsex=4;/*此题考查if语句的嵌套, if语句的作用围,以及if(!a)的用法,还有变量的赋值,对同一变量进行多次赋值,变量的值总是最后一次赋值的结果。if(!a)与 if ( a=0)是等价的,此时a 的初值是0,因此执行x语句,此时x 的值由 35 变成 34, if(c)与下面的else 是一对,一起作为上面if e

24、lse 结构的后续语句,也即两个if else结构是并列的关系,但是if(b)却是与if(!a)配对的 else的嵌语句; if(c)条件不成立,原因是c的值为 0,因此执行与之匹配的else 分支,此时x 的值由 34 变成 4*/A)34B)4C)35D)357、在以下一组运算符中,优先级最高的运算符是()/ 运算符优先级可参考课本中的附录6,算 / 术运算符高于关系运算符,高于逻辑运算符中的逻辑与&和逻辑或 | ,高于赋值运算符A)0);/if(a0)与 ; 看成一个整体,作为一条语句出现D) if (b=0) m=1; n=2;60、 以下程序段中与语句k=ab?(bc?1:0):0;

25、功能等价的是()/ 条件表达式exp1? exp2:exp3 的执行过程是exp1 为真时,表达式的结果是exp2 的值,否则是 /exp3的值A) if(ab) &(bc) ) k=1;else k=0;B) if(ab) |(bc) ) k=1else k=0;C) if(ab) k=1; else if(bc)k=1;else k=0;61、有以下程序main( )int a=3,b=4,c=5,d=2;if(ab)if(bc)printf(%d,(d+ )+1);else.专业 .专注 .printf(%d,(+d )+1);printf(%dn,d);/ 此题主要考查程序的结构,if

26、(bc)else是 if (ab)的嵌语句,也即程序总的结构是单分支结构, / 如果 if(ab)不成立,则直接执行语句printf(%dn,d);程序运行后的输出结果是()A)2B)3C)43D)4462、下列条件语句中,功能与其他语句不同的是()/ 考查 if(a!=0)与 if(a)等价, if(a=0)与 if(!a)等价A) if(a) printf(%dn,x); else printf(%dn,y);B) if(a=0) printf(%dn,y); else printf(%dn,x);C) if (a!=0) printf(%dn,x); else printf(%dn,y)

27、;D) if(a=0) printf(%dn,x); else printf(%dn,y); 63、有以下程序main() int a,b, c,d;scanf(%d,%d,%d,%d,&a,&b,&c,&d);printf(%d,%d,%c,%cn,a,b,c,d);若运行时从键盘上输入:6,5,65,66。则输出结果是()A)6,5,A,B/ 字符型数据ASCII 码值在0-255 之间时,可以和数值型数据相互转化,当0-255 之间的数值用 %c输出时,输出此数值(ASCII )所对应的字符,当字符用%d输出时,则输出此字符所对应的ASCII 码值B)6,5,65,66C)6,5,6,5

28、D)6,5,6,664、 以下程序的输出结果()main()int a=2,b= -1 , c=2;if ( ab)if(b0) c=0;else c+=1;printf(“ %dn” ,c); / 此题考查if程序结构,整体看来就是一个单分子结构,if(ab)不成立,则程序直接执行 printf(“ %dn” ,c);A) 0B)1C)2D)365、下面程序的输出结果是()main() float x=2.0,y;if (x0.0) y=0.0;else if(x0.5)&(!x) y=1.0/(x+2);else if(x10.0)y=1.0/x;else y=10.0;printf(%f

29、n,y);本题考察多分支ifelse ifelse ifelse的用法,其中该多分支结构的执行过程是先判断 if(x0.0)是否成立,如果成立,执行y=0.0; 然后跳到后续语句printf(“ %fn ”,y);如果不成立,则依次判断 elseif(x0.5)&(!x)是否成立,如果成立,则执行 y=1.0/(x+2); ,然后跳到到后续语句 printf(“ %fn ” ,y); ,如果不成立,则继续判断else if(x10.0)是否成立,如果成立,则执行 y=1.0/x; 然后继续执行后续语句printf( “ %fn ” ,y); ,如果不成立,则执行 else 分支,即 y=10.

30、0;然后接着执行后续语句printf( “%fn ” ,y);注意 :1.0/x的结果定是带有小数点的。也即除法/ 的用法是如果两边运算对象是整型,结果一定是整数,如1/2的结果是0;如果有一个是浮点型,结果一定是浮点型,如1.0/2=0.5。A) 0.000000 B) 0.250000C)0.500000D) 1.00000066、 C语言的 if 语句中,用以决定分支流程的()A) 只能用逻辑表达式或关系表达式B) 只能用关系表达式C)只能用逻辑表达式D)可用任意类型表达式/ 只要表达式的结果是非0 数据,就代表 if条件成立67、设 a=1、 b=2、 c=3、 d=4,则表达式: a

31、b?a:cd?a:d 的结果是 ()A) 4B ) 3C ) 2D) 1/* 此题考查条件表达式的嵌套使用,即条件运算符的结合方向 (自右向左),因此 ab?a:cd?a:d等价于 ab?a: ( cd?a:d ),而条件表达式是求解过程是,如果cd 成立,则括号里的值为a 的值 1,否则是 d 的值 4;而 cd 即 34 成立,所以括号里的值为1,然后 ab?a:cd?a:d即可变化成 ab?a:1 , ab 即为 12 成立,因此,整个条件表达式的结果即为a 的值 1。 */68、以下程序的输出结果 ()int k,j,s;for(k=2;k6;k+,k+) s=1;for(j=k;j6

32、;j+)s+=j;printf(%dn,s);/* 注意累加和的初始值,在每次部循环开始时,都是从1 开始的。由于层循环中s=1;这条语句外层循环每次都要执行,因此,就可以跳过k=2;这一次,直接从k=4;这一次开始,层循环从 j=k=4 ,到 j7) n-;/此时 n- ;和 -n;的作用相同,就是让n 的值自减 1printf(“ %d“ ,n);A)10 9 8B)987 C)10987 D )987670、以下程序的输出结果()main( )int i;for(i=3; i=5;i+).专业 .专注 .if(i%2)/ 等价于 if(i%2!=0),也等价于 if(i%2=1)prin

33、tf(“* ”);elsecontinue;/continue;的作用能使程序结束本次循环printf(“#”);printf(“ $n ” );/* 整个程序的执行过程如下:i=3 时, if(i%2)条件成立,输出一个* ,然后执行后续语句printf(“ #” ); ,输出一个 #,然后 i+, 此时 i 的值为 4,if(i%2)条件不成立, 执行 else 分支,此时遇到continue语句, 则跳过本次循环执行,执行 i+, 此时 i 的值为 5,if条件成立, 输出一个 * ,然后执行后续语句再输出一个#,i 再次 +,此时 i 的值为 6,i=5 循环条件不成立,则退出循环,但

34、要执行循环的后续语句printf(“ $n ” ); 输出一个 $*/A)*#*#*#$B)#*#*#*$C)*#*#$D)#*#*$71、以下程序的输出结果是()main()int x,i;for(i=1; i 0 )| (E0)73、以下程序运行后,a 的值()main()int a,b;for(a = 1,b =1;a=20) break;if(b %3 =1) b+=3; continue;b -=5;/该语句形同虚设,根本执行不到,并且有没有该语句,不影响程序的最终结果printf(%d,a);/* 本题考察break 和 contnue 语句的用法,C 语言中, break 有两个

35、地方可以用,一个是switch结构中, 一个是循环体中,当用在循环体中时,可以强制退出循环;continue语句只能用在循环体中,能够结束本次循环的执行,也即continue语句后面的语句根本执行不到*/A)7B)8C)9 D)1074、设 x 和 y 均为整型变量,则执行下面的循环后,y 的值为 ()void main()int x,y;for(y=1,x=1;y=10)break;if(x%2=1)x+=5;continue;x-=3;printf(%d,y);/* 本题和上一题,有些类似,但不尽相同。本题中x-=3 ;这条语句执行到了,也即当if(x%2=1)条件不成立时,即执行x-=3

36、; 这条语句 */A)2B )4C)6D )875、下面程序的输出是()main() int x=100, a=10, b=20, ok1=5, ok2=0; if(ab)if(b!=15)if(!ok1)x=1; elseif(ok2)x=10;x=-1;printf(%dn,x);/* 本题考察if语句的嵌套使用,以及 if(!a)和 if(a)的用法 ; 该程序的结构整体看是单分支结构。if(ok2)x=10; 作为 else 分支的嵌语句。而 ifelse 结构作为 if(b!=15) 的嵌语句,而 if(b!=15) 又作为 if(ab) 的嵌语句 */A) -1B) 0 C) 1 D)不确定的值二、填空题1、一个 C 程序的开发步骤可以分为四步,分别是编辑、( 编译) 、(连接)、(执行)。.专业 .专注 .2、一个 C 程序必须有一个(main )函数。 C 程序执行时必定从(main)函数开始执行。3、函数体由符号( )开始,用( )符号结束。4、在 C 语言程序中,用关键字(int)定义基本整型变量,用关键字(float)定义单精度实型变量, 用关键字 ( double)定义双精度实型变量, 用关键字 (unsigned)定义无符号型整型变量。5、a、b 要定义成单精度实型变量, 并赋初值 1 的定义语句是 _float a=1,

温馨提示

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

评论

0/150

提交评论