C++primer习题--第3章

【习题 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;
}
时间: 2024-11-02 03:55:25

C++primer习题--第3章的相关文章

C++primer习题--第1章

编一个程序,在标准输出上打印"Hello, World". #include <iostream> using namespace std; int main() { cout<<"Hello, World\n"; return 0; } [习题 1.4] 我们的程序利用内置加法操作符"+"来产生两个数的和.编写程序,使用乘法操作符"*"产生两个数的积. #include <iostream>

C++primer习题--第4章

编写必要的代码将一个数组赋给另一个数组,然后把这段代码改用 vector 实现. 考虑如何将一个 vector 赋给另一个 vector. 用数组实现: #include <iostream> using namespace std; int main( ) { const size_t size=5; int a1[size]={0,1,2,3,4}; int a2[size]; for(size_t i=0; i<size; ++i) a2[i]=a1[i]; system(&quo

c++ primer 习题8.6 文件总是打开失败

问题描述 c++ primer 习题8.6 文件总是打开失败 #include "stdafx.h" #include #include #include using namespace std; istream &f(istream &); int _tmain(int argc, _TCHAR* argv[]) { string filename="hello"; ifstream input; input.open(filename.c_str

c语言-c primer plus第三章第一个程序rhodium.c“1磅=14.5833盎司”是错的?

问题描述 c primer plus第三章第一个程序rhodium.c"1磅=14.5833盎司"是错的? 我上网查了好多,都是1磅=16盎司,这是意味着书错了么? 还有中文版的书翻译错了 pound科学正确的翻译是"英镑"和"磅"(我查字典时没有"英磅"这个词,百度了好久,这是我根据查资料推断出来的,不知道对不对),这样说对么? 这张图片是不是说明这条好搜字条编辑的有误? 解决方案 http://zhidao.baidu.c

快学Scala习题解答—第一章 基础

  A Read–Eval–Print Loop (REPL), also known as an interactive toplevel or language shell, is a simple, interactive computer programming environment that takes single user inputs (i.e. single expressions), evaluates them, and returns the result to the

代码-C Pirmer plus 中的习题

问题描述 C Pirmer plus 中的习题 运行环境:VS2013 操作系统:WIN8.1 代码是输入水的夸脱数 输出x夸脱数中有多少水分子 #include<stdio.h> #include<stdlib.h> #define G 3.344e22 //1g中水分子的数量 #define K 950 //1夸脱等于950g水分子 // 水分子数量=(x夸脱*K)*G int main() { printf("请输入水的夸脱数 "); int x = 0;

《数据结构与算法 C语言版》—— 3.8习题

前言 "数据结构"是计算机程序设计的重要理论技术基础,是计算机学科的核心课程,也是计算机专业考研的必考课程,同时已成为其他理工科专业的热门课程.学好该课程,不仅对学习后续算法设计.数值分析.操作系统.编译原理等课程有很大帮助,而且在实际中有广泛的用途. 数据结构主要研究数据的各种组织形式以及建立在这些结构之上的各种运算的实现.它不仅为用计算机语言进行程序设计提供了方法性的理论指导,还在一个更高的层次上总结了程序设计的常用方法和常用技巧. "数据结构"课程的特点是概念

屈婉玲-算法设计与分析课后习题答案

问题描述 算法设计与分析课后习题答案 需要算法设计与分析屈婉玲课后习题答案,希望哪位大神帮帮忙!大恩不言谢 解决方案 算法设计与分析课后习题3.2算法设计与分析课后习题3.5数据结构与算法分析课后习题第四章(1) 解决方案二: http://download.csdn.net/download/xiaomashengjie/6828333 不谢~

《逻辑与计算机设计基础(原书第5版)》——1.9 习题

1.9 习题 (+)表明更深层次的问题,(*)表明在原书配套网站上有相应的解答. 1-1 本习题与本章例1-1无线气象站中的风速测量有关.风速测量机构的构成是这样的:一个风速仪的转动轴上附有一个一半透明一半黑色的圆盘,在圆盘的上面有一盏灯,圆盘的下面有一个光电二极管,当接收到光时,光电二极管可以产生3 V的电压信号,没有接收到光时则不产生.(a)请画出以下情况传感器所产生的电压波形图:(1)当风速不大时:(2)当风速为10 m/h时:(3)当风速为100 m/h时.(b)请口头解释微计算机需要输