复数的加减法,求助
- C/C++ code
#include <stdio.h>typedef struct node fushu;typedef fushu* ptrfushu;struct node{ float shibu; float xubu;};int main(){ void set(ptrfushu s1); void plus(ptrfushu s1,ptrfushu s2); void sub(ptrfushu s1,ptrfushu s2); int choice=0; ptrfushu s1=NULL,s2=NULL; printf("---------复数计算器--------\n"); printf("1.-----计算两个复数X和Y的和\n"); printf("2.-----计算两个复数X和Y的差\n"); printf("3.-----退出复数计算器\n"); printf("请选择操作\n"); scanf("%d",&choice); switch(choice) { case 1: set(s1); set(s2); plus(s1,s2); break; case 2: set(s1); set(s2); sub(s1,s2); case 3: break; } return 0;}void set(ptrfushu s1){ float x,y; printf("请输入第一个复数的实部和虚部,用逗号分开:(如2,3)\n"); scanf("%f,%f",&x,&y); s1->shibu=x; s1->xubu=y;}void plus(ptrfushu s1,ptrfushu s2){ printf("两个复数的和为%f + %fi\n",s1->shibu+s2->shibu,s1->xubu+s2->xubu);}void sub(ptrfushu s1,ptrfushu s2){ printf("两个复数的差为%f + %fi\n",s1->shibu-s2->shibu,s1->xubu-s2->xubu);}我输入2,3
之后崩溃了,怎么办?
[解决办法]
- C/C++ code
//ptrfushu s1=NULL,s2=NULL; ptrfushu s1 = new node; ptrfushu s2 = new node;
[解决办法]
指针指到空内存去了。要给它分配内存空间,最后还要delete。
[解决办法]
额,c++的直接“+”用算符重载,c还没学。
[解决办法]
c语言里面用malloc()
c++里面才是new