9.2C基础作业

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

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

答案:D

在一个运算中,若存在double类型,最终结果一定是double类型

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

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

 答案:A

int和double混合运算时,会自动将int类型的数据转换为double类型的数据,

int与float混合运算时,会自动将int类型的数据转换成float类型的数据

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

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

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

 答案:B

扩展A选项:x = x + y ; y = y + 1

扩展B选项:x + 1 = y + 1

扩展C选项:x = y + 1

扩展D选项:x = y  ; y = y + 1

分析:'='为赋值操作符,'='左侧不能是表达式

(注:'++'在变量后,变量先参与运算赋值后,再加一)

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

#include <stdio.h>

int main()

{

int k = 011;      

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

    return 0;

}

答案:9

展开后:

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

k = k + 1;

'++'在变量后,变量先参与运算赋值后,再加一

5、 请正确填写输出结果。(恩易物联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)、(4)、(1)、(31)、(3)

1、逻辑与&&,两侧全真(非零)为真

2、位与&,展开按位相与a:0000 1111 , b:0001 0100,按位相与得:0000 0100,转十进制:4

3、逻辑或||,两侧遇真(非零)为真

4、位或&,展开按位相与a:0000 1111 , b:0001 0100,按位相或得:0001 1111,转十进制:31

5、按位右移2,展开a:0000 1111,正数补码与原码相同,按位右移,左侧补零的:0000 0011,转十进制:3

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

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

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

答案:

A:a和b任意不为零则结果为真

B:a和b任意不为零则结果为真

C:a为零b不为零  或  a不为零b为零则结果为真

D:a和b都不为零则结果为真

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

 答案:1

&&和||同级运算遵循从左到右,展开得:

=> 1 && 1 && 3 || 8 && 1

=> 1 && 3 || 8 && 1

=> 1  || 8  && 1

=> 1 && 1

=> 1

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

答案:52

a:0000 1101 ,左移两位右侧补零:0011 0100,转十进制为 32+16+4=52

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

答案:3

根据优先级()内优先

=> 2 + (3 > 1)

=> 2 + 1

=> 3

10、能正确表示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:当a>=0,b<0 或a<0,b>=0时结果为真

B:&&运算前后冲突,永远不为真

C:&&运算前后冲突,永远不为真

D:当a<0,b<0 或a>0,b>0时结果都为真

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

答案:0

当存在'='赋值运算符时,遵循从右到左原则,得

=>  (m = (a>b))&& (n = (c>d))

=>   (m = 0) && (n = 0)

=> 0 && 0

=> 0

求得n = 0;

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

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

答案:8

展开:

=> 12 & 12

=>  0000 1100 & 0000 1010

=>  0000 1000

=> 8

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

答案:-6

char cTwoLength = 153;越界得

char cTwoLength 值为-103

原码:1110 0111

符号位6432168421
11100111

反码:1001 1000

补码:1001 1001

右移4:1111 1001(右移负数最高位补1

得反码:1111 1000  (补码转反码减一)

得原码:1000 0111转十进制:-7

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

A.0.1f                      B. 1.0e0.1       

C. 'z'                           D. '\110'

答案:B

A:表示0.1为单精度浮点数类型float

B:E后必须为整数

C:字符z转十进制为122

D:ASCII码

15、sizeof(float)是( )。(山东丁一)

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

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

D

sizeof是运算符,获取类型的大小,返回一个无符号整数

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

答:

char占一个字节长度,范围:-2^7~2^7-1

int 占4个字节长度,范围:-2^31~2^31-1

17、下面的代码输出是什么,为什么? (信雅达)

void foo(void)

{

    unsigned int a = 6;

    int b = -20;

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

}

答:>6

无符号和有符号一起运算时,默认把有符号int转换成无符号int,即a为6,b为20

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

答:0x11

0x10  |  0x01

先转换成二进制(一拆四)
0b0001 0000  |  0b0000 0001

0b0001 0001

转换成十六进制(四合一)

0x11

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

答:0x00

0x10 & 0x01

先转换成二进制(一拆四)

0b0001 0000  & 0b0000 0001

0b0000 0000

转换成十六进制(四合一)

0x00

 20、关于条件的书写

20.1判断year是不是闰年   

(0 == year % 4)  &&  (0 != year %100)  ||  (0 == year % 400)

20.2判断num是偶数

0 == num % 2

20.3判断num是一个三位数

0 != num %100

20.4判断字符ch是大写字母

ch >=65  && ch <= 90

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

ch > 48 && ch <= 57  &&  0 == ch % 2

字符 2 4 6 8 对应十进制ASCII值均为偶数

注:0不为偶数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值