现在的位置: 首页 > 综合 > 正文

一C语言面试题的解答之我见

2013年08月18日 ⁄ 综合 ⁄ 共 609字 ⁄ 字号 评论关闭

有次去面试了一家公司,公司的面试题目里有这么一道题目
题目:有一个16位的整数,每4位为一个数,写函数求他们的和。
大家都可以在网上找到这个题目,已经是被N多公司用了。

网上的答案是这样的:
解释:
整数1101010110110111
和 1101+0101+1011+0111
感觉应该不难,当时对题理解的不是很清楚,所以写了一个函数,也不知道对不对。
疑问:
既然是16位的整数,1101010110110111是2进制的,那么函数参数怎么定义呢,请大虾指教。
答案:用十进制做参数,计算时按二进制考虑。
/* n就是16位的数,函数返回它的四个部分之和 */
char SumOfQuaters(unsigned short n)
{
char c = 0;
int i = 4;
do
{
c += n & 15;
n = n >> 4;
} while (--i);

return c;

我有不同的答案。既然是16位的整数。也分有符号的和无符号的。
于是我是这么做的。
typedef struct {
 int a:4
 int b:4
 int c:4
 int d:4
} ABCD;
int main()
{
 int tosum=34,sum;
 ABCD *p=(ABCD *)malloc(sizeof(ABCD));
 memmov(p,tosum,sizeof(ABCD));
 sum=p->a+p->b+p->c+p->d;
 printf("the sum is %d/n",sum);
 return 0;
}

大家看看有没有问题? 

【上篇】
【下篇】

抱歉!评论已关闭.