c语言算两点直线,刚学了两星期C语言……试着写了个求回归直线的……

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

感觉不应该有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;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值