C语言分离任何复数的实部与虚部

下面是以23+456i为例写的,但一执行就死掉(假定都是a+bi的形式,排除了bi+a的形式)
#include <stdio.h>
void main()
{
printf("分离复数23+456i的实部与虚部");
char str[100]={"23+456i"};
char str1[50];//存实部
char str2[50];//存虚部
char g,h;

for(int i=0;(g=str[i])!='\0';i++)
{
if(str[i+1]=='+')
{
for(int j=0;(h=str[i+1])!='i';j++)
str2[j]=str[i+1];
}
else
str1[i]=str[i];

}
printf("实部为:%s\n",str1);
printf("虚部为:%s\n",str2);
}
分离的时候以“+”号为分割点。分离虚部的时候以“i”前一个数字结束。

#include <stdio.h>
void main()
{

char str[100]={"23+456i"};
char str1[50];//存实部
char str2[50];//存虚部

printf("分离复数%s的实部与虚部\n", str );

for(int i=0;str[i]!='\0';i++)
{
if(str[i]=='+')
{
str1[i]='\0' ;
i++;
for(int j=0;str[i]!='i';j++)
str2[j]=str[i++];
str2[j]='\0';
break ; //取完了就结束循环
}
else
str1[i]=str[i];
}

printf("实部为:%s\n",str1);
printf("虚部为:%s\n",str2);
}

追问

str1[i]='\0' ;
str2[j]='\0';
为什么要加这两句啊?

追答

字符串要有结束符,没有结束符的话输出显示会出现异常数据

追问

谢谢,大神!

追答

不客气,多上机练习

温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网