c语言 复数的加减法 满足手写规则
作者&投稿:颛詹 (若有异议请与网页底部的电邮联系)
,不确定是真会输出,还是只是分隔输入输出。
常见的应该没有分号。输入1+i
2输出3+i
这个程序,
麻烦在于如何将输入的数据,转为复数。
可以先将输入
存为两个字符串,对每个字符串进行解析,转为复数。
对于每个字符串,先查找是否存在i,这个很简单,如果有,那么一定是最后一个。
如果不存在i,那么虚部为0,将字符串转为实部即可。
如果存在i,那么查找是否存在+或者-,如果不存在,说明没有实部,实部设置为0
如果存在只有-,
同时-为字符串第一个元素,
那么一样没有实部。
如果存在+,或者存在不是首元素的-,说明同时有实部和虚部,区分两部分,分别转换。
转换后,得到复数,简单的相加,得到结果。
输出时,一样要判断实部,虚部是否为0,然后再根据复数规则输出。
这部分相对要简单的多了。
你必须有一个输入格式约定,无论简单或复杂。
例如:必须有实部和虚部,格式
为
3-2i
1-i
1+i
等。
然后才好处理。
这里放入char
str[80];了,如果是键盘输入流,也用类似格式。
#include
<stdio.h>
main(){
char
str[80]="1-i";
//
1+i
2-2i
2+3i
0-i
int
r,m;
int
i,flag,
s;
flag
=
sscanf(str,"%d%di",&r,&m);
if
(flag==1)
{
s
=
1;
for
(i=0;i<strlen(str);i++)
if
(str[i]=='-')
s=
-1;
else
if
(str[i]=='+')
s=1;
m
=
s;
}
printf("real=%d
imag=%d\n",r,m);
return
0;
}
蔽琴归芍: 输入输出样例里面的分号 ,不确定是真会输出,还是只是分隔输入输出. 常见的应该没有分号.输入1+i 2输出3+i 这个程序, 麻烦在于如何将输入的数据,转为复数. 可以先将输入 存为两个字符串,对每个字符串进行解析,转为复数. 对于...
鄞州区15972957772: 关于C语言的题目:用结构体定义一个复数,并实现复数的加法、减法和乘法. - ?
蔽琴归芍: #include "stdio.h" #include "conio.h" typedef struct { float x; float y; }Complex; void input(Complex *c) { scanf("%f",&c->x); scanf("%f",&c->y); } void output(Complex c) { if(c.y>=0) printf("%.4f +%.2fi",c.x,c.y); else printf("%.4f %.2fi",c.x,c....
鄞州区15972957772: C语言运算加法写法 - ?
蔽琴归芍: 都一样,不过++a比a++快,因为没有中间变量
鄞州区15972957772: 用C语言实现复数的加减法,我开始没用return 1的,但程序报错,用了之后能运行,但不能显示结果了 - ?
蔽琴归芍: 你的程序是对的啊,注意输入的时候把i也输入就行了
鄞州区15972957772: c语言复数加减法如何实现输入型如1 - i或1+i的数据 - ?
蔽琴归芍: 你必须有一个输入格式约定,无论简单或复杂.例如:必须有实部和虚部,格式 为 3-2i 1-i 1+i 等.然后才好处理.这里放入char str[80];了,如果是键盘输入流,也用类似格式.#include <stdio.h> main(){ char str[80]="1-i"; // 1+i 2-2i 2+3i 0-i ...
鄞州区15972957772: C语言加法 - ?
蔽琴归芍: 正确的代码如下: #include void main() { int a,b,c; a=6; b=7; c=a+b; printf("c=%d”,c); }在你的代码中最后的输出是错误的,从哪里来的d,而且你要输出的是c吧,就算是d你也没有定义d,C语言的代码一定要先定义再使用,把最后输出的d改...
鄞州区15972957772: 用c语言写一个减法运算程序,我是初学者,大一新生,求解! - ?
蔽琴归芍: #includeint main(){ int a,b; scanf("%d%d",&a,&b); printf("%d-%d=%d\n",a,b,a-b); return 0; } 这种最基本的程序你还是应该自己学习写.
鄞州区15972957772: 求大神帮忙用C语言编写一个简单的加法程序 - ?
蔽琴归芍: #include <stdio.h> void main() { int j; float number[100]; float sum=0; j=0; for(j=0;j <100;j++) { scanf( "%f ",&number[j]);if(number[j]!=0) printf( "+ "); if(number[j]==0) break; sum=sum+number[j]; } printf( "%f ",sum); }
鄞州区15972957772: 关于用C语言编写高精度加减法?
蔽琴归芍: 好像是哪个oj上的题目,直接模拟就行了,加减法都是从字符串的最后一个字符算起,如果*a + *b > '9'就进位,同时移动指针 a--, b--,c--就行了.
鄞州区15972957772: C++ 复数加减乘除 - ?
蔽琴归芍: #include <iostream.h> class complex { public: complex(double r=0,double i=0); complex operator +(const complex& c); complex operator -(const complex& c); complex operator -(); void print() const;// const member function private: double real,imag; ...