下面是以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);
}追问
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';
为什么要加这两句啊?
字符串要有结束符,没有结束符的话输出显示会出现异常数据
追问谢谢,大神!
追答不客气,多上机练习
温馨提示:答案为网友推荐,仅供参考