9.6 巨人网络
第一题 StringToFloat
死活都是 80% , 直接把输入的字符串输出就是 100% 。。
float ConvertStringToFloat(string str) {
if(str.size() == 0) return 0.0;
float res = 0, flag = 1, ind = -1, len = str.size(), base = 0.1;
if(str[ind+1] == '+') ind++;
if(str[ind+1] == '-') ind++, flag = -1;
while(++ind < len && str[ind] != '.' && str[ind] >= '0' && str[ind] <= '9')
res = res * 10 + str[ind] - '0';
if(ind < len && str[ind] == '.') {
while(++ind < len && str[ind] >= '0' && str[ind] <= '9')
res += base * (str[ind] - '0'), base *= 0.1;
}
if(ind < len && str[ind] == 'E' || str[ind] == 'e') {
bool isActive = true;
if(str[ind+1] == '+') ind++;
if(str[ind+1] == '-') ind++, isActive = false;
int num = 0;
while(++ind < len && str[ind] >= '0' && str[ind] <= '9')
num = num * 10 + str[ind] - '0';
while(num-- > 0) {
if(isActive) res *= 10;
else res /= 10;
}
}
return res * flag;
}第二题 求二维角度
输入一个 坐标 x,y 求其与 (1,0) 的夹角 范围是 0~360
调试到天荒地老,最后终于 A 了
最后没保存上代码,大概是这样的
float getRes(float x, float y) {
if(y == 0 && x < 0) return 180;
float mode = sqrt(x*x + y*y), res, pi = 3.14159265265;
res = acos(x / mode) * 180.0 / pi;
if(y < 0) return 360 - res;
return res;
}
OPPO成长空间 954人发布
