算法训练 P1103

来源:互联网 发布:什么是淘宝第三方活动 编辑:程序博客网 时间:2024/05/19 13:56

算法训练 P1103  
时间限制:1.0s   内存限制:256.0MB
    
  
  编程实现两个复数的运算。设有两个复数 和 ,则他们的运算公式为:

  要求:(1)定义一个结构体类型来描述复数。
  (2)复数之间的加法、减法、乘法和除法分别用不用的函数来实现。
  (3)必须使用结构体指针的方法把函数的计算结果返回。
  说明:用户输入:运算符号(+,-,*,/) a b c d.
  输出:a+bi,输出时不管a,b是小于0或等于0都按该格式输出,输出时a,b都保留两位。

输入:
  - 2.5 3.6 1.5 4.9
输出:
  1.00+-1.30i


代码:

#include<iostream>#include<cstdlib>#include<iomanip>using namespace std;struct node{    double a;    double b;};double x,y,m,n;node *add()  //int没法return{    node *p;    p=(node *)malloc(sizeof(node));    p->a=x+m;    p->b=y+n;    return p;}node *sub(){    node *p;    p=(node *)malloc(sizeof(node));    p->a=x-m;    p->b=y-n;    return p;}node *mul(){    node *p;    p=(node *)malloc(sizeof(node));    p->a=x*m-y*n;    p->b=y*m+x*n;    return p;}node *div(){    node *p;    p=(node *)malloc(sizeof(node));    if(m==0||n==0)  return NULL;    double den=m*m+n*n;    p->a=(x*m+y*n)/den;    p->b=(y*m-x*n)/den;    return p;}int main(){    node *p;    p=(node *)malloc(sizeof(node));    char op;    cin>>op;    cin>>x>>y>>m>>n;    switch(op)    {        case '+': p=add(); break;        case '-': p=sub(); break;        case '*': p=mul(); break;        case '/': p=div(); break;        default: break;    }    cout<<fixed<<setprecision(2)<<p->a<<"+"<<p->b<<"i"<<endl;    return 0;}

这个题是要气死我,输入“+”,然后粘贴网页上的输入,结果一直输出“0.00+0.00i”。结果第一个是减号,不是负号,妈呀~~  气死我!!!

原创粉丝点击