程序设计与算法(三)第七周测验(2018春季) Part A

题目网址:http://cxsjsxmooc.openjudge.cn/2018t3springw7/

【1:简单的SumArray】

 1  1 #include <iostream>
 2  2 #include <string>
 3  3 using namespace std;
 4  4 template <class T>
 5  5 T SumArray(
 6  6 T* s,T* e){
 7  7  T tmp=*s;
 8  8  for(T* i=s+1;i<e;i++){
 9  9      tmp+=*i;
10 10  }
11 11  return tmp;
12 12 }
13 13 int main() {
14 14     string array[4] = { "Tom","Jack","Mary","John"};
15 15     cout << SumArray(array,array+4) << endl;
16 16     int a[4] = { 1, 2, 3, 4};  //提示:1+2+3+4 = 10
17 17     cout << SumArray(a,a+4) << endl;
18 18     return 0;
19 19 }
View Code

【2:简单的foreach】

 1 #include <iostream>
 2 #include <string>
 3 using namespace std;
 4 template<class T1,class T2>
 5 void MyForeach(T1 begin,T1 end,T2 op){
 6     for(T1 i=begin;i<end;i++){
 7         op(*i);
 8     }
 9 }
10 void Print(string s)
11 {
12     cout << s;
13 }
14 void Inc(int & n)
15 {
16     ++ n;
17 }
18 string array[100];
19 int a[100];
20 int main() {
21     int m,n;
22     while(cin >> m >> n) {
23         for(int i = 0;i < m; ++i)
24             cin >> array[i];
25         for(int j = 0; j < n; ++j)
26             cin >> a[j];
27         MyForeach(array,array+m,Print);         
28         cout << endl;
29         MyForeach(a,a+n,Inc);         
30         for(int i = 0;i < n; ++i)
31             cout << a[i] << ",";
32         cout << endl;
33     }
34     return 0;
35 }

【3:简单的Filter】

 1 #include <iostream>
 2 #include <string>
 3 using namespace std;
 4 template<class T1,class T2>
 5 T1 Filter(T1 begin,T1 end ,T1 arr,T2 op){
 6     int index=0;
 7     for(T1 i=begin;i<end;i++){
 8         if(op(*i)){
 9             arr[index++]=*i;
10         }
11     }
12     return (arr+index);
13 }
14 bool LargerThan2(int n)
15 {
16     return n > 2;
17 }
18 bool LongerThan3(string s) 
19 {
20     return s.length() > 3;
21 }
22 
23 string as1[5] = {"Tom","Mike","Jack","Ted","Lucy"};
24 string as2[5];
25 int  a1[5] = { 1,2,3,4,5};
26 int a2[5];
27 int main() {
28     string * p = Filter(as1,as1+5,as2,LongerThan3);
29     for(int i = 0;i < p - as2; ++i)
30         cout << as2[i];
31     cout << endl; 
32     int * p2 = Filter(a1,a1+5,a2,LargerThan2);
33     for(int i = 0;i < p2-a2; ++i)
34         cout << a2[i] << ",";
35     return 0;
36 }

【4:你真的搞清楚为啥 while(cin >> n) 能成立了吗?】

 1 #include <iostream>
 2 using namespace std;
 3 class MyCin
 4 {
 5 public:
 6     int flag;
 7     MyCin():flag(0){
 8     }
 9 istream& operator >>(int& x){
10     cin>>x;
11     if(x==-1)
12     exit(0);
13     return cin;
14 }
15 
16 };
17 int main()
18 {
19     MyCin m;
20     int n1,n2;
21     while( m >> n1 >> n2) 
22         cout  << n1 << " " << n2 << endl;
23     return 0;
24 }

猜你喜欢

转载自www.cnblogs.com/BUPT-Coffee/p/8992582.html