深圳旧地毯回收:c语言高手进!!!解决问题我的积分都给他

来源:百度文库 编辑:中科新闻网 时间:2024/04/20 21:13:35
main ()
{
int n,i,flag2;
char flag1='y\';
float ar[50][2],x,y,xe,ye,xye,xxe,sx,sy,sxy,sxx,a,b;
printf ("\\n*********************************************************\\n");
printf ("\\n欢迎使用最小二乘法数据处理程序\\n");
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{printf ("\\n请输入第%2d个x的值\\tx%2d=",i+1,i+1);
scanf ("%f",&ar[0]);
printf ("\\n请输入对应的y的值:\\ty%2d=",i+1);
scanf ("%f",&ar[1]);
}
if (flag2!=1)
{for (i=0;iar[1]=ar[1]/(ar[0]*ar[0]);
}
sx=sy=sxx=sxy=0;
for (i=0;i{sx=sx+ar[0];
sy=sy+ar[1];
sxx=sxx+ar[0]*ar[0];
sxy=sxy+ar[0]*ar[1];
}
xe=sx/n;
ye=sy/n;
xye=sxy/n;
xxe=sxx/n;
b=(xye-xe*ye)/(xxe-xe*xe);
a=ye-b*xe;
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欢迎提出宝贵意见\\nEmail:zxg@tengzhou.gov.cn\\n");
exit (0);
}
这是关于最小二乘法算法的程序,其中有错误,谁能帮我改一下,让其正常运行
解决了有追加分
二楼的还是有错啊

main()
{
intn,i,flag2;
charflag1='y';
floatar[50],br[50],x,y,xe,ye,xye,xxe,sx,sy,sxy,sxx,a,b;
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{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;ibr[i]=br[i]/(ar[i]*ar[i]);
}
sx=sy=sxx=sxy=0;
for(i=0;i{sx=sx+ar[i];
sy=sy+br[i];
sxx=sxx+ar[i]*ar[i];
sxy=sxy+ar[i]*br[i];
}
xe=sx/n;
ye=sy/n;
xye=sxy/n;
xxe=sxx/n;
b=(xye-xe*ye)/(xxe-xe*xe);
a=ye-b*xe;
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;
elseif(flag1=='n'||flag1=='N')break;
else{printf("\n***操作非法,本程序将关闭***\n");
exit(0);
}
}
exit(0);
}

c很明显下面两个不对应
har flag1='y\';
for (;flag1==\'y\'||flag1==\'Y\';)

其他的没看了
调式一下很简单的

题目太长了,懒的看

for (i=0;i{printf ("\\n请输入第%2d个x的值\\tx%2d=",i+1,i+1);