该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
感觉不应该有bug了……
/*回归直线*/
#include"stdio.h"
#include"windows.h"
int reply(int i);
void main()
{
int i,bd,bd2,s=0,re=1;
double x,y,xp,yp,p,q,t,b,a,r;
printf("=====================================================================\n");
printf(" 这个程序可以帮您求回归直线,当您想结束程序时,请输入:0 0 结束。\n");
printf("=====================================================================\n\n");
do
{
xp=0,yp=0,p=0,q=0,t=0;
do
{
loop1:
fflush(stdin);
for(i=1,x=1;x!=0||y!=0;i++)
{
printf("请输入第%d组数据:",i);
s=scanf("%lf%lf",&x,&y);fflush(stdin);if(s!=2){re=reply(re);if(re==8)goto last;goto loop1;}
re=1;xp=xp+x;yp=yp+y;p=p+x*y;q=q+x*x;t=t+y*y;
}
printf("xp=%lf\nyp=%lf\np=%lf\nq=%lf\nt=%lf\n",xp,yp,p,q,t);
printf("\n警告!您现在就要结束程序吗?\n");
printf("==========================================");
printf("\n 1.是,我要得到回归直线方程\n 2.不,我要继续输入数据!\n");
printf("==========================================");
loop2:
printf("\n请输入您的选择:");
s=scanf("%d",&bd);fflush(stdin);if(bd!=1&&bd!=2||s!=1){printf("警告!您的选择有误,请重新选择!\n");goto loop2;}
printf("\n");
}while(bd==2);
i-=2;b=(p-xp*yp/i)/(q-xp*xp/i);a=yp/i-b*xp/i;
r=((p-xp*yp/i)*(p-xp*yp/i))/((q-xp*xp/i)*(t-yp*yp/i));
printf("●●●●●●●●●●●●●●●●●●●●●●●●\n\n");
printf(" ◆ 回归直线方程为:y=%lfx",b);
if(a!=0&&a>0)printf("+");
printf("%lf\n\n",a);
printf(" ◆ 相关系数的平方:R^2=%lf\n\n",r);
printf("●●●●●●●●●●●●●●●●●●●●●●●●\n");
printf("\n\n您要继续计算吗?\n");
printf("======================================\n");
printf(" 1.是的,我要继续计算\n");
printf(" 2.不啦!我现在就要退出\n");
printf("======================================\n");
loop3:
printf("\n您的选择是:");
s=scanf("%d",&bd2);fflush(stdin);if(bd2!=1&&bd2!=2||s!=1){printf("\n警告!您的选择有误,请重新选择!\n");goto loop3;}
printf("\n");
}while(bd2==1);
last:Sleep(3000);
}
int reply(int i)
{
switch(i)
{
case 1:printf("\n● 不好意思,这里只能输入2个数据型变量哦! ●\n\n");break;
case 2:printf("\n● 又错了,都跟您说了要输入数据变量呀! ●\n\n");break;
case 3:printf("\n● 亲!不正确输入真的不能计算! ●\n\n");break;
case 4:printf("\n● 您怎么还不信呢?您再这样我就不算了! ●\n\n");break;
case 5:printf("\n● 我擦!你存心的是吧?TM的!再错一次,老子直接退出,你信不?! ●\n\n");break;
case 6:printf("\n● 别闹了!最后给你一次机会,否则我真退了! ●\n\n");break;
case 7:printf("\n● 我退了亲!你一边玩去吧! ●\n\n");break;
}
i++;
return i;
}