20135306黄韧[2.72 2.77 3.70](http://i.cnblogs.com/EditPosts.aspx?opt=1)

2.72

A.size_t是无符号整数,因此左边都会先转换为无符号整数,它肯定是大于等于0的。

 

B.判断条件改为

if(maxbytes > 0 && maxbytes >= sizeof(val))

 

2.77

#include<stdio.h>
int divide_power2(int x, int k){ int ans = x>>k; 
int w = sizeof(int)<<3; 
ans += (x>>(w-1)) && (x&((1<<k)-1)); return ans; } 
void main()
{
int x;
int k;
int ans;
printf("请输入x\n");
scanf("%d",&x);
printf("请输入k\n");
scanf("%d",&k);
ans=divide_power2(x,k);
printf("x/2^k=");
printf("%d",ans);
}

 

先计算x>>k,再考虑舍入。 

舍入的条件是x<0&&x的最后k位不为0。

3.70

(1)生成以上代码的C版本

Long  traverse(tree_ptr tp) 

    Long  v = MAX_LONG, rv, lv; 

    If (tp != NULL) 

    { 

        lv = traverse(tp->left); 

        rv = traverse(tp->right); 

        v = lv < rv ? lv : rv  //Line16 cmovle: if(r12<rax) rax=r12;

    v = v > tp->v ? tp->v : v  //Line20 cmovle: if(rax>rbx) rax=rbx;

  } 

    return  v; 

}

(2)用自然语言解释这个函数计算的是什么。

答:函数的目的是找到树的所有节点的值中最小的一个。

posted @ 2015-11-22 18:54  黄伯伯  阅读(167)  评论(0编辑  收藏  举报