linux 操作 day 3 w

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

                答案:D

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

分析:

        在计算机中,不同类型的数值数据在进行混合运算时,要先转换成同一类型之后再运算,C 语言中提供了两种方式的类型转换。

        a.  自动类型转换

        b.  强制类型转换

                eg:

                        (double)a  将a强制转换成double型;

                        (int)(x+y)  将x+y的值转换成int型;

                        sum/n  想获得精确的值 则可改写成 sum/(float)n  or  sum(float)/n ;

                

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

                答案:D

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

分析:存在float必定自动转换成double,且double为最高级

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

                答案:BD

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

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

分析:

  1. ++/--仅用于变量,不能用于表达式。
  2. ++/--结合方向是自右向左。

选项A中,将整型变量y(旧)值赋给x(后缀为+),

        输出结果为x=x+{[y(旧)]+1},y(新)=y+1;

选项B中,++x为表达式,属于不合法行为;

选项C中,将整型变量y加一后的值赋给x,

        输出结果为x=y(旧)+1,y(新)=y(旧)+1;

4、以下程序运行后输出的结果是______。

                答案:9

#include <stdio.h>

int main()

{

int k = 011;

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

    return 0;

}

分析:011为八进制转换成十进制为9。

5、请正确填写输出结果。

                答案:(1) 1 (2)  4   (3) 1 (4)  31  (5)  3  

int main()

{

    int a = 15;

    int b = 20;

    a && b = ? (1)

    a & b = ? (2)

    a || b ? (3)

    a | b = ? (4)

    a >> 2 = ? (5)

}

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

分析:逻辑运算只有0或1两种结果

           位运算符可以输出相应结果

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

                答案 :C

A. (a!=0) || (b!=0)         B. allb    (改为(a==0)||(b==0)即可正确

C. !((a==0)&&(b==0))  D. a&&b(改为(a!=0) &&(b!=0) 即可正确

分析:

{==、&&、||}(双目)、!(单目)属于逻辑运算符

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

                答案:1

分析:

        首先,整体为逻辑运算,结果只有0  or   1;

        然后排运算顺序:+大于>大于==大于&&大于|| ;

        最后从左到右依次计算;

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

                答案:4

分析:13的二进制为1101

            左移两位为0100,即为4

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

                答案:2

        分析:先运算符排序

                        ()大于!大于>

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                (0既可以为正数也可以为负数)

11、int a=1, b=2, c=3, d=4, m=2, n=2; 执行 (m=a>b) && (n=c>d) 后,n=___1gai____

分析:先比大小,再赋值

12、语句 printf("%d \n", 12 & 012); 的输出结果是:( ) 

                答案:B.8

分析:&为二进制运算符,所以要先将12转换成二进制,012转换成二进制。

        

        1100& 1010结果等于1000 ,转换成十进制为1^2^3,即8。      

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

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

                答案:-7

提示:char是有符号字符型,取值范围[-128 , +127],153属于最大值越界,结果是-103,然后对-103进行右移4位的计算输出。右移规则:

- 对于无符号整数,左侧补0。

- 对于有符号整数,如果原数是正数,则在左侧补0;如果原数是负数,则在左侧补1。

提示到这里,你试试计算一下吧,一定要理解清楚原理啊

分析:char是有符号字符型,取值范围[-128 , +127],153属于最大值越界,结果是-103。

将十进制-103转换成二进制为1001 1001,经过>>4(右移4格)后得1111 1001,1110转换成十进制得14。

14、以下所列的C语言常量中,错误的是: 

答案:B

A.0.1f           B. 1.0e0.1

C. 'z'                  D. '\110'

15、sizeof(float)是( )。

                答案:C

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

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

16、一个32位的机器,一个 char 代表的范围是?一个 int 代表的范围是?

在32位计算机中,

        signed char取值范围【-127~127】

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

void foo(void)

{

    unsigned int a = 6;

    int b = -20;

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

}

18、按位或运算符(|)   0x10 | 0x01 = ? 十六进制的结果是多少?

19、按位与运算符(&)   0x10 & 0x01 = ? 十六进制的结果是多少?

20、关于条件的书写

判断year是不是闰年

if(Y%4==0&&Y%100!=0)

判断num是偶数

if(num%2==0)

判断num是一个三位数

if(num/100>0)

判断字符ch是大写字母

if(ch>='A'&&ch<='Z')

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

if((ch>='2'&&ch<='9')&&(ch-48)%2==0)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值