9.2 C语言基础-数据类型、运算符

题目:设有说明:char w; int x; double y; 则表达式w*x-y 值的数据类型为( )。 (智洋)

           A. float    B. char     C. int     D. double

答案:D

分析:不同数据类型进行运算时,自动转换成最高级的数据类型,然后进行运算,运算结果一定是最高级的数据类型,题目中double类型是最高级的,所以选D

题目:若有以下类型说明:(    ) (北京凝思软件)    char w;     int x;     float y, z;  则表达式w*x+z-y的结果为____类型。

         A.float         B.char          C.int            D.double

答案:A

分析:不同数据类型进行运算时,自动转换成最高级的数据类型,然后进行运算,运算结果一定是最高级的数据类型,题目中float类型是最高级的,所以选A

题目:假定下列 x 和 y 均为 int 型变量,则不正确的赋值为( );(晟安信息)

        A. x+=y++ B. ++x=++y

        C. x=++y D. x++=y++

答案:D

分析:因为x++先运算后增1,x在进行运算时返回的是x的值,是一个常量,不是一个变量,对于赋值运算是不能给一个数值赋值的,因此选D

题目:以下程序运行后输出的结果是______。(电工时代)

#include <stdio.h>

int main()

{

int k = 011;

printf("%d\n", k++);

    return 0;

}

答案:9

分析:011前值便是方法,表示八进制数,对应十进制值为1*8+1*1=9,k++后置++,先运算后增1,所以先按十进制打印,得到9

题目:请正确填写输出结果。(恩易物联2)

int main()

{

    int a = 15;

    int b = 20;

    int c;

    a && b = ? (1)

    a & b = ? (2)

    a || b ? (3)

    a | b = ? (4)

    a >> 2 = ? (5)

}

(1)________(2)_________(3)________(4)________(5)________

答案:1,00000000 00000000 00000000 0000 0100,1,00000000 00000000 00000000 0000 0100,00000000 00000000 00000000 00000011

分析:a和b为非0,对于逻辑运算,非0即为真,所以a&&b即真&&真,结果为真,即值为1;

a二进制为:00000000 00000000 00000000 00001111 b二进制为:00000000 00000000 00000000 0001 0100 a&b 按二进制位做与,同时为1为1,其余为0,结果:00000000 00000000 00000000 0000 0100 ;a和b为非0,对于逻辑运算,非0即为真,所以a||b即真||真,结果为真,即值为1;a|b按二进制做或,同时为0为0,其余为1,结果:00000000 00000000 00000000 00011111;a>>2按二进制右移2位,左边补0,右边舍弃,结果:00000000 00000000 00000000 00000011

题目:为了表示“a和b都不等于0”应使用( )。(山东丁一)

A. (a!=0) || (b!=0) B. allb

C. !((a==0)&&(b==0)) D. a&&b

答案:D

分析:a&&b,对于逻辑与,只有a和b均不等于0,即都为真时,结果才为真,所以能表示a和b都不等于0

题目:设 a=3,b=4,c=4,则表达式 a+b>c&&b==c&&allb+c&&b==c 的值为(    )。(易购软件)

答案:1

分析:a+b=7>c关系成立为1,1&&b==c,因b==c关系成立为1,1&&1为1,a为非0为真,1&&a为1,1||b+c,b+c结果为非0为真,1||b+c为1,1&&b==c,b==c关系成立为1,所以1&&b==c为1&&1结果为1

题目:已知 a = 13, a << 2的十进制数值为 (    )。(易购软件)

答案:52

分析:a二进制表示00001101 a<<2二进制左移2位,左边舍弃,右边补0,结果为00110100,十进制数为1*2^5+1*2^4+1*2^2=52

题目:int x = 2, y = 3, z = 4; 则表达式 x + (y > !z)的值为( )。(易购软件)

答案:3

分析:!z为对z逻辑非,z为非0即为真,非为0,y>0关系成立,则为真为1,所以x+(y>!z)为x+1=3

题目:能正确表示a和b同时为正或同时为负的逻辑表达式是:( ) (宇视科技,紫光云数,新华三,石峰)

A. (a >= 0 ll b >= 0) && (a < 0 ll b < 0)

B. (a>=0 && b>=0) && ( a < 0 && b < 0)

C. (a + b > 0) && (a + b <= 0)

D. a * b > 0

答案:D

分析:a*b>0,在a和b同时大于0时成立或a和b同时小于0时成立,所以选D

题目:int a=1, b=2, c=3, d=4, m=2, n=2; 执行 (m=a>b) && (n=c>d) 后,n=________(杭州快越科技)

答案:n=2

分析:a>b关系不成立,为假,结果为0,0赋值给m,m值为0,因为0与其他逻辑与的结果都为0,所以&&后面的表达式是不需要运算求出结果的,因此,n=c>d是不执行运算的,所以n的结果不变为2

题目:语句 printf("%d \n", 12 & 012); 的输出结果是:( ) (紫光云数,新华三,石峰)

A. 12 B. 8 C. 6 D. 012

答案:B

分析:12二进制为00001100 012二进制表示00001011,按二进制位与结果为:00001000,十进制为8

题目:有如下代码char cTwoLength = 153;那么 print("\r\n %d", cTwoLength >> 4)打印的值为 ________ (紫光云数)

答案:-7

分析:因为char有符号类型,取值-128~127之间,153超出127,153-127=26,128为-128,所以153为-128+25=-103,原码-103二进制 11100111,反码二进制10011000,补码二进制10011001,右移4位,左边补符号位即1,右边舍弃,结果为11111001,反码11111000,原码10000111,十进制为-7

题目:以下所列的C语言常量中,错误的是: (华三外协,紫光云数,新华三,石峰)

A.0.1f   B. 1.0e0.1

C. 'z' D. '\110'

答案:B

分析:指数表示常量e右边为整数

题目:sizeof(float)是( )。(山东丁一)

A. 一个双精度型表法式 B. 一个整型表达式

C. 一个函数调用        D. 一个不合法的表达式

答案:B

分析:sizeof是关键字,求解类型/变量所占空间的大小,单位为字节,sizeof(float)表示求解float所占空间的大小,结果为4

题目:一个32位的机器,一个 char 代表的范围是?一个 int 代表的范围是?(广域科技)

答案:有符号char范围为-2^(8-1)~2^(8-1)=-128~127,有符号int范围为-2^(32-1)~2^(32-1)=-2^31~2^31-1

题目:下面的代码输出是什么,为什么? (信雅达)

void foo(void)

{

    unsigned int a = 6;

    int b = -20;

    (a+b > 6) ? puts(">6") : puts("<=6");

}

答案:无符号int型与有符号int型运算是有符号int型转为无符号int型,-20内存中补码是1开头的,当作无符号int型是一个很大的数值,所以,a+b是一个很大的值,所以大于6成立,所以输出>6

题目:按位或运算符(|) (深圳元征信息科技)  0x10 | 0x01 = ? 十六进制的结果是多少?

答案:0x10二进制 00010000 0x01二进制 00000001 按位或为 00010001,十六进制结果为0x11

题目:按位与运算符(&) (深圳元征信息科技)  0x10 & 0x01 = ? 十六进制的结果是多少?

答案:0x10二进制 00010000 0x01二进制 00000001 按位与为 00000000,十六进制结果为0x00

题目:关于条件的书写

判断year是不是闰年

if(                     )

判断num是偶数

if(                     )

判断num是一个三位数

if(                     )

判断字符ch是大写字母

if(                     )

判断字符ch是偶数数字字符

if(                     )

答案:if(year%4==0&&year%100!=0||year%400==0),if(num%2==0),if(num>=100&&num<=999),if(ch>='A'&&ch<='Z'),if(ch>='0'&&ch<='9'&&ch%2==0)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值