上次去面试,碰到了机考,之前整理过一编文章《面试总结:任意一个整数分解为几个连续正整数之和》,简单说明了一些机考和笔试区别和注意点,现在特意把当时面试时遇到另外一道题也整理出来,加深一下自己对题目的印象。
题目描述:由实部和虚部组成,形如(a,bi)这样的数,称为复数。通信系统中,通常用32bit数来表示复数(高16bit表示实部,低16bit表示虚部),如整数524295(16进制为0x00080007)所代表的复数,实部为0x0008,虚部为0x0007。
有别于实数运算,复数加、减、乘、除运算定义如下:
复数加公式:(a,bi) + (c,di) = (a + c),(b + d)i
复数减公式:(a,bi) - (c,di) = (a - c),(b - d)i
复数乘公式:(a,bi) * (c,di) = (ac - bd),(ad + bc)i
复数除公式:(a,bi) / N = (a/N),(b/N)i
题目要求:输入N个复数,计算这个N个复数的平均值,复数Avg = (复数1*复数2 + 复数3*复数4 + … + 复数N-1*复数N) / N。
复数加、复数减、复数乘、复数除的结果仍然为复数,实部和虚部均为16bit有符号数,计算过程中,当结果大于32767(0x7fff)时,输出32767;当计算结果小 于-32768(0x8000)时,输出-32768。
输入:

本文介绍了在面试中遇到的机考问题,涉及复数的加、减、乘、除运算及其在通信系统中的表示。题目要求计算一组偶数个复数的平均值,并在C++中处理输入时的逗号分隔问题。示例输入和输出展示了具体的计算过程。
最低0.47元/天 解锁文章
3498

被折叠的 条评论
为什么被折叠?



