研究生复试快了,赶紧找了个OJ平台熟悉熟悉C++。算是个软广吧。我的答案都很水,基本上学过C++的都看懂,没有奇淫巧计。当然有更好解法的请务必告诉我。
一、整数处理
1、最大数和最小数
#include<iostream>
using namespace std;
int main(){
int n;
cin>>n;
int input[n];
for(int i=0;i<n;i++){
cin>>input[i];
}
int min = input[0];
int max = input[0];
for(int i=0;i<n;i++){
if(input[i]<min)
min = input[i];
if(input[i]>max)
max = input[i];
}
cout<<min<<" "<<max<<endl;
}
2、求和
#include<iostream>
using namespace std;
int main(){
int n;
cin>>n;
int test[n];
int sum=0;
for(int i=0;i<n;i++){
cin>>test[i];
sum+=test[i];
}
cout<<sum<<endl;
}
二、浮点数处理
1、判断浮点数是否相等
#include<iostream>
#include<cmath>
using namespace std;
int main(){
float a,b;
cin>>a>>b;
if(abs(a-b)>=(-1E-8) && abs(a-b)<=(1E-8))
cout<<"yes"<<endl;
else
cout<<"no"<<endl;
return 0;
}
2、保留两位小数
#include<iostream>
#include<cstdio>
using namespace std;
int main(){
double test;
cin>>test;
printf("%.2lf",test);
return 0;
}
3、机票打折
#include<iostream>
#include<cmath>
using namespace std;
int main(){
int price;
double discount;
cin>>price>>discount;
double d_price = round((price*discount)/100.0);
cout<<d_price*10<<endl;
return 0;
}
//取浮点数四舍五入的值
double round(double r)
{
return (r > 0.0) ? floor(r + 0.5) : ceil(r - 0.5);
}
三、字符串处理
1、寻找字串位置
#include<iostream>
#include<string>
using namespace std;
int main(){
string a,b;
cin>>a>>b;
//不会KMP算法,偷个懒
int n=a.find(b);
//这题有毒,位置从1开始而不是0
cout<<n+1<<endl;
return 0;
}
2、单词翻转
#include<iostream>
#include<string>
#include<stack>
using namespace std;
int main(){
stack<string> out;
string a;
while(cin>>a){
out.push(a);
}
while(!out.empty()){
cout<<out.top()<<" ";
out.pop();
}
cout<<endl;
return 0;
}