25秋季9月14日 第一次课 常用函数(max,min,abs,sqrt,ceil,floor,round)
pico_fence · · 个人记录
第一题:B2004
新函数:
stew(x):占x个字符宽度
思路:
先创建一个两个整数函数a,b和c。在输入a,b,c。最后输出,先用setw(8)来占8个字符宽度,然后输出空格在输出a,再用setw(8)来占8个字符宽度,然后输出空格输出b,再用setw(8)来占8个字符宽度,然后输出空格输出c。
代码:
#include<bits/stdc++.h>
using namespace std;
int a,b,c;
int main(){
cin>>a>>b>>c;
cout<<setw(8)<<a<<" "<<setw(8)<<b<<" "<<setw(8)<<c;
return 0;
}
第二题:B2004
新函数:
floor():浮点向下取整
思路:
代码中的公式:
a=k*b+r;
r=a-k*b;
先定两个小数变量a,b,在输入a和b,再定一个整数函数x=a/b,最后输出a-floor(a/b)*b;
代码:
#include<bits/stdc++.h>
using namespace std;
double a,b;
int main(){
cin>>a>>b;
int x=a/b;
cout<<a-floor(a/b)*b;
return 0;
}
第三题:B2029
新函数:
ceil():浮点向上取整
思路:
代码中的公式:
圆柱的体积公式:V=3.14*a*a*b;
先定义两个整数函数:h,r。在输入h,r;再来两个double函数:double s=3.14rr*h; double t=20000/s;最后输出ceil(t);
代码:
#include<bits/stdc++.h>
using namespace std;
int h,r;
int main(){
cin>>h>>r;
double s=3.14*r*r*h;
double t=20000/s;
cout<<ceil(t);
return 0;
}
第四题:P5726
新函数:
max(a,b):取a和b的最大值
min(a,b):取a和b的最小值
思路:
先定义一个整数变量和一个二维数组,然后输入n和a[i]再来三个变量int maxn=-1,minn=11,sum=0;再来一个循环:
for(int i=1;i<=n;i++){
sum+=a[i];
maxn=max(a[i],maxn);
minn=min(a[i],minn);
}
最后保留两位小数输出:
cout<<fixed<<setprecision(2)<<double(sum-minn-maxn)/(n-2);
或
cout<<fixed<<setprecision(2)<<(sum-minn-maxn)*1.0/(n-2);
代码:
#include<bits/stdc++.h>
using namespace std;
int n,a[1005];
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
}
int maxn=-1,minn=11;
int sum=0;
for(int i=1;i<=n;i++){
sum+=a[i];
maxn=max(a[i],maxn);
minn=min(a[i],minn);
}
cout<<fixed<<setprecision(2)<<double(sum-minn-maxn)/(n-2);
return 0;
}
第四题:B2066
新函数:
sqrt():开根号函数
思路:
公式:
总时间=开船时间+求(l+0.5)*人数
开船时间=路程/50*2(来回)
两点之间路程公式(x1,x1)(y1,y2)=sqrt((x1-x2)*(x1-x2)+(y1,y2)*(y1-y2))
路程(0,0)->(x,y)=sqrt(x*x+y*y)
一次救援时间=sqrt(x*x+y*y)/50*2+1.5*人数
先定一个整数变量和一个浮点收变量:int n;double sum=0;在输入n,然后来个for循环:
for(int i=1;i<=n;i++){
double x,y;
int z;
cin>>x>>y>>z;
sum+=sqrt(x*x+y*y)/50*2+1.5*z;
}
然后输出:cout<<(int)ceil(sum);
代码:
#include<bits/stdc++.h>
using namespace std;
int n;
int main(){
cin>>n;
double sum=0;
for(int i=1;i<=n;i++){
double x,y;
int z;
cin>>x>>y>>z;
sum+=sqrt(x*x+y*y)/50*2+1.5*z;
}
cout<<(int)ceil(sum);
return 0;
}
第四题:P1639
新函数:
abs():绝对值函数
swap():交换函数
round():浮点四舍五入利用整数取整是向零取整
思路:
先定四个变量:a,b,x,y; 再来两个if判断,判断两种情况,最后输出:cout<<min(abs(a-b),abs(a-x)+abs(y-b))
代码:
using namespace std;
int a,b,x,y;
int main(){
cin>>a>>b>>x>>y;
if(a>b){
swap(a,b);
}
if(x>y){
swap(x,y);
}
cout<<min(abs(a-b),abs(a-x)+abs(y-b));
return 0;
}