C++ Work 6

《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;
    }
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

os.system

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值