C语言程序相量的计算.doc_第1页
C语言程序相量的计算.doc_第2页
C语言程序相量的计算.doc_第3页
C语言程序相量的计算.doc_第4页
C语言程序相量的计算.doc_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2020年3月2日C语言程序相量的计算指导教师:请输入指导教师专业名称:请输入专业姓名:请输入姓名请注意:这不是C语言大作业,仅是个人的兴趣之作,写C语言大作业论文的同学请勿照搬按本文的格式为什么要做这个程序我个人对C语言比较感兴趣,想写程序,正好想到了我们所学的电路的相量的计算。我买了计算器,可是计算器并不能直接算相量。所以我就想做一个能够计算相量的程序如果你不学电路的话,你可能根本就不知道相量是什么,你也不会知道相量的计算对人来说有多麻烦。本程序能节省大量的计算时间,这就是本程序的意义所在遇到的问题我发现文件总不能正常写入,花了好长时间才发现问题所在:原来是忘了写fclose函数。有了fclose文件才能正常写入。所以大家写用到文件的程序时一定不要忘了fclose。程序一简介这个程序用0,1,2之类的东西来代表相量。其实我本来是想用A0,A1,A2之类的来代表相量,但是那样太麻烦,后来我就用字母来代表相量(见程序二),再后来我又想起来用0,1,2来代表。这个程序的最大的优点是输入全部为数字截图源代码#include #include #include #define NUM 9#define PI 3.141592struct xldouble x;double y;double r;double t;ANUM;void input(int n);void other();void other2();void open();void save();int main() open(); int chu;char ch;int n;while(1) A6.x = A0.x + A1.x; A6.y = A0.y + A1.y; A6.r = sqrt(pow(A6.x, 2) + pow(A6.y, 2); A6.t = atan(A6.y / A6.x); A7.x = A0.x - A1.x; A7.y = A0.y - A1.y; A7.r = sqrt(pow(A7.x, 2) + pow(A7.y, 2); A7.t = atan(A7.y / A7.x); A8.r = A0.r * A1.r; A8.t = A0.t + A1.t; A8.x = cos(A8.t) * A8.r; A8.y = sin(A8.t) * A8.r; if(A1.r = 0) chu = 0; else chu = 1; A9.r = A0.r / A1.r; A9.t = A0.t - A1.t; A9.x = cos(A9.t) * A9.r; A9.y = sin(A9.t) * A9.r; system(cls); printf(0: 实部:%lg 虚部:%lg 半径:%lg 角度:%lgn,A0.x,A0.y,A0.r,A0.t*180/PI); printf(1: 实部:%lg 虚部:%lg 半径:%lg 角度:%lgn,A1.x,A1.y,A1.r,A1.t*180/PI); printf(2: 实部:%lg 虚部:%lg 半径:%lg 角度:%lgn,A2.x,A2.y,A2.r,A2.t*180/PI); printf(3: 实部:%lg 虚部:%lg 半径:%lg 角度:%lgn,A3.x,A3.y,A3.r,A3.t*180/PI); printf(4: 实部:%lg 虚部:%lg 半径:%lg 角度:%lgn,A4.x,A4.y,A4.r,A4.t*180/PI); printf(5: 实部:%lg 虚部:%lg 半径:%lg 角度:%lgn,A5.x,A5.y,A5.r,A5.t*180/PI);printf(6=0 + 1: 实部:%lg 虚部:%lg 半径:%lg 角度:%lgn,A6.x,A6.y,A6.r,A6.t*180/PI); printf(7=0 - 1: 实部:%lg 虚部:%lg 半径:%lg 角度:%lgn,A7.x,A7.y,A7.r,A7.t*180/PI); printf(8=0 * 1: 实部:%lg 虚部:%lg 半径:%lg 角度:%lgn,A8.x,A8.y,A8.r,A8.t*180/PI); if(chu=1) printf(9=0 / 1: 实部:%lg 虚部:%lg 半径:%lg 角度:%lgn,A9.x,A9.y,A9.r,A9.t*180/PI); printf(0.输入0n); printf(1.输入1n); printf(2.输入2n); printf(3.输入3n); printf(4.输入4n); printf(5.输入5n);printf(6.计算其他两数n);printf(7.计算其他两数并存储到数组中n);printf(请选择:);fflush(stdin); ch=getchar();switch(ch)case 0:input(0);break;case 1:input(1);save();break;case 2:input(2);save();break;case 3:input(3);save();break;case 4: input(4); save();break;case 5:input(5);break;case 6:other();break; case 7:other2();save();return 0;void input(int n)system(cls);char ch;printf(1.按普通坐标输入n);printf(2.按极坐标输入n);printf(请选择:);fflush(stdin);ch=getchar();switch(ch)case 1:printf(请输入x坐标:);fflush(stdin);scanf(%lf,&An.x);printf(请输入y坐标:);fflush(stdin);scanf(%lf,&An.y);An.r = sqrt(pow(An.x, 2) + pow(An.y, 2);An.t = atan(An.y / An.x);break;case 2:printf(请输入半径:);fflush(stdin);scanf(%lf,&An.r);if(An.r 0) An.r = -An.r;printf(请输入角度:);fflush(stdin);scanf(%lf,&An.t);An.t = An.t * PI /180;An.x = cos(An.t) * An.r;An.y = sin(An.t) * An.r;void other() int chu; int i,j; printf(请输入第一个数的下标(0-9):); fflush(stdin); scanf(%d,&i); if(i9) return; printf(请输入第二个数的下标(0-9):); fflush(stdin); scanf(%d,&j); if(j9) return; A6.x = Ai.x + Aj.x;A6.y = Ai.y + Aj.y;A6.r = sqrt(pow(A6.x, 2) + pow(A6.y, 2); A6.t = atan(A6.y / A6.x); A7.x = Ai.x - Aj.x;A7.y = Ai.y - Aj.y;A7.r = sqrt(pow(A7.x, 2) + pow(A7.y, 2); A7.t = atan(A7.y / A7.x); A8.r = Ai.r * Aj.r; A8.t = Ai.t + Aj.t; A8.x = cos(A8.t) * A8.r; A8.y = sin(A8.t) * A8.r; if(A1.r = 0) chu = 0; else chu = 1; A9.r = Ai.r / Aj.r; A9.t = Ai.t - Aj.t; A9.x = cos(A9.t) * A9.r; A9.y = sin(A9.t) * A9.r; printf(%d + %d: 实部:%lg 虚部:%lg 半径:%lg 角度:%lgn,i,j,A6.x,A6.y,A6.r,A6.t*180/PI); printf(%d - %d: 实部:%lg 虚部:%lg 半径:%lg 角度:%lgn,i,j,A7.x,A7.y,A7.r,A7.t*180/PI); printf(%d * %d: 实部:%lg 虚部:%lg 半径:%lg 角度:%lgn,i,j,A8.x,A8.y,A8.r,A8.t*180/PI); if(chu=1) printf(%d / %d: 实部:%lg 虚部:%lg 半径:%lg 角度:%lgn,i,j,A9.x,A9.y,A9.r,A9.t*180/PI); fflush(stdin); getchar();void other2() int chu; int i,j; printf(请输入第一个数的下标(0-9):); fflush(stdin); scanf(%d,&i); if(i9) return; printf(请输入第二个数的下标(0-9):); fflush(stdin); scanf(%d,&j); if(j9) return; A6.x = Ai.x + Aj.x;A6.y = Ai.y + Aj.y;A6.r = sqrt(pow(A6.x, 2) + pow(A6.y, 2); A6.t = atan(A6.y / A6.x); A7.x = Ai.x - Aj.x;A7.y = Ai.y - Aj.y;A7.r = sqrt(pow(A7.x, 2) + pow(A7.y, 2); A7.t = atan(A7.y / A7.x); A8.r = Ai.r * Aj.r; A8.t = Ai.t + Aj.t; A8.x = cos(A8.t) * A8.r; A8.y = sin(A8.t) * A8.r; if(A1.r = 0) chu = 0; else chu = 1; A9.r = Ai.r / Aj.r; A9.t = Ai.t - Aj.t; A9.x = cos(A9.t) * A9.r; A9.y = sin(A9.t) * A9.r; printf(%d + %d: 实部:%lg 虚部:%lg 半径:%lg 角度:%lgn,i,j,A6.x,A6.y,A6.r,A6.t*180/PI); printf(%d - %d: 实部:%lg 虚部:%lg 半径:%lg 角度:%lgn,i,j,A7.x,A7.y,A7.r,A7.t*180/PI); printf(%d * %d: 实部:%lg 虚部:%lg 半径:%lg 角度:%lgn,i,j,A8.x,A8.y,A8.r,A8.t*180/PI); if(chu=1) printf(%d / %d: 实部:%lg 虚部:%lg 半径:%lg 角度:%lgn,i,j,A9.x,A9.y,A9.r,A9.t*180/PI); printf(1.将加法结果存储n); printf(2.将减法结果存储n); printf(3.将乘法结果存储n); printf(4.将除法结果存储n); printf(请选择:); fflush(stdin); scanf(%d,&i); if(i4) return; if(chu=0&i=4) return; printf(请输入要存入的数组的下标(0-5):); fflush(stdin); scanf(%d,&j); if(j5) return; switch(i) case 1: Aj.x = A6.x; Aj.y = A6.y; Aj.r = A6.r; Aj.t = A6.t; break; case 2: Aj.x = A7.x; Aj.y = A7.y; Aj.r = A7.r; Aj.t = A7.t; break; case 3: Aj.x = A8.x; Aj.y = A8.y; Aj.r = A8.r; Aj.t = A8.t; break; case 4: Aj.x = A9.x; Aj.y = A9.y; Aj.r = A9.r; Aj.t = A9.t; void open() FILE *fp; if(fp=fopen(inf.txt,r)!=NULL) fread(A, sizeof(struct xl), 9, fp);/读取数组 fclose(fp); void save() FILE *fp; if(fp=fopen(inf.txt,w)!=NULL) fwrite(A, sizeof(struct xl), 9, fp); fclose(fp); 程序二简介这个程序与程序一的不同就在于它是用字母来代表相量,而且某些输入也不用数字。用数字的好处就是比0之类的节省一点屏幕空间另外这个程序的结构与程序一有一点区别,这是因为这两个程序的文件部分我是分别写的。但是实现的功能是完全一样的。截图源代码#include #include #include #define NUM 9#define PI 3.141592struct xldouble x;double y;double r;double t;ANUM;int flag;void input(int n);void other();void other2();void maininterface();int main() flag=1; FILE *fp,*fp2; if(fp=fopen(inf.txt,r)!=NULL) fread(A, sizeof(struct xl), 9, fp);/读取数组 fclose(fp); while(1) maininterface(); if(flag=1) if(fp2=fopen(inf.txt,w)=NULL) return -1; fwrite(A, sizeof(struct xl), 9, fp2); fclose(fp2); else flag=1; return 0;void maininterface() int chu; flag=1; char ch; int n; A6.x = A0.x + A1.x; A6.y = A0.y + A1.y; A6.r = sqrt(pow(A6.x, 2) + pow(A6.y, 2); A6.t = atan(A6.y / A6.x); A7.x = A0.x - A1.x; A7.y = A0.y - A1.y; A7.r = sqrt(pow(A7.x, 2) + pow(A7.y, 2); A7.t = atan(A7.y / A7.x); A8.r = A0.r * A1.r; A8.t = A0.t + A1.t; A8.x = cos(A8.t) * A8.r; A8.y = sin(A8.t) * A8.r; if(A1.r = 0) chu = 0; else chu = 1; A9.r = A0.r / A1.r; A9.t = A0.t - A1.t; A9.x = cos(A9.t) * A9.r; A9.y = sin(A9.t) * A9.r; system(cls); printf(a : 实部:%lg 虚部:%lg 半径:%lg 角度:%lgn,A0.x,A0.y,A0.r,A0.t*180/PI); printf(b : 实部:%lg 虚部:%lg 半径:%lg 角度:%lgn,A1.x,A1.y,A1.r,A1.t*180/PI); printf(c : 实部:%lg 虚部:%lg 半径:%lg 角度:%lgn,A2.x,A2.y,A2.r,A2.t*180/PI); printf(d : 实部:%lg 虚部:%lg 半径:%lg 角度:%lgn,A3.x,A3.y,A3.r,A3.t*180/PI); printf(e : 实部:%lg 虚部:%lg 半径:%lg 角度:%lgn,A4.x,A4.y,A4.r,A4.t*180/PI); printf(f : 实部:%lg 虚部:%lg 半径:%lg 角度:%lgn,A5.x,A5.y,A5.r,A5.t*180/PI); printf(w = a + b: 实部:%lg 虚部:%lg 半径:%lg 角度:%lgn,A6.x,A6.y,A6.r,A6.t*180/PI); printf(x = a - b: 实部:%lg 虚部:%lg 半径:%lg 角度:%lgn,A7.x,A7.y,A7.r,A7.t*180/PI); printf(y = a * b: 实部:%lg 虚部:%lg 半径:%lg 角度:%lgn,A8.x,A8.y,A8.r,A8.t*180/PI); if(chu=1) printf(z = a / b: 实部:%lg 虚部:%lg 半径:%lg 角度:%lgn,A9.x,A9.y,A9.r,A9.t*180/PI); printf( a 输入an); printf( b 输入bn); printf( c 输入cn); printf( d 输入dn); printf( e 输入en); printf( f 输入fn); printf( 0 计算其他两数n); printf( 1 计算其他两数并存储n); printf(请选择:); fflush(stdin); scanf(%c,&ch); switch(ch) case a: input(0); break; case b: input(1); break; case c: input(2); break; case d: input(3); break; case e: input(4); break; case f: input(5); break; case 0: flag=0; other(); fflush(stdin); getchar(); break; case 1: other2(); void input(int n)system(cls);char ch;printf( x 按普通坐标输入n);printf( r 按极坐标输入n);printf(请选择:);fflush(stdin);scanf(%c,&ch);switch(ch)case x:printf(请输入x坐标:);fflush(stdin);scanf(%lf,&An.x);printf(请输入y坐标:);fflush(stdin);scanf(%lf,&An.y);An.r = sqrt(pow(An.x, 2) + pow(An.y, 2);An.t = atan(An.y / An.x);break;case r:printf(请输入半径:);fflush(stdin);scanf(%lf,&An.r);if(An.r 0) An.r = -An.r;printf(请输入角度:);fflush(stdin);scanf(%lf,&An.t);An.t = An.t * PI /180;An.x = cos(An.t) * An.r;An.y = sin(An.t) * An.r;void other() int chu; int i,j; char ch,ch2; printf(请输入第一个数的名称(a-f,w-z):); fflush(stdin); scanf(%c,&ch); switch(ch) case a: i=0;break; case b: i=1;break; case c: i=2;break; case d: i=3;break; case e: i=4;break; case f: i=5;break; case w: i=6;break; case x: i=7;break; case y: i=8;break; case z: i=9;break; if(i9) return; printf(请输入第二个数的名称(a-f,w-z):); fflush(stdin); scanf(%c,&ch2); switch(ch2) case a: j=0;break; case b: j=1;break; case c: j=2;break; case d: j=3;break; case e: j=4;break; case f: j=5;break; case w: j=6;break; case x: j=7;break; case y: j=8;break; case z: j=9;break; if(j9) return; A6.x = Ai.x + Aj.x;A6.y = Ai.y + Aj.y;A6.r = sqrt(pow(A6.x, 2) + pow(A6.y, 2); A6.t = atan(A6.y / A6.x); A7.x = Ai.x - Aj.x;A7.y = Ai.y - Aj.y;A7.r = sqrt(pow(A7.x, 2) + pow(A7.y, 2); A7.t = atan(A7.y / A7.x); A8.r = Ai.r * Aj.r; A8.t = Ai.t + Aj.t; A8.x = cos(A8.t) * A8.r; A8.y = sin(A8.t) * A8.r; if(A1.r = 0) chu = 0; else chu = 1; A9.r = Ai.r / Aj.r; A9.t = Ai.t - Aj.t; A9.x = cos(A9.t) * A9.r; A9.y = sin(A9.t) * A9.r; printf(%c + %c: 实部:%lg 虚部:%lg 半径:%lg 角度:%lgn,ch,ch2,A6.x,A6.y,A6.r,A6.t*180/PI); printf(%c - %c: 实部:%lg 虚部:%lg 半径:%lg 角度:%lgn,ch,ch2,A7.x,A7.y,A7.r,A7.t*180/PI); printf(%c * %c: 实部:%lg 虚部:%lg 半径:%lg 角度:%lgn,ch,ch2,A8.x,A8.y,A8.r,A8.t*180/PI); if(chu=1) printf(%c / %c: 实部:%lg 虚部:%lg 半径:%lg 角度:%lgn,ch,ch2,A9.x,A9.y,A9.r,A9.t*180/PI);void other2() int chu; int i,j; char ch,ch2; printf(请输入第一个数的名称(a-f,w-z):); fflush(stdin); scanf(%c,&ch); switch(ch) case a: i=0;break; case b: i=1;break; case c: i=2;break; case d: i=3;break; case e: i=4;break; case f: i=5;break; case w: i=6;break; case x: i=7;break; case y: i=8;break; case z: i=9;break; if(i9) return; printf(请输入第二个数的名称(a-f,w-z):); fflush(stdin); scanf(%c,&ch2); switch(ch2) case a: j=0;break; case b: j=1;break; case c: j=2;break; case d: j=3;break; case e: j=4;break; case f: j=5;break; case w: j=6;break; case x: j=7;break; case y: j=8;break; case z: j=9;break; if(j9) return; A6.x = Ai.x + Aj.x;A6.y = Ai.y + Aj.y;A6.r = sqrt(pow(A6.x, 2) + pow(A6.y, 2); A6.t = atan(A6.y / A6.x); A7.x = Ai.x - Aj.x;A7.y = Ai.y - Aj.y;A7.r = sqrt(pow(A7.x, 2) + pow(A7.y, 2); A7.t = atan(A7.y / A7.x); A8.r = Ai.r * Aj.r; A8.t = Ai.t + Aj.t; A8.x = cos(A8.t) * A8.r; A8.y = sin(A8.t) * A8.r; if(A1.r = 0) chu = 0; else chu =

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论