C语言程序设计错题集(1)

C语言程序设计错题集(1)

一、单选题

  1. 假设有变量定义如下 int a, k; 则以下哪条语句不能确保将变量k的值变为0:
    A.k = a + ~a + 1;
    B.k ^= k;
    C.k = (k && !a) || (!k && a);
    D.k = k && !k;
    正确答案:C
    解析:(1)对A选项,~ 表示按位取反,运算对象是二进制数据,1变0,0变1。所有正整数的按位取反是其本身+1的负数,所有负整数的按位取反是其本身+1的绝对值,零的按位取反是 -1。例如,7的二进制为0000 0111,取反1111 1000,表示-8,即 ~ 7的值为-8。故A不符合题意。
    (2)对选项B,异或运算符( ^ )的运算规则是参与运算的两个值,如果两个相应位相同,则结果为0,否则为1。即: 0 ^ 0 =0 ; 0 ^ 1 =1 ; 1 ^ 0 =1; 1 ^ 1=0 。例如:3 ^ 5 = 0000 0011 ^ 0000 0101 =0000 0110 ,即 3 ^ 5 = 6 。故B不符合题意。
  2. ▁▁▁▁▁ 不是合法的常量。
    A.38
    B.038
    C.3E8
    D."\38"
    正确答案:B
    解析:对选项A,38是十进制常量,合法;对选项B,以0开头,表示八进制,其中不能出现8、9,故038不是合法常量;对选项C,3E8是实型常量(E的前面必须有数字,E的后面必须是整数),合法;对选项D,"\38"表示一个转义字符,是特殊的字符常量,合法。
  3. ▁▁▁▁▁ 是合法的C标识符。
    A.TOM
    B.char
    C.1st
    D.You&Me
    正确答案:A
    解析:合法标识符:(1)只能由字母,数字和下划线组成,且不能以数字开头;(2)关键字是保留字,不能用来做标识符;(3)大小写字母表示不同意义, 即代表不同的标识符。
  4. ▁▁▁▁▁ 不是关键字(保留字)。
    A.int
    B.extern
    C.break
    D.main
    正确答案:D
    解析:详见百度百科C语言关键字
  5. 若有定义:char ch=’\x42’;则变量ch中包含( )个字符。
    A.1
    B.2
    C.4
    D.定义不合法
    正确答案:A
    解析:’\x42’是转义字符,x表示42是十六进制数,42是字母a的ASCII码值。
  6. 若有定义语句:int x=12,y=8,z;,在其后执行语句z=0.9+x/y;,则z 的值为 ▁▁▁▁▁ 。
    A.1.9
    B.1
    C.2
    D.2.4
    正确答案:B
    解析:x的值为12,y的值为8,则 x/y 的值就是1,因为z的类型是int,所以0.9+1变成int的值就是1。
  7. 有下列语句组:short a=127,b=035;printf(“a+b=%x\n”,a+b);执行后显示( )。
    A.a+b=162
    B.a+b=156
    C.a+b=9c
    D.a+b=a2
    正确答案:C
    解析:a=127,十进制;b=035,八进制,即为十进制29;a+b的和等于十进制156,转化为十六进制得 9c 。
  8. 假设下列op1(操作数1)、op(操作符)、op2(操作数2三个)变量都被正确声明。 如果执行语句 scanf (”% d% c% f” ,& op1,& op,& op2) ; ,op1、 op 和 op2的值分别为1、 * 和2.0,则输入必须为()。
    A.1.02
    B.1
    2
    C.1 * 2
    D.1 * 2.0
    正确答案:B

二、填空题

  1. 设 c=‘w’,a=1,b=2,d=-5, 则表达式 ‘x’+1>c, ‘y’!=c+2, -a-5b<=d+1, b==(a=2)的值分别为▁▁▁、▁▁▁、▁▁▁、▁▁▁ 。
    正确答案:1 0 1 1
    解析:(1)c=‘w’,其ASCII码值为119,'x’的ASCII码值为120,则 ‘x’+1>c 即120+1>119为真,值为1;(2)'y’的ASCII码值为121,‘y’!=c+2 即 121!=119+2 为假,值为0;(3)-a-5
    b<=d+1 即 -1-5*2<=-5+1 为真,值为1;(4)b==(a=2) 即 2==2 为真,值为1 。
  2. 下列语句中,▁▁▁▁▁可输出“☼”字符(ASCII 码为 15)。
    A) putchar(‘☼’);
    B) putchar(15);
    C) putchar(’\17’);
    D) printf("%c", ‘\Xf’);
    注:请按顺序填大写字母。
    正确答案:BC
  3. 以下代码执行后,填写相应变量的值:a=▁▁▁ ,b=▁▁▁,c=▁▁▁ 。
    int a=8, b=5, c=1;
    c=(a=8,b);
    正确答案:8 5 5
    解析:c=(a=8,b) 是一个逗号表达式,c 的值是整个逗号表达式的值,逗号表达式从左向右计算,最右边的值是逗号表达式的值。
  4. 以下程序的输出结果是▁▁▁▁▁ 。
    int main(void)
    {
    int a, b, c;
    a = 25;
    b = 025;
    c = 0x25;
    printf("%d %d %d\n", a, b, c);
    return 0;
    }
    正确答案:25 21 37
    解析:(1) a = 25,十进制;(2)b = 025,以0开头,八进制;(3)c = 0x25,以0x开头,十六进制(0x是十六进制的前缀,H是十六进制的后缀)。

以上。

  • 12
    点赞
  • 51
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值