计算机程序设计C++ MOOC(第6周编程作业)
本博客内容为中国大学生MOOC国家精品课程《计算机程序设计C++》作业记录,仅供参考,观者忌照搬照抄,欢迎交流批评指正!
(注:由于本人学习时,前八周的作业提交时间已过,因此这八周的作业代码只在自己的编译器上测试运行通过,在课程网站上还未测试,于下学期开课时,再另行测试,如您发现有明显错误,可留言评论)
##第6周编程作业
本周作业内容为递归函数,内联函数与重载函数
- 递归猴子摘桃
#include<iostream>
using namespace std;
int monkeyandPeak(int k, int n)//k是最后一天剩下的桃子个数,此例取1,n是天数
{
if (n == 2)return (k + 1) * 2;
int sum;
sum = (monkeyandPeak(k, n - 1) + 1) * 2;
return sum;
}
int main()
{
int n;
cin >> n;
cout << monkeyandPeak(1, n);
return 0;
}
- 编写内联函数求矩形的面积和周长
#include<iostream>
using namespace std;
inline int Area(int a, int b)
{
return a*b;
}
inline int Perimeter(int a, int b)
{
return a + a + b + b;
}
int main()
{
int l, w;
cin >> l >> w;
cout << Area(l, w)<<endl;
cout << Perimeter(l, w) << endl;
return 0;
}
- 编写重载函数显示字符串
#include<iostream>
#include<string>
using namespace std;
void print_spaced(char a[])
{
int n = 0,i;
while (a[n] != '\0')
{
n++;
}
for (i = 0; i < n - 1; i++)
{
cout << a[i] << ' ';
}
cout << a[i];
}
void print_spaced(string a)
{
int n = 0, i;
while (a[n] != '\0')
{
n++;
}
for (i = 0; i < n - 1; i++)
{
cout << a[i] << ' ';
}
cout << a[i];
}
int main()
{
char a[100];
string b;
cin >> a >> b;
print_spaced(a);cout << endl;
print_spaced(b);
return 0;
}
- 排序函数重载
#include<iostream>
using namespace std;
void sort(int &a, int &b)
{
if (a > b) return;
int temp = a;
a = b;
b = temp;
return;
}
void sort(int &a, int &b, int &c)
{
sort(a, b);
sort(b, c);
sort(a, b);
return;
}
void sort(int &a, int &b, int &c, int &d)
{
sort(a, b, c);
sort(b, c, d);
sort(a, b);
return;
}
void sort(int a[], int n)
{
if (n == 1) return;
if (n == 2)
{
sort(a[0], a[1]); return;
}
sort(a, n - 1);
sort(a[n - 2], a[n - 1]);
sort(a, n - 1);
return;
}
void print(int a[], int n)
{
int i;
for (i = 0; i < n - 1; i++)
{
cout << a[i]<<' ';
}
cout << a[i];
}
int main()
{
int a, b, c, d;
int data[100];
int k, n, i;
cin >> k;
switch (k)
{
case 1:
cin >> a >> b;
sort(a, b);
cout << a << " " << b << endl;
break;
case 2:
cin >> a >> b >> c;
sort(a, b, c);
cout << a << " " << b << " " << c << endl;
break;
case 3:
cin >> a >> b >> c >> d;
sort(a, b, c, d);
cout << a << " " << b << " " << c << " " << d << endl;
break;
case 4:
cin >> n;
for (i = 0; i<n; i++)
{
cin >> data[i];
}
sort(data, n);
print(data, n);
break;
}
return 0;
}
- 编写递归函数来使字符串逆序
#include<iostream>
using namespace std;
void reverse(char &a, char &b)
{
char temp;
temp = a;
a = b;
b = temp;
return;
}
void reverse(char a[], int n)
{
if (n == 2)
{
reverse(a[0], a[1]); return;
}
reverse(a, n - 1);
char temp = a[n-1];
int i;
for (i = n-1; i >0; i--)
{
a[i] = a[i-1];
}
a[0] = temp;
return;
}
int main()
{
char a[100];
int n=0;
cin.getline(a,100);
while (a[n] != '\0')
{
n++;
}
reverse(a, n);
for (int i = 0; i < n; i++)
{
cout << a[i];
}
return 0;
}
以上为第6周编程作业。