记录翁恺C入门测试题里面自己不会的

目录

题目重点索引:

1.x&&1

2.unsigned short

3.!e的理解

4.&&的理解

5.对double的理解 

6.字符命名

7.以下代码的输出是 :

8.x++和++x的区别

在这里插一个进制转换的方法,以后我会慢慢补充:


这篇文章是我2023年末开始写的,目前记录一下本人做题时不会的题,也会标注一些笔记,本人学识疏浅,如有错误麻烦指正,感谢!

题目重点索引:

1.x&&1

题目内容:

以下表达式x&&1用在if的条件中时,和哪个是等价的:

A. x==1

B.x!=1

C.x==0

D.x(x!=0)

正确答案:D   错选为A

解析:

x&&1,右侧为实数,所以&&实际不起任何作用,即输出x

Note:

1.!=表示不等于

2.x&&1其实就是表示二者关系,例:x为2,输出1,因为两个数都是实数;如果,为0,则输出0,因为此时二者逻辑假

2.unsigned short

题目内容:

对于以下代码:

unsigned short sht = 0;
sht--;

执行后,sht的值是?
A.32767

B.65535  

C.-1  

D.65536

正确答案:B   错选为C

解析:

B.sht被命名为一个无符号短整型变量,并初始化为0,根据无符号短整型变量的性质,减1操作将导致溢出;short类型在各种平台都是16位,2的16次方为65536,所以unsigned short能表达的最大的数是65535
C、unsigned 不能表达负数,unsigned或unsigned int只用于非负数的场合

Note:

数据类型数据类型符占用字节数数值范围
整型int2/4

-2的15次方~2的15次方-1(-32768~32767)/-2的31次方~2的31次方-1

短整型 short2-2的15次方~2的15次方-1(-32768~32767)
长整型long4-2的31次方~2的31次方-1
单精度浮点型float4-10的38次方~10的38次方
双精度浮点型double8-10的308次方~10的308次方
字符型char1-128~127

(65代表A,97代表a)

注意:整型int的字节数由系统决定的,在16位系统中占2个字节,在32位系统中占4个字节

3.!e的理解

题目内容:

在代码:
while(!e)中,!e等价于:
A.e!=1
B.e==0
C.e!=0
D.e==1

解析:

!即表示非,则只有当e为0的时候,才会打印出1(真),其他值均为假

4.&&的理解

题目内容:

以下代码的输出是( )

int x=0, y=0, z=0;
z = (x==1) && (y=2);
printf("%d ", y);

正确答案:0  

解析:

&&运算符当计算出前一个值(此处为“x==1”)为0时即不再做后续运算,则“y=2”无法赋值运算。

5.对double的理解 

题目内容:

以下代码的结果是( )

	(double)(10 / 4 * 4);

正确答案:8.0

解析:

先运算,再转换成double型

Note:

double型的精度为15,float型精度为6~7,不过写的时候写8.0就行了

6.字符命名

题目内容:

下列可用于C语言程序标识符的一组是(名字间以逗号分隔):
A. 2_a, xyz, b1_s
B.void,_2a, 2a
C.void, d, WORD
D._if, _123, file

正确答案:D   错选为C

解析:

A、不能以数字开头
B、不能以数字开头
C、void是保留字
D、下划线开头后面没有字母也是可以的

Note:

标识符由字母,数字,下划线组成,不能有其他乱七八糟的东西,空格也不行;并且标识符的第一个字符必须是字母或下划线,不能是数字;不能是保留字(关键字)

7.以下代码的输出是 :
    int i,x,y;	
    i=x=y=0;
    do {
    	++i;
    	if ( i%2 ) 
    		x+=i, 
    	i++;
	    y +=i++;
    } while ( i<=7 );
    printf("%d %d %d", i, x, y);

正确答案:9 1 20

解析:

注意:x+=i,是以逗号结尾的,if语句包括 x+=i, i++;

          且y+=i++的执行顺序为:y = y + i ; i ++;

8.x++和++x的区别

题目内容:

下列程序段输出结果为:

int x=1, y=012;
printf(“%d”,y*x++); 

正确答案:10    我的答案:不会写

在这里插一个进制转换的方法,以后我会慢慢补充:

【注】

1.八进制,Octal,缩写OCT或O,一种以8为基数的计数法,采用0,1,2,3,4,5,6,7八个数字,逢八进1。一些编程语言中常常以数字0开始表明该数字是八进制。

八进制化为十进制:将八进制数12转换成十进制数: (1*8^1)+(2*8^0)=10

2.十进制:%d                  八进制:%o                十六进制:%x

需要注意的是,如果要在打印出的数字上显示进制区别,(八进制前缀0;十六进制前缀0x或者0X)则分别要在转换说明中加入#,如%#o,%#x

解析:

*优先,++x是先运算后赋值,x++是先赋值后运算

如这道题改为y*++x,那么结果是10*2=20,++立即生效。
x++则是延迟生效,有运算延迟,如这道题,y*x++,那么结果是10*1=10,也就是先运算10*1,之后x自增变成x=2,这个值在下一语句开始生效。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

听雨686

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值