《C++程序与设计》 WORK SIX
作者声明:文章内容是书中的习题,如有疑问,作者乐意和您交流:
T 1
//求 Sn = a + aa + aaa + ... + aa ... a 之值 ,最后一项有 n 个 a 。其中 a 是一个数字。
//例如 : 2 + 22 + 222 + 2222 + 22222 (此时 n = 5 ) , n 和 a 由键盘输入。
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int a = 0 , n = 0;
long long int sum = 0;
cin >> a >> n;
int temp = a;
for (int i = 0 ; i < n ; i++)
{
sum = sum + a;
a = a + temp * pow(10,i+1);
}
cout << "sum = " <<sum <<endl;
system ("pause");
}
T 2
//输出所有的“水仙花数”,所谓“水仙花数”是指一个 3 位数,其各位数字立方和等于该数本身。
//例如: 153是一水仙花数,因为 153 = 1^3 + 5^3 + 3^3 。
#include <iostream>
using namespace std;
int main ()
{
int a , b , c;
cout << "水仙花数为:";
for (int i = 100 ; i < 10000 ; i++)
{
a = i % 10 ;
b = i / 10 % 10 ;
c = i / 100 ;
if (a*a*a + b*b*b + c*c*c == i)
{
cout << i << " ";
}
}
system ("pause");
}
T 3
//求 1!+2!+3!+4!+ ... +20!
#include <iostream>
using namespace std;
#define N 20
int main ()
{
int a = 1;
int sum = 0;
for (int i = 1;i <= N;i++)
{
a =1;
for (int j = 1;j <= i;j++)
{
a = a * j;
}
sum = sum + a;
}
cout << sum << endl;
system ("pause");
}
T 4
//有一分数序列 2/1 , 3/2 , 5/3 , 8/5 , 13/8 , 21/13 ,... , 求这个数列的前 20 项之和
#include <iostream>
using namespace std;
int main ()
{
double m = 1 , n = 2;
double temp = 0;
double sum = 0;
for (int i = 0; i < 20; i ++)
{
temp = 0;
sum = sum + (n / m);
temp = n;
n = m + n;
m = temp;
}
cout << sum << endl;
system ("pause");
}
T 5
//求1 + 1 / 2 + 1 / 4 + 1 / 7 + 1 / 11 + 1 / 16 + 1 / 22 + 1 / 29...,
//当第i项的值 < 10 - 5时求和结束。
#include <iostream>
#include <cmath>
#define N 10000000
using namespace std;
int main ()
{
double m = 1;
double sum = 0;
for (double i = 0 ; i < N; i++)
{
m = m + i;
sum = sum + (1.0/m);
while ((1.0/m) < pow(10,-5))
{
break;
}
}
cout << sum << endl;
system ("pause");
}
T 6
//猴子吃桃问题。猴子第1天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。
//第2天早上又将剩下的吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半另加一个。
//到第10天早上想再吃时,就只剩一个桃子了。求第1天共摘了多少个桃子。
#include <iostream>
using namespace std;
int main ()
{
int sum_peachs (int day);
int day = 1;
int sum = sum_peachs (day);
cout << sum << endl;
system ("pause");
}
int sum_peachs (int day)
{
int sum = 0;
if (day == 10)
{
return 1;
}
else
{
sum = sum + 2 * (sum_peachs(day + 1) + 1);
return sum;
}
}