无忧首页企业系统我的无忧
无忧服务:
兼职活动培训
娱乐交友:
交友社区资讯
全职实习:
实习暑假寒假
微信号:school51
扫一下,立即关注
加关注
在线支付,立省10元
下载新版APP
===大学生成长生活平台===

2011年计算机等级二级C语言课后练习题及答案解析(3)

2012-12-26来源/作者:卫凯点击次数:469

  一、单项选择题
  1.下面不属于C语言的数据类型是【 】。
  A) 整型 B) 实型 C) 逻辑型 D) 双精度实型
  分析:和其它高级语言相比,C语言中没有逻辑型数据,也没有逻辑型变量。
  本题正确答案为C。
  2.C语言中,下列属于构造类型的是【 】。
  A) 整型 B) 实型 C) 指针类型 D) 结构体类型
  分析:C语言中构造类型的数据有三种:数组、结构体和共用体,数组是同类型数据的集合,结构体是不同类型的数据集合。
  本题正确答案为D。
  3.下列字符串不符合标识符规定的是【 】。
  A) SUM B) sum C) 3cd D) end
  分析:标识符规定只能由26个英文字母(大小写均可),数字0~9和下划线组成,且不能以数字开头,题中的3cd不符合规定。
  本题正确答案为C。
  4.下面能正确表示八进制数的是【 】。
  A) 0x16 B) 029 C) -114 D) 033
  分析:选项A)以0x开头是十六进制数,选项B)虽然是0开头,但出现了数字9,选项C)是十进制数。
  本题正确答案为D。
  5.下面四个选项中,均是合法实数的选项是【 】。
   A) 2e-4.2 B)-0.50 C) 0.2e-.5 D)-e5
  分析:实数有两种表示形式:小数形式和指数形式,小数形式必须有小数点,指数形式中,字母e之前必须有数字,e之后必须是整数。选项A)中的"2e-4.2",选项C)中的"0.2e-.5",选项D)中的"-e5"均是不合法的。
  本题正确答案为B。
  6.C语言中,字符型数据在内存中存储形式是【 】。
  A) 原码 B) 反码 C) 补码 D) ASCII码
  分析:C语言中int型数据是以补码形式存放的,字符型数据是以ASCII码形式存放的。
  本题正确答案为D。
  7.下列正确的字符型常量是【 】。
  A) "a" B) ′\\\\′ C) "\\r" D) 277
  分析:字符常量的定义是用单引号括起来的一个字符,A和C的定界符不对,D超过了char型数据的表示范围,′\\\\′是转义字符。
  本题正确答案为B。
  8.若有说明语句char ch1=′\\x41′;则ch1【 】。
  A) 包含4个字符 B) 包含3个字符 C) 包含2个字符 D) 包含1个字符
  分析:"\\x41"中的"41"是十六进制数,即十进制的65,题中ch1存放的65是字母"A"的ASCII码。
  本题正确答案为D。
  9.下列程序段输出的字符串长度为【 】。
  printf("\\\\aaa\\′ccc\\bddd\\"");
  A) 11 B) 12 C) 13 D) 17
  分析:\\\\、\\′、\\b和\\"为转义字符,程序输出结果为:\\aaa′ccddd"。
  本题正确答案为A。
  10.下列运算符中,要求运算对象必须是整数的是【 】。
  A) / B) * C) % D) !
  分析:题目中"/"、"*"、"!"的运算对象既可以整数,也可以是实数,只有取余数运算符"%"要求运算对象必须是整数。
  本题正确答案为C。
  11.下面合法的赋值语句是【 】。
  A) x+y=2002; B) ch="green"; C) x=(a+b)++; D) x=y=0316;
  分析:赋值号左端不能为表达式,选项A)是错的;赋值号不能将字符串赋给某个变量,选项B)也是错的;增量运算符“++”不能用于表达式,选项C)也是错的。
  本题正确答案为D。
  12.已知a为int型,b为double型,c为float型,d为char型,则表达式a+b*c-d/a结果的类型为【 】。
  A) int 型 B) float型 C) double型 D) char型
  分析:不同类型数据混合运算的转换规律是:运算前float型数据会自动转换为double型,char型数据会自动转换为int型。运算时int型数据和double型数据要先化为相同类型,即double型,运算结果也为double型。
  本题正确答案为C。
  13.执行以下程序段后的输出结果是【 】。
  int x=0xcde;
  printf("M,%4o,%4x\\n",x,x,x);
  A) 3294,6336,cde B) 3294,6336,xcde C) 3294,06336,0xcde D) 3294,6336,0cde
  分析:0xcde是十六进制数,写成二进制数形式为:1100 1101 1110,按八进制送出时,是从右向左3位二进制数写成1位,按十六进制形式送出时,是从右向左4位二进制数写成1位。
  本题正确答案为A。
  14.下面的程序运行后输出为【 】。
  #include
  #include
  main( )
  { int a,b;
  float c;
  b=5;c=6;c=b+7;b=c+1;
  a=sqrt((double)b+c);
  printf("%d,%f,%d",a+6,c,b);
  }
  A) 11.000000,12.000000,13.000000
  B) 11.000000,12.000000,13
  C) 11.0000000,12,13
  D) 11,12.000000,13
  分析:C语言允许将一种类型的数据赋给另一种类型的变量,但是变量的类型并不会因为赋值而发生改变,如本题中将b+7,即12赋给float型变量c,c值应为12.000000而不是整数12,同样a=sqrt((double)b+c),赋值号右边是双精度数,但由于a是整形变量,故a的值为5。
  本题正确答案为D。
  15.执行以下程序后x的值为【 】。
  unsigned int x=65535;
  printf("%d\\n",x);
  A) 65535 B) 1 C) 有错误 D) -1
  分析:题中将x定义成无符号整数,并且已初始化为:1111111111111111,若按%d格式输出,则最高位的1被当成了符号,1111111111111111成了负数的补码,输出结果为-1。
  本题正确答案为D。
  二、填空题
  1.下面程序段的功能是输出大写字母对应的小写字母的ASCII码,请填空。
  char ch;
  scanf("%c",&ch);
  ch=(ch>=′A′&&ch<=′Z′)?(【1】):ch
  printf("【2】\\n",ch);
  分析:题目中条件运算为判断输入字母是否为大写,当ch>=′A′&&ch<=′Z′为真时,将其转换成对应的小写字母,需ASCII码值加上32,已知题意是将大写字母对应的小写字母ASCII值输出,所以printf语句中的输出格式应为十进制格式。
  本题正确答案为 【1】 ch+32, 【2】 %d。
  2.下面程序段的执行结果是x=【3】,y=【4】。
  inta=3,b=5,x,y;
  x=a+1,b+6;
  y=(a+1,b+6);
  printf("x=%d,y=%d",x,y);
  分析:此题考查逗号表达式的概念,因逗号运算符的优先级比赋值号还低,所以执行x=a+1,b+6时,x得到的是a+1的值。
  本题正确答案为 【3】 4, 【4】 11。
  3.下面程序执行后k的值为【5】。
  int a=1,b=2,c=3,d=4,k;
  k=a>b?a:c>d?c:d
  分析:因题中a>b的值为假,故求解表达式k=a>b?a:c>d?c:d相当于求k=a>b?a:(c>d?c:d)。
  本题正确答案为 【5】 4。
  4.已知:int a=5;则执行a+=a-=a*a;语句后,a的值为【6】。
  分析:a+=a-=a*a的运算顺序是从右向左,相当于求a+=(a-=a*a),其中小括号内的运算得a=5-5*5即a=-20,下一步再求a+=a,即a=a+a,将-20代入得a=-40。
  本题正确答案为 【6】 -40。
  5.下面程序的运行结果是x=【7】,y=【8】。
  main( )
  { float x=4.9;int y;
  y=(int)x;
  printf("x=%f,y=%d",x,y); }
  分析:强制类型变换并不改变x的原值,x仍为4.9,而变换得到的是中间结果,此题将中间结果赋给了y,另外注意是舍弃小数部分,而不是四舍五入。
  本题正确答案为 【7】 4.900000 【8】 4。

  编辑特别推荐:

  C语言学习要领

  名师谈C语言的重要性和如何学习C语言

  c语言初学者环境选择





相关阅读



关于我们 | 联系我们 | 用户指南 | 网站地图 | 意见建议 | 会员注册 | 用户协议 | 隐私政策