c语言 复数的加减法 满足手写规则
展开全部
输入输出样例里面的分号
,不确定是真会输出,还是只是分隔输入输出。
常见的应该没有分号。输入1+i
2输出3+i
这个程序,
麻烦在于如何将输入的数据,转为复数。
可以先将输入
存为两个字符串,对每个字符串进行解析,转为复数。
对于每个字符串,先查找是否存在i,这个很简单,如果有,那么一定是最后一个。
如果不存在i,那么虚部为0,将字符串转为实部即可。
如果存在i,那么查找是否存在+或者-,如果不存在,说明没有实部,实部设置为0
如果存在只有-,
同时-为字符串第一个元素,
那么一样没有实部。
如果存在+,或者存在不是首元素的-,说明同时有实部和虚部,区分两部分,分别转换。
转换后,得到复数,简单的相加,得到结果。
输出时,一样要判断实部,虚部是否为0,然后再根据复数规则输出。
这部分相对要简单的多了。
,不确定是真会输出,还是只是分隔输入输出。
常见的应该没有分号。输入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;
}
例如:必须有实部和虚部,格式
为
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;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询