《C和指针》第五章习题

问题

浮点数类型,2.0

因为两个数都是整数,因此除法得到一个被截断的整数,然后再转化为浮点数,所以为2.0

想得到2.5-->(float)25/10

显而易见,结果本应当是-10

但是由于函数的调用顺序是不确定的,所以可能有一下结果

2 - 3*4

2 - 4*3

3 - 2*4

3 - 4*2

4 - 3*2

4 - 2*3

即三个func()的调用顺序不确定

用于操纵特殊的一位的时候 

如果要挑剔的话,应该是if更慢一些,因为多了赋值i的语句 

 

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

// 即当能够整除400时,就为1
// 当不能整除400,又可以整除4,不能整除100时也为1
// 当既不能整除400,又不能整除4,或者能整除4,也能整除100,就为0

 将打印出In Range,这是因为1 <= a是真的并且等于1,这个表达式之后测试 1 <= 10也是对的

左式为真返回值为1,1<=10也为真,所以打印In range

 

	while (a = f1(x), b = f2(x + a), c = f3(a, b), c > 0)
	{
		statement
		++x;
	}

 

不能,若数组的数据之和为0,但是数据不全为0时就不正确

a. -25
b. -25, b = -24
c. 9, a = 9
d. 1
e. 4
f. -5
g. 40
h. -4
i. 1
j. 10, b = 10
k. 0
l. 2
m. -19
n. -17
o. 24
p. 0
q. 1
r. 10
s. 12, a = 12
t. 4, b = 4
u. -4, b = -4
v. 4, a = 4
w. 1, d = 1
x. 3, a = 3, b = 3, c = 3
y. -27, c = -15, e = -27
z. -65
aa. -1
bb. 1
cc. 1
dd. 1
ee. 0
ff. 1
gg. 0
hh. -25590
ii. 1
jj. 1, a = 11
kk. 0, b = -24
ll. 1, b = -24
mm. 17, c = 3
nn. 20
oo. 80, a = 80, d = 2

 a. a+b/c
b. (a+b)/c
c. a*b%6
d. a*(b%6)
e. a + b == 6
f. ! ( a >= ’0’ && a <= ’9’ )
g. ( a & 0x2f ) == ( b | 1 ) && ~ c > 0
h. ( a << b ) – 3 < b << a + 3
i. ~ a ++
j. ( a == 2 || a == 4 ) && ( b == 2 || b == 4 )
k. a&b^(a|b)
l. a+(b+c)

声明一个有符号数,赋值一个负数,右移一位后结果如果是负数则为算数移位,否则为逻辑右移 

编程练习 

void main()
{
	int a = 0;
	while ((a = getchar()) !=EOF)
	{
		if (a >= 'A' && a <= 'Z')
			putchar(a + 32);
		else
			putchar(a);
	}	
}

 

void main()
{
	int a = 0;
	while ((a = getchar()) !=EOF)
	{
		if (a >= 'A' && a <= 'M' || a >= 'a' && a <= 'm')
			putchar(a + 13);
		else if (a >= 'N' && a <= 'Z' || a >= 'n' && a <= 'z')
			putchar(a - 13);
		else
			putchar(a);
	}	
}

 

unsigned int reverse_bits(unsigned int value)
{
	unsigned int dst = 0;
	int i = 0;
	for (i = 1; i !=0; i<<=1)
	{
		dst <<= 1;
		if (value & 1)
			dst |= 1;
		value >>= 1;
	}
	return dst;
}

 

 

 

 

 

 

  • 30
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值