C++ Primer Plus第五章編程練習

1

編寫一個要求用戶輸入兩個整數的程序。該程序將計算並輸出這兩個整數之間(包括這兩個整數)所有整數的和。這裏假設先輸入較小的整數。例如,如果用戶輸入的是2和9,則程序將指出2~9之間所有整數的和爲44。

#include <iostream>

int main()
{
    using namespace std;
    int min = 0, max = 0, i = 0, sum = 0;
    
    cout<<"Please input the min integer: ";
    cin>>min;
    cout<<"Please input the max integer: ";
    cin>>max;
    for(i=min; i<=max; i++)
    {
        sum = sum + i;
    }
    cout<<"The sum of "<<min<<" ~ "<<max<<" is "<<sum<<endl;
    return 0;
}

以下爲程序運行結果:
在這裏插入圖片描述

2

使用array對象(而不是數組)和long double(而不是long long)重新編寫程序清單5.4,並計算100!的值。

#include <iostream>
#include <array>

const int ArSize = 16;
int main()
{
    using namespace std;
    array<long double, ArSize> factorials;
    int i;
    
    factorials[1] = factorials[0] = 1LL;
    for(i=2; i<ArSize; i++)
    {
        factorials[i] = i * factorials[i-1];
    }
    for(i=0; i<ArSize; i++)
    {
        cout<<i<<"! = "<<factorials[i]<<endl;
    }
    
    return 0;
}

以下爲程序運行結果:
在這裏插入圖片描述

3

編寫一個要求用戶輸入數字的程序。每次輸入後,程序都將報告到目前爲止,所有輸入的累計和。當用戶輸入0時,程序結束。

#include <iostream>

int main()
{
    using namespace std;
    double num, sum = 0;
    
    do {
        cout<<"\nPlease input a numbre(0 to end): ";
        cin>>num;
        sum = sum + num;
        cout<<"The sum is "<<sum;
    } while (num != 0);
    cout<<"\nProgram End!"<<endl;
    
    return 0;
}

以下爲程序運行結果:
在這裏插入圖片描述

4

Daphne以10%的單利投資了100美元。也就是說,每一年的利潤都是投資額的10%,即每年10美元:
利息 = 0.10×原始存款
而Cleo以5%的複利投資了100美元。也就是說,利息是當前存款(包括獲得的利息)的5%,:
利息 = 0.05×當前存款
Cleo在第一年投資100美元的盈利是5%—得到了105美元。下一年的盈利是105美元的5%—即5.25美元,依此類推。請編寫一個程序,計算多少年後,Cleo的投資價值才能超過Daphne的投資價值,並顯示此時兩個人的投資價值。

#include <iostream>

const double Daphne_rate = 0.10;
const double Cleo_rate = 0.05;
const double capital = 100;
int main()
{
    using namespace std;
    double Daphne_money = capital, Cleo_money = capital;
    int year = 0;
    
    while (Cleo_money<=Daphne_money) {
        Daphne_money += capital * Daphne_rate;
        Cleo_money += Cleo_money * Cleo_rate;
        year++;
    }
    cout<<"After "<<year<<" years:\n";
    cout<<"Cleo money is "<<Cleo_money<<"\n";
    cout<<"Daphne money is "<<Daphne_money<<endl;
    
    return 0;
}

以下爲程序運行結果:
在這裏插入圖片描述

5

假設要銷售《C++ For Fools》一書。請編寫一個程序,輸入全年中每個月的銷售量(圖書數量,而不是銷售額)。程序通過循環,使用初始化爲月份字符串的char *數組(或string對象數組)逐月進行提示,並將輸入的數據儲存在一個int數組中。然後,程序計算數組中各元素的總數,並報告這一年的銷售情況。

#include <iostream>
#include <string>

int main()
{
    using namespace std;
    string month[12] = {
        "January",
        "February",
        "March",
        "April",
        "May",
        "June",
        "July",
        "August",
        "September",
        "October",
        "November",
        "December"
    };
    int num[12] = {0}, i, sum = 0;
    
    for(i=0; i<12; i++)
    {
        cout<<"Please input "<<month[i]<<" month num: ";
        cin>>num[i];
        sum += num[i];
    }
    cout<<"\nThe sum is "<<sum<<endl;
    return 0;
}

以下爲程序運行結果:
在這裏插入圖片描述

6

完成編程練習5,但這一次使用一個二維數組來存儲輸入—3年中每個月的銷售量。程序將報告每年銷售量以及三年的總銷售量。

#include <iostream>
#include <string>

int main()
{
    using namespace std;
    string month[12] = {
        "January",
        "February",
        "March",
        "April",
        "May",
        "June",
        "July",
        "August",
        "September",
        "October",
        "November",
        "December"
    };
    int num[3][12] = {0}, i, j, sum[3] = {0};
    
    for(i=0; i<3; i++)
    {
        cout<<"*****************"<<i+1<<" Year*********************\n";
        for(j=0; j<12; j++)
        {
            cout<<"Please input "<<month[j]<<" month num: ";
            cin>>num[i][j];
            sum[i] += num[i][j];
        }
        cout<<"*****************End*********************\n";
    }
    for(i=0; i<3; i++)
    {
        cout<<"\nThe "<<i+1<<" year number is "<<sum[i]<<"\n";
    }
    cout<<"\nThe sum of 3 year is "<<sum[0]+sum[1]+sum[2]<<endl;
    return 0;
}

以下爲程序運行結果:
在這裏插入圖片描述

7

設計一個名爲car的結構,用它存儲下述有關汽車的信息:生產商(存儲在字符數組或string對象中的字符串)、生產年份(整數)。編寫一個程序,向用戶詢問有多少輛汽車。隨後,程序使用new來創建一個由相應數量的car結構組成的動態數組。接下來,程序提示用戶輸入每輛車的生產商(可能由多個單詞組成)和年份信息。請注意,這需要特別小心,因爲它將交替讀取數值和字符串(參見第4章)。最後,程序將顯示每個結構的內容。該程序的運行情況如下:在這裏插入圖片描述

#include <iostream>
#include <string>

using namespace std;
struct car{
    string company;
    int year;
};
int main()
{
    int num = 0, i;
    
    cout<<"How many cars do you wish to catalog? ";
    cin>>num;
    cin.get();
    car *c = new car[num];
    for(i=0; i<num; i++)
    {
        cout<<"Car #"<<i+1<<":\n";
        cout<<"Please enter the make: ";
        getline(cin, c[i].company);
        cout<<"Please enter the year made: ";
        cin>>c[i].year;
        cin.get();
    }
    cout<<"Here is your collection: \n";
    for(i=0; i<num; i++)
    {
        cout<<c[i].year<<" "<<c[i].company<<"\n";
    }
    
    delete [] c;
    return 0;
}

以下爲程序運行結果:
在這裏插入圖片描述

8

編寫一個程序,它使用一個char數組和循環來每次讀取一個單詞,直到用戶輸入done爲止。隨後,該程序指出用戶輸入了多少個單詞(不包括done在內)。下面是該程序的運行情況:
在這裏插入圖片描述
您應在程序中包含頭文件cstring,並使用函數strcmp()來進行比較測試。

#include <iostream>
#include <cstring>

const int Size = 50;
int main()
{
    using namespace std;
    char word[Size];
    int count = 0;
    
    cout<<"Enter words (to stop, type the word done):\n";
    while (1)
    {
        cin>>word;
        if(!strcmp(word, "done"))
        {
            break;
        }
        count++;
    }
    cout<<"You entered a total of "<<count<<" words.\n";
    return 0;
}

以下爲程序運行結果:
在這裏插入圖片描述

9

編寫一個滿足前一個練習中描述的程序,但使用string對象而不是字符數組。請在程序中包含頭文件string,並使用關係運算符來進行比較測試。

#include <iostream>
#include <string>

const int Size = 50;
int main()
{
    using namespace std;
    string word;
    int count = 0;
    
    cout<<"Enter words (to stop, type the word done):\n";
    while (1)
    {
        cin>>word;
        if(word == "done")
        {
            break;
        }
        count++;
    }
    cout<<"You entered a total of "<<count<<" words.\n";
    return 0;
}

以下爲程序運行結果:
在這裏插入圖片描述

10

編寫一個使用嵌套循環的程序,要求用戶輸入一個值,指出要顯示多少行。然後,程序將顯示相應行數的星號,其中第一行包括一個星號,第二行包括兩個星號,依此類推。每一行包含的字符數等於用戶指定的行數,在星號不夠的情況下,在星號前面加上句點。該程序的運行情況如下:
在這裏插入圖片描述

#include <iostream>

int main()
{
    using namespace std;
    int num = 0, i, j;
    
    cout<<"Enter number of rows: ";
    cin>>num;
    for(i=0; i<num; i++)
    {
        for(j=0; j<(num-(i+1)); j++)
        {
            cout<<".";
        }
        for(j=0; j<i+1; j++)
        {
            cout<<"*";
        }
        cout<<"\n";
    }
    
    return 0;
}

以下爲程序運行結果:
在這裏插入圖片描述

發佈了14 篇原創文章 · 獲贊 13 · 訪問量 5653
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章