📄 11.cpp
字号:
// 11.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include<iostream.h>
#include<math.h>
#include<stdlib.h>
//最小二乘法数据处理程序
void main ()
{
int n,i,flag2;
char flag1='y';
float ar[50],br[50],x,y,xe,ye,xye,xxe,sx,sy,sxy,sxx,a,b;
printf ("\n*********************************************************\n");
printf ("\n欢迎使用最小二乘法数据处理程序\n");
printf ("\n说明:本程序运行结果保留小数点后三位\n");
for (;flag1=='y'||flag1=='Y';)
{
printf ("\n请输入您要处理的数据的组数:");
printf ("\n*****提示:本程序定义一对x,y值为一组数据:");
scanf ("%d",&n);
if (n>50)
{
printf ("\n对不起,本程序暂时无法处理50组以上的数据");
continue;
}
printf ("\n请选择您的数据的处理方式:");
printf ("\n\t1.y与x为一次线性关系");
printf ("\n\t2.y与x的2次为线性关系\n");
scanf("%d",&flag2);
if (flag2>2||flag2<1)
{
printf ("\n对不起,您的输入不正确\n");
continue;
}
for (i=0;i<n;i++)
{
printf ("\n请输入第%2d个x的值\tx%2d=",i+1,i+1);
scanf("%f",&ar[i]);
printf("\n请输入对应的y的值:\ty%2d=",i+1);
scanf(" %f",&br[i]);
}
if (flag2!=1)
{
for (i=0;i<n;i++)
br[i]=br[i]/(ar[i]*ar[i]);
}
sx=sy=sxx=sxy=0;//初值
for (i=0;i<n;i++)
{
sx=sx+ar[i]; //x和
sy=sy+br[i]; //y和
sxx=sxx+ar[i]*ar[i]; //x平方和
sxy=sxy+ar[i]*br[i]; //xy和
}
xe=sx/n; // xe为所输数值x的平均数
ye=sy/n; //ye为所输数值y的平均数
xye=sxy/n; //xy和的平均数
xxe=sxx/n; //x平方和平均数
b=(xye-xe*ye)/(xxe-xe*xe);
//xye为
a=ye-b*xe;
//ye为所输数值y的平均内数 xe为所输数值x的平均内数
printf ("\n对您输入的数据的处理已经完成,结果如下:");
printf ("\n\ta=%8.3f\n\tb=%8.3f\n",a,b);
printf ("\nb即为拟合直线的斜率,a为截距\n");
printf ("\n*********************************************************\n");
printf ("\n是否继续使用本程序处理数据?(y/n)?");
scanf (" %c",&flag1);
if (flag1=='y'||flag1=='Y') continue;
else if (flag1=='n'||flag1=='N') break;
else {printf ("\n***操作非法,本程序将关闭***\n");
exit(0);
}
printf ("\n*********************************************\n\n");
}
printf ("\n谢谢您的使用\n欢迎提出宝贵意见\n");
exit (0);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -