需要在程序中做哪些改动??
程序如下,就是一段关于复数加、减、乘计算的程序。
#include <stdio.h>
#include <stdlib.h>
struct complex
{
float real;
float imaginary;
};
void AddComplex(complex &c,complex c1,complex c2)
{
c.real = c1.real + c2.real;
c.imaginary = c1.imaginary + c2.imaginary;
}
void SubComplex(complex &c,complex c1,complex c2)
{
c.real = c1.real - c2.real;
c.imaginary = c1.imaginary - c2.imaginary;
}
void MulComplex(complex &c,complex c1,complex c2)
{
c.real = (c1.real*c2.real)-(c1.imaginary*c2.imaginary);
c.imaginary = (c1.real*c2.imaginary)+(c2.real*c1.imaginary);
}
void main()
{
complex c,c1,c2;
float r,r1,r2,r11,r12,r21,r22;
int node;
printf("please enter the number:\n");
printf("1:add complex;2:sub complex;3:mul complex\n");
scanf("%d",&node);
while(node!=0)
{
switch(node)
{
case 1:printf("please enter real and imaginary of c1\n");
scanf("%f,%f",&r11,&r12);
InitComplex(c1,r11,r12);
printf("please enter real and imaginary of c2\n");
scanf("%f,%f",&r21,&r22);
InitComplex(c2,r21,r22);
AddComplex(c,c1,c2);
printf("result:c=%f+i%f\n",c.real,c.imaginary);
break;
case 2:printf("please enter real and imaginary of c1\n");
scanf("%f,%f",&r11,&r12);
InitComplex(c1,r11,r12);
printf("please enter real and imaginary of c2\n");
scanf("%f,%f",&r21,&r22);
InitComplex(c2,r21,r22);
SubComplex(c,c1,c2);
printf("result:c=%f+i%f\n",c.real,c.imaginary);
break;
case 3:printf("please enter real and imaginary of c1\n");
scanf("%f,%f",&r11,&r12);
InitComplex(c1,r11,r12);
printf("please enter real and imaginary of c2\n");
scanf("%f,%f",&r21,&r22);
InitComplex(c2,r21,r22);
MulComplex(c,c1,c2);
printf("result:c=%f+i%f\n",c.real,c.imaginary);
break;
default:printf("finish!");
}
scanf("%d",&node);
}
}
能否在程序中使用fopen之类的代码,进行自动的保存??
如果能的话,如何实现??
可以的阿。
在函数开头:
FILE *fp = fopen(filepath, "a+");
if (fp == NULL)
{
//错误处理
}
函数中间将你的printf函数对应的替换成为fprintf函数就好了。fprintf的第一个参数是fp,后面就是你的printf函数的参数
在函数最后添加
if (fp != NULL)
{
fclose(fp);
fp = NULL;
}
每个需要替换printf的函数都对应的修改就好了