本随笔仅提供参考,具体题目请见PTA
7-1 测试C++
1 #include "iostream" 2 #include "vector" 3 using namespace std; 4 int main(){ 5 int n; 6 cin>>n; 7 vector<int> nums(n); 8 for(auto& num : nums) cin>>num; 9 for(auto it=nums.rbegin(); it!=nums.rend(); ++it) cout<<*it; 10 return 0; 11 }
7-2 计算圆的面积
1 #include "iostream" 2 using namespace std; 3 int main(){ 4 double PI=3.1415926; 5 double r,s; 6 cin>>r; 7 s=PI*r*r; 8 cout<<s<<endl; 9 return 0; 10 }
7-3 计算三角形面积
1 #include <iostream> 2 #include <cmath> 3 using namespace std; 4 int main(){ 5 double a,b,c; 6 cin>>a>>b>>c; 7 if(a+b>c&&b+c>a&&c+a>b){ 8 double p=(a+b+c)/2; 9 double area=sqrt(p*(p-a)*(p-b)*(p-c)); 10 cout << area << endl; 11 }else 12 cout<<"No"<<endl; 13 return 0; 14 }
7-4 问候
1 #include "iostream" 2 using namespace std; 3 int main(){ 4 char A[80]; 5 cin>>A; 6 cout<<"Hello!What's your name?"<<endl; 7 cout<<A<<','<<"Welcome to learn OOP using C++!"<<endl; 8 return 0; 9 }
7-5 求奇数的平均数
1 #include <iostream> 2 #include <iomanip> 3 #include <numeric> 4 #include <vector> 5 #include <algorithm> 6 using namespace std; 7 int main(){ 8 int n; 9 cin>>n; 10 vector<int> a(n); 11 for(auto &i : a) cin>>i; 12 auto odd_count=count_if(a.begin(), a.end(), [](int x) { return x%2!=0; }); 13 auto odd_sum=accumulate(a.begin(), a.end(), 0, [](int sum, int x) { return sum+(x%2!=0?x:0); }); 14 double aver=static_cast<double>(odd_sum)/odd_count; 15 cout<<fixed<<setprecision(3)<<aver; 16 return 0; 17 }
7-6 计算阶乘
1 #include "bits/stdc++.h" 2 using namespace std; 3 int main(){ 4 int n; 5 cin>>n; 6 long long ans=1; 7 for(int i=2;i<=n;i++) ans*=i; 8 cout<<ans<<endl; 9 return 0; 10 }
7-7 求1+(1+2)+(1+2+3)+…+(1+2+3+…+n)的和
1 #include "iostream" 2 int main(){ 3 int n; 4 std::cin>>n; 5 int sum=0; 6 for(int i=1;i<=n;i++){ 7 for(int j=1;j<=i;j++){ 8 sum+=j; 9 } 10 } 11 std::cout<<"sum = "<<sum<<std::endl; 12 return 0; 13 }
7-8 两整数求和
1 #include <iostream> 2 using namespace std; 3 int num1,num2; 4 int main() { 5 cin>>num1>>num2; 6 cout<<num1+num2<<endl; 7 return 0; 8 }
7-9 按顺序输出
1 #include <iostream> 2 using namespace std; 3 int main(){ 4 int a,b,c; 5 cin>>a>>b>>c; 6 if(a>b) a^=b^=a^=b; 7 if(a>c) a^=c^=a^=c; 8 if(b>c) b^=c^=b^=c; 9 cout<<a<<"<"<<b<<"<"<<c; 10 return 0; 11 }
7-10 使用结构体数组求10个学生三门课总平均成绩,及最高分学生信息
1 #include "iostream" 2 #include "algorithm" 3 #include "iomanip" 4 #include "numeric" 5 using namespace std; 6 struct student{ 7 char num[6],name[8]; 8 double score[3]; 9 } stu[10]; 10 int main(){ 11 double sum=0,max_sum= -1; 12 int max_index=0; 13 for(auto &s : stu){ 14 cin>>s.num>>s.name>>s.score[0]>>s.score[1]>>s.score[2]; 15 double cur_sum=accumulate(s.score, s.score + 3, 0.0); 16 sum+=cur_sum; 17 if(cur_sum>max_sum){ 18 max_sum=cur_sum; 19 max_index=&s-stu; 20 } 21 } 22 cout<<fixed<<setprecision(2)<<sum/30.0<<endl; 23 cout<<stu[max_index].num<<' '<<stu[max_index].name<<' '; 24 cout<<fixed<<setprecision(2)<<stu[max_index].score[0]<<' '; 25 cout<<fixed<<setprecision(2)<<stu[max_index].score[1]<<' '; 26 cout<<fixed<<setprecision(2)<<stu[max_index].score[2]<<endl; 27 return 0; 28 }