北航计软实验报告实验三

实验报告

实验名称      冒泡排序和快速排序                    

     

       

       

                 

 

第二篇:北航信号与系统实验报告三 源代码

#include<stdio.h>

#include<stdlib.h>

#include<math.h>

//using namespace std;

#define PI 3.1415926

#define NUM 10

#define TS 0.1

float am(float x, float y)

{

float amplitude;

amplitude = sqrt(x * x + y * y);

return amplitude;

}

float an(float x, float y)

{

float angle;

angle = atan2(y,x)*180/PI;

return angle;

}

int main(){

int num1,num2;

float a,b,real,imag;

float zpr[NUM],zpi[NUM],lpr[NUM],lpi[NUM];

FILE *fp = fopen("result.txt","w");

printf("请输入零点个数:\n");

scanf("%d", &num1);

if(num1 != 0) {

printf("请输入零点(例如输入1 2 代表复数1+2j):\n");

for(int i=0; i<num1; i++) {

scanf("%f %f", &zpr[i], &zpi[i]);

}

}

printf("请输入极点个数:\n");

scanf("%d", &num2);

if(num2 != 0) {

printf("请输入极点(例如输入1 2 代表复数1+2j):\n");

for(int i=0; i<num2; i++) {

scanf("%f %f", &lpr[i], &lpi[i]);

}

}

float amplitude=1, angle=0;

for(float j=0;j<=5;j+=TS){

for(int k=0;k<num1;k++){

amplitude = amplitude * am(-zpr[k], j - zpi[k]);// * am(-lpr[k], j - lpi[k], 2); angle = angle + an(-zpr[k], j - zpi[k]);// + am(-lpr[k], j - lpi[k], 2); }

for(int q=0;q<num2;q++){

amplitude = amplitude / am(-lpr[q], j - lpi[q]);

angle = angle - an(-lpr[q], j - lpi[q]);

}

fprintf(fp, "%.1f %.3f %.3f\n", j, amplitude, angle);

printf("w = %.1f amplitude = %.3f angle = %.3f\n", j, amplitude, angle); amplitude = 1;

angle = 0;

}

fclose(fp);

system("pause");

return 0;

}

相关推荐