C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 月 3 日 1
1 INPUTOUTPUT 1 InputOutput 题目描述 用 cin 输入你的姓名 ( 没有空格 ) 和年龄 ( 整数 ), 并用 cout 输出 输入输出符合以下范例 输入 master 999 输出 I am master, 999 years old. 注意 "," 后面有一个空格,"." 结束, 没有其它格式输出 2
1 INPUTOUTPUT 1 #inclu de <iostream> 2 #include<s t r i n g > 3 4 using namespace std ; 6 7 i n t main ( ) 8 { 9 s t r i n g name ; 10 i n t year ; 11 cin >> name ; 12 cin >> year ; 13 cout << "I am " << name << ", " << year << " years old.\n" ; 14 return 0 ; 1 } 3
2 REPLACECHAR 2 ReplaceChar 题目描述 输入字符串 ( 没有空格字符 ), 替换把其中的字符 'c' 替换成 'C' 并使用以下 main 函数 : int main(){ char str[26]; cin >> str; Replace(str, 'c', 'C'); cout << str << endl; return 0; } 输入描述 字符串 输出描述 结果 输入 abcdedgc 输出 abcdedgc 4
2 REPLACECHAR 1 #i n c l u d e <iostream> 2 using namespace std ; 3 4 void Replace ( char * s t r, char chsrc, char chdst ) 6 { 7 while (* s t r ) 8 { 9 i f (* s t r==chsrc ) 10 { 11 * s t r = chdst ; 12 } 13 s t r ++; 14 } 1 } 16 17 i n t main ( ) { 18 char s t r [ 2 6 ] ; 19 cin >> s t r ; 20 Replace ( str, 'c', 'C') ; 21 cout << s t r << endl ; 22 return 0 ; 23 }
3 REPLACECHAR2 3 ReplaceChar2 题目描述 输入 string 字符串 str( 可以包含空格字符 ), 替换把其中的字符 'c' 替换成 'C' int main(){ string str; // 补充输入 Replace(str, 'c', 'C'); cout << str << endl; return 0; } 输入描述 字符串 输出描述 结果 输入 abcdedgc 输出 abcdedgc 6
3 REPLACECHAR2 1 #i n c l u d e <iostream> 2 #i n c l u d e <s t r i n g > 3 using namespace std ; 4 6 void Replace ( s t r i n g &str, char chsrc, char chdst ) 7 { 8 f o r ( i n t i =0; i<s t r. length ( ) ; i++) 9 { 10 i f ( s t r [ i ]==chsrc ) 11 { 12 s t r [ i ] = chdst ; 13 } 14 } 1 } 16 17 i n t main ( ) { 18 s t r i n g s t r ; 19 g e t l i n e ( cin, s t r ) ; 20 Replace ( str, 'c', 'C') ; 21 cout << s t r << endl ; 22 return 0 ; 23 } 7
4 DYNAMICARRAY 4 DynamicArray 题目描述 计算输入小数的和 输入第一行为小数个数, 第二行为小数 ( 空格隔开 ), 输出这些小数的和 输入 第一行为小数个数, 第二行为小数 ( 空格隔开 ) 输出 这些小数的和 输入 1.1 2.2 3.3 4.4. 输出 16. 8
DYNAMICARRAY DynamicArray 题目描述 计算输入小数的和 输入第一行为小数个数, 第二行为小数 ( 空格隔开 ), 输出这些小数的和 输入 第一行为小数个数, 第二行为小数 ( 空格隔开 ) 输出 这些小数的和 输入 1.1 2.2 3.3 4.4. 输出 16. 9
DYNAMICARRAY 1 #i n c l u d e <iostream> 2 #i n c l u d e <s t r i n g > 3 using namespace std ; 4 6 double Sum( double arr [ ], i n t n) 7 { 8 double sum = 0. 0 ; 9 f o r ( i n t i =0; i<n ; i++) 10 sum += arr [ i ] ; 11 return sum ; 12 } 13 14 double * Input ( i n t n) 1 { 16 double * arr = new double [ n ] ; 17 f o r ( i n t i =0; i<n ; i++) 18 cin >> arr [ i ] ; 19 return arr ; 20 } 21 22 23 i n t main ( ) 24 { 2 i n t n ; 26 cin >> n ; 27 double * arr ; 28 arr = Input (n) ; 29 cout << Sum( arr, n) << endl ; 30 d e l e t e [ ] arr ; 31 return 0 ; 32 } 10
6 ARRAY 6 Array 题目描述 计算输入小数的和 输入第一行为小数个数, 第二行为小数 ( 空格隔开 ), 输出这些小数的和 并使用以下 main 函数 int main() { int n; cin >> n; vector<double> arr; Input(arr, n); cout << Sum(arr) << endl; return 0; } 输入 第一行为小数个数, 第二行为小数 ( 空格隔开 ) 输出 小数的和 输入 1.1 2.2 3.3 4.4. 输出 16. 提示需要使用引用 以及 vector 的常用方法 如增加元素 push_back(), 向量的长度 size() 等 11
6 ARRAY 1 #i n c l u d e <iostream> 2 #i n c l u d e <vector> 3 using namespace std ; 4 6 double Sum( vector<double> &a r r ) 7 { 8 double sum = 0. 0 ; 9 f o r ( i n t i =0; i<arr. s i z e ( ) ; i++) 10 sum += arr [ i ] ; 11 return sum ; 12 } 13 14 void Input ( vector<double> &arr, i n t n) 1 { 16 17 f o r ( i n t i =0; i<n ; i++) 18 { 19 double temp ; 20 cin >> temp ; 21 arr. push_back (temp) ; 22 } 23 } 24 2 26 i n t main ( ) 27 { 28 i n t n ; 29 cin >> n ; 30 vector<double> arr ; 31 Input ( arr, n) ; 32 cout << Sum( arr ) << endl ; 33 return 0 ; 34 } 12
7 STRUCT 7 Struct 题目描述 Vector2D 为二维坐标, 输入两个向量, 计算这两个相邻的和 并使用以下 main 函数测试 int main() { Vector2D v1,v2; Input(v1); Input(&v2); Vector2D v = Sum(v1, v2); } cout << v.x << " " << v.y << endl; return 0; 输入 第一行第一个向量, 第二行为第二个向量 输出 向量的和 输入 1.1 3.3 4.4 6.6 输出. 9.9 13
7 STRUCT 1 #i n c l u d e <iostream> 2 #i n c l u d e <vector> 3 using namespace std ; 4 s t r u c t Vector2D 6 { 7 double x, y ; 8 } ; 9 10 void Input ( Vector2D &v ) 11 { 12 cin >> v. x >> v. y ; 13 } 14 1 void Input ( Vector2D *v ) 16 { 17 cin >> v >x >> v >y ; 18 } 19 20 21 Vector2D Sum( const Vector2D &v1, const Vector2D &v2 ) 22 { 23 Vector2D v ; 24 v. x = v1. x+v2. x ; 2 v. y = v1. y+v2. y ; 26 return v ; 27 } 28 29 30 i n t main ( ) 31 { 32 Vector2D v1, v2 ; 33 Input ( v1 ) ; 34 Input(&v2 ) ; 3 Vector2D v = Sum( v1, v2 ) ; 36 37 cout << v. x << " " << v. y << endl ; 38 return 0 ; 39 } 14