C语言/C++语言【字符串读取数值】高分求解

来源:百度知道 编辑:UC知道 时间:2024/06/03 00:37:25
有一复数,其实部和虚部已经被初始化为0,如果用户输入一复数表达式,请问如何获取复数的实部和虚部,并将其保存到double类型的real和imag中。
要求测试的复数有
4+5i,5i,3.4,
i, 3-2.3i,-2-3.1i,
1+i, 2.3-i,i,
-i,i+1,2i-1.5,
-i-3.5等。
最好是在main()函数里输入expression,子函数名称为double* initialize(char *expression)用于处理expression,并把处理结果保存到array数组中返回给主函数。
因为最高只能给100分。所以只好有满意答案后补上。
如有满意答案,另加30分作为感谢。感谢各位达人的帮助!

int initialize(char *s, double *a, double *b)
{
char *p=s;
if((*p=='+')||(*p=='-')) p++;
while(*p)
{
while((*p!='+')&&(*p!='-')&&(*p!=0))
{
if(!isdigit(*p)) return 0;
else p++;
}
*a=atoi(s);
if(*p==0) return 1;
else p++;
s=p;
while((*p!=0)&&(*p!='i'))
{
if(!isdigit(*p)) return 0;
else p++;
}
if((*p==0)||*(p+1)!=0) return 0;
else
{
*b=atoi(s);
return 1;
}
}
return 0;
}

void main()
{
char expression[100];
double real[100], imag[100];
int i, flag=0;

while(1)
{
do
{
scanf("%s", expression);
if(*expressioni=='0')
{
flag = 1; // the first element is 0, do it not any more.