程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> C++primer習題--第3章,primer習題--第3章

C++primer習題--第3章,primer習題--第3章

編輯:C++入門知識

C++primer習題--第3章,primer習題--第3章


本文地址:http://www.cnblogs.com/archimedes/p/cpp-primer-chapter3-ans.html,轉載請注明源地址。

【習題 2.11】
編寫程序,要求用戶輸入兩個數——底數( base)和指數( exponent),輸出底數的指數次方的結果。

#include <iostream>
#include <math.h>
#include <string>
using namespace std;
int main( )
{
    int base, exp;
    long result=1;
    cout<<"請輸入底數和指數:"<<endl;
    cin>>base>>exp;
    if(exp<0) {
        cout<<"指數不能為負數!"<<endl;
        return -1;
    }
    for(int i=1; i <= exp; i++)
        result *= base;
    cout<<base<<"的"<<exp<<"次方為"<<result<<endl;
    system("PAUSE");
    return 0;
}

【習題 3.7】
編一個程序讀入兩個 string 對象,測試它們是否相等。若不相等,則指出兩個中哪個較大。接著,改寫程序測試它們的長度是否相等,若不相等,則指出兩個中哪個較長。

#include <iostream>
#include <string>
using namespace std;
int main( )
{
    string str1, str2;
    cin>>str1>>str2;
    if(str1 == str2)
        cout<<"str1與str2相等"<<endl;
    else
        cout<<"str1與str2不相等"<<endl;
    system("PAUSE");
    return 0;
}

【習題 3.8】

編一個程序,從標准輸入讀取多個 string 對象,把它們連接起來存放到一個更大的 string 對象中。並輸出連接後的 string 對象。接著,改寫程序,將連接後相鄰 string 對象以空格隔開。

#include <iostream>
#include <string>
using namespace std;
int main( )
{
    string str, ss;
    cout<<"請輸入字符串:\n";
    while(cin>>str)
        ss = ss + str;
    cout<<"連接後的字符串為:"<<ss<<endl;
    system("PAUSE");
    return 0;
}

改寫後的程序:

#include <iostream>
#include <string>
using namespace std;
int main( )
{
    string str, ss;
    cout<<"請輸入字符串:\n";
    while(cin>>str)
        ss= ss + ' ' + str;
    cout<<"連接後的字符串為:"<<ss<<endl;
    system("PAUSE");
    return 0;
}

【習題 3.10】

編一個程序,從 string 對象中去掉標點符號。要求輸入到程序的字符串必須含 有標點符號,輸出結果則是去掉標點符號後的 string 對象。

#include <iostream>
#include <string>
#include <cctype>
using namespace std;
int main( )
{
    string str, ss;
    cout<<"請輸入字符串:\n";
    getline(cin, str);
    for(string::size_type i=0; i!=str.size(); ++i) {
        if(!ispunct(str[i]))
            ss+=str[i];
    }
    cout<<"連接後的字符串為:"<<ss<<endl;
    system("PAUSE");
    return 0;
}

【習題 3.13】

讀一組整數到 vector 對象,計算並輸出每對相鄰元素的和。如果讀入元素個數為奇數,則提示用戶最後一個元素沒有求和,並輸出其值。

#include <iostream>
#include <string>
#include <vector>
using namespace std;

int main( )
{
    vector<int> vec;
    int n;
    while(cin>>n)
        vec.push_back(n);
    if(!vec.size()) {
        cout<<"沒有數字!"<<endl;
        return -1;
    }
    for(vector<int>::size_type i=0; i<vec.size()-1; i+=2) {
        cout<<vec[i]+vec[i+1]<<"\t";
        if((i+1)%6==0) cout<<endl;
    }
    if(vec.size()%2!=0)
        cout<<endl<<"最後一個數是:"<<vec[vec.size()-1]<<endl;
    system("PAUSE");
    return 0;
}

【習題 3.14】
讀入一段文本到 vector 對象,每個單詞存儲為 vector 中的一個元素。把 vector 對象中每個單詞轉化為大寫字母。輸出 vector 對象中轉化後的元素, 每八個單詞為一行輸出。

#include <iostream>
#include <cctype>
#include <string>
#include <vector>
using namespace std;
void replace(string &s)  //將字符串中的所有的小寫字符全部轉化為大寫
{
    for(int i=0; i<s.length(); ++i) {
        if(islower(s[i]))
            s[i]=toupper(s[i]);
    }
}
int main( )
{
    int n;
    string str;
    vector<string> vec;
    n=1;
    cout<<"請輸入一段文本:\n";
    while(cin>>str)
        vec.push_back(str);
    for(vector<string>::iterator i=vec.begin(); i!=vec.end(); ++i) {
        replace(*i);
        cout<<(*i);
        if(n%8==0)
            cout<<endl;
        else
            cout<<" ";
        n++;
    }
    system("PAUSE");
    return 0;
}

【習題 3.18】

編寫程序來創建有 10 個元素的 vector 對象。用迭代器把每個元素值改為當前 值的 2 倍,輸出 vector 的所有元素。

#include <iostream>
#include <vector>
using namespace std;
int main( )
{
    vector<int> vec(10,2);
    for(vector<int>::iterator it=vec.begin(); it!=vec.end(); it++) {
        *it=(*it)*2;
        cout<<(*it)<<" ";
    }
    cout<<endl;
    system("PAUSE");
    return 0;
}

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved