C++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;
}
时间: 2024-10-09 00:18:18

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

C++primer习题--第4章

本文地址:http://www.cnblogs.com/archimedes/p/cpp-primer-chapter4-ans.html,转载请注明源地址. [习题 4.7] 编写必要的代码将一个数组赋给另一个数组,然后把这段代码改用 vector 实现. 考虑如何将一个 vector 赋给另一个 vector. 用数组实现: #include <iostream> using namespace std; int main( ) { const size_t size=5; int a1[

C++Primer第五版习题解答---第一章

C++Primer第五版习题解答---第一章 ps:答案是个人在学习过程中书写,可能存在错漏之处,仅作参考. 作者:cosefy Date: 2022/1/7 第一章:开始 练习1.3 #include<iostream> int main() { std::cout << "hello, world" << std::endl; return 0; } 练习1.4: #include<iostream> int main() { int

C++ Primer Plus 第17章 输入,输出和文件

第17章 输入.输出和文件 1.当到达输入语句时,他将刷新输出缓冲区中当前所有的输出 2.streambuf类 提供了对缓冲区的各种操作 ios_base类表示流的一般特征 ios类基于ios_base,包含了一个指向streambuf对象的指针 ostream类从ios派生,提供可输出方法 istream类从ios派生,提供可输入方法 iostream类基于ostream和istream,继承了输入和输出方法 3.包含iostream则自动创建了8个流对象 cin 标准输入 wcin 宽字符流

C Primer Plus (第四章总结)

1.定义字符串可以直接在头文件下定义,如: #include <stdio.h> #define hello  "hello world!" 2.sizeof() 和 strlen() sizeof运算符是以字节为单位给出数据的大小,strlen()是以字符为单位给出长度. <string.h>包含许多与字符串相关的函数的原型,包括strlen() sizeof运算符提供的数据比肉眼直观的要大多一位,因为他把用来标志字符串的不可见的空字符也计算在内. 定义常量最

C++ Primer Plus 第15章 友元、异常和其他

第15章 友元.异常和其他 1.友元不仅有友元函数,还能是友元类 还可以将类中的某一个成员函数指定为另一个类的友元 尽管友元被授予从外部访问私有部门的权限,单并不与面向对象编程思想相愽,相反,它们提高了公有接口的灵活性 2.类的成员函数作为其他类的友元,涉及到类的声明顺序. 还有一个函数作为两个类的友元 这方面内容看P607-611 3.嵌套类:在另一个类中声明的类被称为嵌套类 类嵌套与包含不一样.包含意味着将一个类对象作为另一个类的成员,而对类进行嵌套不创建类成员,而是定义了一种类型. 4.对

C++ Primer 笔记 第三章

C++ Primer 第三章 标准库类型 3.1using声明 例: using namespace atd; using std::cin; 3.2string类型 初始化方式 string s1 默认构造函数,s1为空串 string s2(s1) 将s2初始化为s1的一个副本 string s3(“value”) 将s3初始化为一个字符串的副本 string s4(n, 'c') 将s4初始化为字符'c'的n个副本 getline读取整行文本 getline接受两个参数:一个是输入流对象和

《机器学习》 西瓜书习题 第 2 章

习题 \(2.1\) 数据集包含 \(1000\) 个样本, 其中 \(500\) 个正例.\(500\) 个反例, 将其划分为包含 \(70\%\) 样本的训练集和 \(30\%\) 样本的测试集用于留出法评估, 试估算共有多少种划分方式. 如果划分要保证正例和反例一样多的话, 那么划分方式数量 \(n\) 有 \[\begin{aligned} n &= C^{500\times35\%}_{500}\times C_{500}^{500\times 35\%}\&=(C^{175}_

C Primer Plus 第十一章 习题总结……2015.5.10

C Primer Plus         第五版 第十一章  字符串和字符串函数 1.没有加上字符串结尾标志 空字符'\0': 2.#include<stdio.h> int main(void) { char note[]="See you at snack bar: "; char *ptr; ptr=note; puts(ptr); puts(++ptr); note[7]='\0'; puts(note); puts(++ptr); return 0; } 3.#

c++ Primer 第五版习题答案第二章

练习2.1 Q: 类型int.long.long long和short的区别是什么,无符号和带符号类型的区别是什么?float和double的区别是什么? A:int. long. long long和short尺寸不同,表示的数据范围不同.无符号只能表示0和正数,无符号还可以表示负数.float为单精度浮点数,double为双精度,一般来说,float占4字节,double占8字节. 练习2.2 Q: 计算按揭贷款时,对于利率.本金和付款分别应选择何种数据类型?说明你的理由. A: 利率应该用