正确代码:
#include <iostream> #include<iomanip> #include<vector> #include<math.h> using namespace std; int main() { int n; cin >> n; vector<int>a,b; a.resize(n); b.resize(n); for(int i=0;i<n;i++) { cin>>a[i]>>b[i]; } for(int i=0;i<n;i++){ cout<<"Scenario #"<<i+1<<":"<<endl; if(a[i]%2==1&&b[i]%2==1) cout<<fixed<<setprecision(2)<<(double)(a[i]*b[i]-1+sqrt(2.0))<<endl; else cout<<fixed<<setprecision(2)<<(double)(a[i]*b[i])<<endl; cout<<endl; } return 0; }
错误代码:
不知道为什么先前像下面这样写一直都说Segmentation Fault
#include <iostream> #include<iomanip> using namespace std; int main() { int n; cin >> n; double a[50],b[50]; for(int i=0;i<n;i++) { cin>>a[i]>>b[i]; } for(int i=0;i<n;i++){ cout<<"Scenario #"<<i+1<<":"<<endl; cout<<fixed<<setprecision(2)<<a[i]*b[i]<<endl; } return 0; }
两者的区别仅仅在于上面使用向量,下面使用数组。
改成向量是因为看到有人说
int n;
cin >> n;
int a[n];
这样写会引起段错误,说是编译时需要一个确定的n值才能int a[n]
但我平时都是这样写的,没想到竟然ac不了是错的 先mark一下