作业帮 > 综合 > 作业

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

来源:学生作业帮 编辑:大师作文网作业帮 分类:综合作业 时间:2024/11/11 01:00:17
C语言分离任何复数的实部与虚部
下面是以23+456i为例写的,但一执行就死掉(假定都是a+bi的形式,排除了bi+a的形式)
#include
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”前一个数字结束.
C语言分离任何复数的实部与虚部
#include <stdio.h>
void main()
{
\x09
\x09char str[100]={"23+456i"};
\x09char str1[50];//存实部
\x09char str2[50];//存虚部
\x09
\x09printf("分离复数%s的实部与虚部\n", str );
\x09
\x09for(int i=0;str[i]!='\0';i++)
\x09{
\x09\x09if(str[i]=='+')
\x09\x09{
\x09\x09\x09str1[i]='\0' ;
\x09\x09\x09i++;
\x09\x09\x09for(int j=0;str[i]!='i';j++)
\x09\x09\x09\x09str2[j]=str[i++];
\x09\x09\x09str2[j]='\0';
\x09\x09\x09break ; //取完了就结束循环
\x09\x09}
\x09\x09else
\x09\x09\x09str1[i]=str[i];
\x09}
\x09
\x09printf("实部为:%s\n",str1);
\x09printf("虚部为:%s\n",str2);
}
再问: str1[i]='\0' ;
str2[j]='\0';
为什么要加这两句啊?
再答: 字符串要有结束符,没有结束符的话输出显示会出现异常数据
再问: 谢谢,大神!
再答: 不客气,多上机练习