如果我把for设为a+=0.1,b+=0.1,他就无法输出一些样例
而a+=0.5,b+=0.5却可以
#include <iostream>
#include <cmath>
#include <algorithm>
using namespace std;
double x,y; //第一个点
double xt,yt; //第二个点
int pe; //一次函数是否过原点,过原点为1,不过原点为0
//默认数据有效
int main(){
while(cin>>pe){ //先判断函数是否是正比例函数
if(pe==1){
cin>>x>>y; //正比例函数只要一个坐标就行了
double ans;
ans=x/y;
cout<<"x="<<ans<<"y";
continue;
}else{
cin>>x>>y>>xt>>yt; //一次函数需要两个坐标
double ansa,ansb; //分别是y=a*x+b
for(double a=-2000;a<=2000;a+=0.5){ //a
for(double b=-2000;b<=2000;b+=0.5){ //b
if(a*x+b-y==0&&a*xt+b-yt==0){
ansa=a;
ansb=b;
if(b<0){
if(ansa==-1){ //特判1,-1的特殊形式
cout<<"x="<<"-y-"<<abs(b)<<endl;
break;
}else if(ansa==1){
cout<<"x="<<"y-"<<abs(b)<<endl;
break;
}
cout<<"x="<<ansa<<"y-"<<abs(b)<<endl;
break;
}else{ //特判 1,-1的特殊形式
if(ansa==-1){
cout<<"x="<<"-y+"<<abs(b)<<endl;
break;
}else if(ansa==1){
cout<<"x="<<"y+"<<abs(b)<<endl;
break;
}
cout<<"x="<<ansa<<"y+"<<abs(b)<<endl;
break;
}
continue;
}
}
}
}
}
}