1234567c语言复数四则运算有多少组

10-2110-2110-2110-2110-2110-2110-2110-2110-2110-21最新范文01-0101-0101-0101-0101-0101-0101-0101-0101-0101-0101-0101-0101-0101-0101-01> 【答案带解析】从集合{0,1,2,3,4,5,6}中任取两个互不相等的数a,b,组成复数a+b...
从集合{0,1,2,3,4,5,6}中任取两个互不相等的数a,b,组成复数a+bi,其中虚数有( )A.36个B.42个C.30个D.35个
本题是一个分步计数问题,从集合中任取两个互不相等的数a,b,组成复数a+bi,要求是一个虚数,也就是b不能为0,先选有限制条件的元素b,不能选0,在根据两个互不相等的数a,b,根据分步计数原理得到结果.
∵a,b互不相等且为虚数,
∴所有b只能从{1,2,3,4,5,6}中选一个有6种,
a从剩余的6个选一个有6种,
∴根据分步计数原理知虚数有6×6=36(个).
考点分析:
考点1:分步乘法计数原
相关试题推荐
已知I={1,2,3},A、B是集合I的两个非空子集,且A中所有数的和大于B中所有数的和,则集合A、B共有( )A.12对B.15对C.18对D.20对
从长度分别为1、2、3、4的四条线段中,任取三条的不同取法共有n种.在这些取法中,以取出的三条线段为边可组成的三角形的个数为m,则等于( )A.0B.C.D.
某城市的电话号码,由六位升为七位(首位数字均不为零),则该城市可增加的电话部数是( )A.9&8&7&6&5&4&3B.8&96C.9&106D.81&105
甲、乙两人从4门课程中各选修2门,则甲、乙所选的课程中恰有1门相同的选法有( )A.6种B.12种C.24种D.30种
设P、Q是两个非空集合,定义P*Q={(a,b)|a∈P,b∈Q}.若P={0,1,2},Q={1,2,3,4},则P*Q中元素的个数是( )A.4个B.7个C.12个D.16个
题型:选择题
难度:中等
Copyright @
满分5 学习网 . All Rights Reserved.关于数据结构复数的四则运算的疑问 --求解决 -CSDN论坛
关于数据结构复数的四则运算的疑问 --求解决
我们老师叫我做的复数四则运算&如若输出的时候是0+0i&,我不知道怎样做才能把输出的变成0。&
#include&&stdio.h&
#include&"Complex.h"
#include&"ComplexOperation.c"
void&main()
struct&Complex&c1,c2,
//构造复数c1
printf("请输入第一个复数的实部:");
scanf("%d,",&real);
printf("请输入第一个复数的虚部:");
scanf("%d,",&imag);
c1=InitComplex(real,imag);
//构造复数c2
printf("请输入第二个复数的实部:");
scanf("%d,",&real);
printf("请输入第二个复数的虚部:");
scanf("%d,",&imag);
c2=InitComplex(real,imag);
//复数的加法
sum=AddComplex(c1,c2);
printf("复数%d+%di和复数%d+%di的和是:%d+%di\n",c1.real,c1.imag,c2.real,c2.imag,sum.real,sum.imag);
&&&&//复数的减法
sum=JianComplex(c1,c2);
printf("复数%d+%di和复数%d+%di的差是:%d+%di\n",c1.real,c1.imag,c2.real,c2.imag,sum.real,sum.imag);
&&&//复数的乘法
sum=MultiplyComplex(c1,c2);
printf("复数%d+%di和复数%d+%di的积是:%d+%di\n",c1.real,c1.imag,c2.real,c2.imag,sum.real,sum.imag);
struct&Complex&{
struct&Complex&InitComplex(int&real,&int&imag)
struct&Complex&t;
struct&Complex&AddComplex(struct&Complex&c1,&struct&Complex&c2)
struct&Complex&t;
t.real=c1.real+c2.
t.imag=c1.imag+c2.
struct&Complex&JianComplex(struct&Complex&c1,&struct&Complex&c2)
struct&Complex&t;
t.real=c1.real-c2.
t.imag=c1.imag-c2.
struct&Complex&MultiplyComplex(struct&Complex&c1,&struct&Complex&c2)
struct&Complex&t;
t.real=c1.real*c2.real-c1.imag*c2.
t.imag=c1.real*c2.imag+c2.real*c1.
int&GetReal(struct&Complex&c)
{/*取复数实部&*/
&&return&c.
int&GetImag(struct&Complex&c)
{/*取复数虚部&*/
&&return&c.
void&Print_C(struct&Complex&c)
{/*复数输出*/
&&&if(GetImag(c)==0.0)&&&printf("%5.2f\n",GetReal(c));
&&&else&&if(GetReal(c)==0.0)&&printf("%5.2fi\n",GetImag(c));
&&&&&&&&&else&&&printf("%5.2f+%5.2fi\n",GetReal(c),GetImag(c));
/*完成该函数输出复数
void&PrintComplex(struct&Complex&c1,&struct&Complex&c2)
{ struct&Complex&
if(sum.real==0&&sum.imag==0)
printf("复数%d+%di和复数%d+%di的是:0\n",c1.real,c1.imag,c2.real,c2.imag,sum.real,sum.imag);
if(sum.real==0)
printf("复数%d+%di和复数%d+%di的和是:%di\n",c1.real,c1.imag,c2.real,c2.imag,sum.real,sum.imag);
&&&&&&&else&
&&&if(sum.imag==0)
&&&printf("复数%d+%di和复数%d+%di的和是:%d\n",c1.real,c1.imag,c2.real,c2.imag,sum.real,sum.imag);
&&&printf("复数%d+%di和复数%d+%di的和是:%d+%di\n",c1.real,c1.imag,c2.real,c2.imag,sum.real,sum.imag);
不知道怎么改&,才能使输出的结果时若是特殊的虚数为0&时输出的只有实部a,而不是a+0i。
mark一下,明天要是没答案再来回答。。。&。。。
mark一下,明天要是没答案再来回答。。。&。。。
if(sum.real&==&0&&&&sum.imag&==&0)
else&if(sum.real&==&0&&&&sum.imag&!=&0)
else&if(sum.real&!=&0&&sum.imag&!=&0)
else&if(sum.real&!=&0&&&&sum.imag&==0)
&&printf("复数%d+%di和复数%d+%di的和是:%d\n",c1.real,c1.imag,c2.real,c2.imag,sum.real);
3楼的这个方法我用了&,我们老师讲可以简洁些&!!!&用封装&!!我不懂怎么封装!!!
#include&&stdio.h&
#include&"Complex.h"
#include&"ComplexOperation.c"
void&main()
struct&Complex&c1,c2,
//构造复数c1
printf("请输入第一个复数的实部:");
scanf("%d,",&real);
printf("请输入第一个复数的虚部:");
scanf("%d,",&imag);
c1=InitComplex(real,imag);
//构造复数c2
printf("请输入第二个复数的实部:");
scanf("%d,",&real);
printf("请输入第二个复数的虚部:");
scanf("%d,",&imag);
c2=InitComplex(real,imag);
//复数的加法
sum=AddComplex(c1,c2);
if(sum.real==0&&sum.imag==0)
printf("复数%d+%di和复数%d+%di的和是:0\n",c1.real,c1.imag,c2.real,c2.imag,sum.real,sum.imag);
if(sum.real==0&&sum.imag!=0)
printf("复数%d+%di和复数%d+%di的和是:%di\n",c1.real,c1.imag,c2.real,c2.imag,sum.real,sum.imag);
&&&&&&&else&
&&&if(sum.real!=0&&sum.imag==0)
&&&printf("复数%d+%di和复数%d+%di的和是:%d\n",c1.real,c1.imag,c2.real,c2.imag,sum.real,sum.imag);
&&&printf("复数%d+%di和复数%d+%di的和是:%d+%di\n",c1.real,c1.imag,c2.real,c2.imag,sum.real,sum.imag);
&&&&//复数的减法
sum=JianComplex(c1,c2);
if(sum.real==0&&sum.imag==0)
printf("复数%d+%di和复数%d+%di的差是:0\n",c1.real,c1.imag,c2.real,c2.imag,sum.real,sum.imag);
if(sum.real==0&&sum.imag!=0)
printf("复数%d+%di和复数%d+%di的差是:%di\n",c1.real,c1.imag,c2.real,c2.imag,sum.real,sum.imag);
&&&&&&&else&
&&&if(sum.real!=0&&sum.imag==0)
&&&printf("复数%d+%di和复数%d+%di的差是:%d\n",c1.real,c1.imag,c2.real,c2.imag,sum.real,sum.imag);
&&&printf("复数%d+%di和复数%d+%di的差是:%d+%di\n",c1.real,c1.imag,c2.real,c2.imag,sum.real,sum.imag);
&&&//复数的乘法
sum=MultiplyComplex(c1,c2);
if(sum.real==0&&sum.imag==0)
printf("复数%d+%di和复数%d+%di的积是:0\n",c1.real,c1.imag,c2.real,c2.imag,sum.real,sum.imag);
if(sum.real==0&&sum.imag!=0)
printf("复数%d+%di和复数%d+%di的积是:%di\n",c1.real,c1.imag,c2.real,c2.imag,sum.real,sum.imag);
&&&&&&&else&
&&&if(sum.real!=0&&sum.imag==0)
&&&printf("复数%d+%di和复数%d+%di的积是:%d\n",c1.real,c1.imag,c2.real,c2.imag,sum.real,sum.imag);
&&&printf("复数%d+%di和复数%d+%di的积是:%d+%di\n",c1.real,c1.imag,c2.real,c2.imag,sum.real,sum.imag);
根据三楼的改了之后&输入样本:
请输入第一个复数的实部:1
请输入第一个复数的虚部:1
请输入第二个复数的实部:1
请输入第二个复数的虚部:1
复数1+1i和复数1+1i的和是:2+2i
复数1+1i和复数1+1i的差是:0
复数1+1i和复数1+1i的积是:0i
Press&any&key&to&continue
其得到的结果乘法是错的&&&不知道如何是好&
#include&iostream&
using&namespace&
class&ComplexNum
ComplexNum()
this-&real=0;
this-&imaginary=0;
ComplexNum(int&real,int&imaginary)
this-&real=
this-&imaginary=
int&getReal()
return&this-&
void&setReal(int&real)
this-&real=
void&setImaginary(int&imaginary)
this-&imaginary=
int&getImaginary()
return&this-&
ComplexNum&operator+(ComplexNum&&x)
ComplexNum&y;
y.setReal(this-&real+x.real);
y.setImaginary(this-&imaginary+x.imaginary);
ComplexNum&operator-(ComplexNum&&x)
ComplexNum&y;
y.setReal(this-&real-x.real);
y.setImaginary(this-&imaginary-x.imaginary);
ComplexNum&operator*(ComplexNum&&x)
ComplexNum&y;
y.setReal(this-&real*x.real-this-&imaginary*x.imaginary);
y.setImaginary(this-&imaginary*x.real+this-&real*x.imaginary);
&&&&friend&ostream&operator&&(ostream&,ComplexNum&&x)
if(x.getImaginary()==0)
return&cout&&x.getReal();
else&if(x.getImaginary()&0)
return&cout&&x.getReal()&&x.getImaginary()&&"i";
else&if(x.getImaginary()&0)
return&cout&&x.getReal()&&"+"&&x.getImaginary()&&"i";
return&cout&&"&";
void&main()
ComplexNum&c1(10,5);
ComplexNum&c2(3,7);
ComplexNum&c3(0,0);
cout&&"c1+c2="&&c1+c2&&
cout&&"c1-c2="&&c1-c2&&
cout&&"c1*c2="&&c1*c2&&
cout&&"c1*c1-c2*c2+c1*c2="&&c1*c1-c2*c2+c1*c2&&
cout&&"c3="&&c3&&
输出重载函数改一下,输出就完美了
friend&ostream&operator&&(ostream&,ComplexNum&&x)
if(x.getReal()!=0)
if(x.getImaginary()==0)
return&cout&&x.getReal();
else&if(x.getImaginary()&0)
return&cout&&x.getReal()&&x.getImaginary()&&"i";
else&if(x.getImaginary()&0)
return&cout&&x.getReal()&&"+"&&x.getImaginary()&&"i";
if(x.getImaginary()==0)
return&cout&&0;
return&cout&&x.getImaginary()&&"i";
return&cout&&"&";
右边Visual&C++&2010&Express下面的Select&language...下拉选‘简体中文’,再按Install&Now按钮
然后再参考
C:\Program&Files\Microsoft&Visual&Studio&10.0\VC\crt\src\complex
引用&4&楼&&的回复:3楼的这个方法我用了&,我们老师讲可以简洁些&!!!&用封装&!!我不懂怎么封装!!!
你的老师说得很对。比如你的
void&PrintComplex(struct&Complex&c1,&struct&Complex&c2)这个函数,其实只需要一个参数就可以了
void&PrintComplex(struct&Complex&c)
因为你前面已经有了复数的加减乘除运算了,你只需要将运算的结果作为PrintComplex的参数就可以了,而不是在PrintComplex函数内部再去计算复数的加减乘除,因为如果是这样的话,你就可能需要写4个类似的PrintComplex函数,或者再给PrintComplex增加一个参数用来区分加减乘除这4中运算,然后在内部在用一个if...else之类的语句对4种运算进行区别,这些都是很不好的做法。
对于一个你已经已经知道其real&part和imaginary&part的复数,想输出1,&2i,&0,&1&+&2i这样的形式应该是非常简单了,就不用我在这里啰嗦了吧
#include&&iostream&
using&namespace&
struct&Complex
void&Print(Complex&cp)
if&(cp.real==0)
if&(cp.imag==0)
cout&&cp.imag&&"i"&&
if&(cp.imag==0)
cout&&cp.real&&
if&(cp.imag&0)
cout&&cp.real&&cp.imag&&"i"&&
cout&&cp.real&&"+"&&cp.imag&&"i"&&
Complex&Multiply(Complex&cp1,Complex&cp2)
temp.real=(cp1.real*cp2.real-cp1.imag*cp2.imag);
temp.imag=(cp1.real*cp2.imag)+(cp1.imag*cp2.real);
回复方程x^4+1=0在复数域上有几个根-4
一元三次方程组 D. 三次同余方程组正确答案: 4....域 D. 根正确答案: 14. 曼戈尔特在哪一年利用...素数函数π(x)与x/lnx的极限值是多少? A. 0 B...}

我要回帖

更多关于 matlab 复数数组 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信