练习3.32

数组实现

#include<iostream>
#include<string>
using namespace std;
int main()
{   const int sz=10;int ia[sz],ib[sz];for (int i = 0; i < 10; i++)ia[i] = i;for (int j=0; j < 10; j++)//不能直接对数组使用复制运算符,需要逐一拷贝ib[j] = ia[j];for (auto val : ib)cout << val << " ";return 0;
}

vector实现

#include<iostream>
#include<vector>using namespace std;
int main() {const int sz=10;vector<int>v1, v2;for (int i = 0; i < sz; i++)v1.push_back(i);for (int j = 0; j < sz; j++)v2.push_back(v1[j]);for (auto val : v2)cout << val << " ";cout << endl;return 0;system("pause");}

练习3.35:编写一段程序,利用指针将数组中的元素置为0。

#include<iostream>
#include<string>
using namespace std;
int main()
{   const int sz = 10;int a[sz], i = 0;for (i = 0; i < sz; i++)a[i] = i;int *p = begin(a);//令p指向a的首地址while (p != end(a)){*p = 0;p++;}for (auto val : a)cout << val << " ";return 0;
}

练习3.36:编写一段程序,比较两个数组是否相等。再写一段程序,比较两个vector对象是否相等。
【出题思路】
无论对比两个数组是否相等还是两个vector对象是否相等,都必须逐一比较其元素。
【解答】
对比两个数组是否相等的程序如下所示,因为长度不等的数组一定不相等,并且数组的维度一开始就要确定,所以为了简化起见,程序中设定两个待比较的数组维度一致,仅比较对应的元素是否相等。
该例类似于一个彩票游戏,先由程序随机选出5个0~9的数字,此过程类似于摇奖;再由用户手动输入5个猜测的数字,类似于购买彩票;分别把两组数字存入数组a和b,然后逐一比对两个数组的元素;一旦有数字不一致,则告知用户猜测错误,只有当两个数组的所有元素都相等时,判定数组相等,即用户猜测正确。

数组实现

#include<iostream>
#include<string>
#include<ctime>
//#include<vector>
using namespace std;
int main()
{   const int sz = 5;int a[sz], b[sz], i;srand((unsigned)time(NULL));for (i = 0; i < sz; i++)a[i] = rand() % 10;cout << "请输入猜测的5个数字" << endl;int val;for (i = 0; i < sz; i++)if (cin >> val)b[i] = val;cout << "随机数字是:" << endl;for (auto x : a)cout << x << " ";cout << "你猜的是:" << endl;for (auto x : b)cout << x << " ";cout << endl;int *p = begin(a), *q = begin(b);while (p != end(a) && q != end(b)){if (*p != *q){cout << "you are wrong" << endl;return -1;}p++;q++;}return 0;
}

vector实现

#include<iostream>
#include<string>
#include<ctime>
#include<vector>
#include<cstdlib>
using namespace std;
int main()
{   const int sz = 5;vector<int>v1, v2;srand((unsigned)time(NULL));for (int i = 0; i < sz; i++)v1.push_back(rand() % 10);cout << "请输入猜测的5个数字" << endl;int val;for (int i = 0; i < sz; i++)if (cin >> val)v2.push_back(val);cout << "随机数字是:" << endl;for (auto x : v1)cout << x << " ";cout << "你猜的是:" << endl;for (auto x : v2)cout << x << " ";cout << endl;auto it1 = v1.cbegin(), it2 = v2.cbegin();while (it1 != v1.cend() && it2 !=v2.cend()){if (*it1 != *it2){cout << "you are wrong" << endl;return -1;}it1++;it2++;}return 0;
}

练习3.40:编写一段程序,定义两个字符数组并用字符串字面值初始化它们;接着再定义一个字符数组存放前两个数组连接后的结果。使用strcpy和strcat把前两个数组的内容拷贝到第三个数组中。

#include<iostream>
#include<string>
#include<cstring>
using namespace std;
int main()
{   const char str1[] = "Welcome to ";const char str2[] = "C++ family ";//利用strlen函数计算两个字符串的长度,并求结果字符串的长度char ret[strlen(str1) + strlen(str2) - 1];strcpy(ret, str1);strcat(ret, str2);cout << ret << endl;return 0;
}

但是函数编译的时候会出现错误,不知道怎么回事

C++ primer 练习题相关推荐

  1. C++ Primer练习题day1

    /* 练习1.1略 练习1.2.改写程序,让他返回-1. 练习1.3.编写程序,在标准的输出上打印Hello,World. */ #include<iostream> int main() ...

  2. c++ primer 练习题4.34:

    /*编写程序读入一组 string 类型的数据,并将它们存储在  vector 中.接着,把该 vector 对象复制给一个字符指 针数组.为 vector 中的每个元素创建一个新的字符数 组,并把该 ...

  3. c++ primer练习题 第七章 类 (Class)

    练习7.1 使用2.6.1节定义的Sales_data类为1.6节的交易处理程序编写一个新版本. 解: #include <iostream> #include <string> ...

  4. 【重温C++ Primer】第一章、初识C++

    目录 前言 一.编写一个简单的c++程序 二.编译.运行程序 三.初识输入输出 四.注释类型 五.控制流 5.1.循环语句:while + for 5.2.读取数量不定的输入数据 5.2.if 语句 ...

  5. C/C++:多个.cpp文件包括同一个.h头文件定义方法

    本文解决multiple definition of `XX'的错误.[出于反爬虫的目的,你不是在http://blog.csdn.net/zhanh1218上看到的,肯定不是最新最全的.] 关于头文 ...

  6. C++ Primer Plus 学习记录(第五章节-包含练习题答案)

    C++ Primer Plus 学习记录(第五章节-包含练习题答案) 5.1 for循环 5.1.1 for循环的组成部分 1.for循环的组成部分所完成的步骤 2.赋值表达式有值 3.cout中显示 ...

  7. C++ primer (中文版-第五版 )练习题答案

    C++ primer (中文版-第五版 ) 练习题答案 第1章 开始 1.4控制流 1.4.1节 while语句练习 1.4.2节 for语句练习 1.4.3节 读取数量不定的输入数据练习 1.4.4 ...

  8. c++primer 3.2,3.3练习题

    文章目录 3.2.2 string 对象上的操作 3.2.3 处理string对象中的字符 3.3.2 向vector对象中添加元素 3.3.3其他vector操作 练习题涉及到代码的部分. 3.2. ...

  9. C++primer 第五版 练习题【3.32】 P104页 个人解答

    [练习题3.32] 题目大致意思如下: 定义一个含有10个int的数组,令每个元素的值就是其下标值,将创建的数组拷贝给另外一个数组.利用vector重写程序,实现类似的功能: [源代码]: #incl ...

  10. C++ primer 第五版 练习题记录

    这里是第六章的练习题记录. 6.1节练习 练习6.1 实参是形参的初始值.第一个实参初始化第一个形参,第二个实参初始化第二个形参,以此类推.尽管实参与形参存在对应关系,但是并没有规定实参的求值顺序,编 ...

最新文章

  1. 跨域的原因以及解决方案
  2. ATAC-seq学习记录
  3. 深度学习中的batch理解(batch size 一次喂给神经网络的数据大小量)
  4. mysql数据库下载压缩包_mysql 8.0.22 zip压缩包版(免安装)下载、安装配置步骤详解...
  5. noi.ac #543 商店
  6. java 火星坐标转wgs84_js中火星坐标、百度坐标、WGS84坐标转换实现方法示例
  7. 知乎万赞回答:什么工具能做可视化大屏,还能做数据地图?
  8. RxJava flatMap,switchMap,concatMap
  9. GTP协议中的APN,TEID,NSAPI,TID
  10. TeamViewer远程连接控制软件
  11. PyCharm - Split Vertically Split Horizontally (垂直拆分窗口 水平拆分窗口)
  12. 51单片机定时器与流水灯
  13. 计算两个数的平均值几种方法
  14. chrome://flags是什么?
  15. 【JavaSE与数据结构】栈与Stack类
  16. 基于沙盒的隔离软件Sandboxie
  17. linux控制并发运行进程数
  18. 轻巧的jQuery提示框插件Tipso演示
  19. 交通违章 处罚[转]
  20. 致小班:无论身处何方,一定要怀揣着一颗上进的心

热门文章

  1. 手机触摸pass测试软件,PASS——功效分析和样本量计算软件
  2. 台式计算机如何连接网络,台式机如何去连接网络
  3. 2.Windows 界面技术发展现状
  4. c语言开源库windows,几款国产开源的Windows界面库
  5. Java定时器cron表达式
  6. linux sata硬盘热交换,学员原创-杨欢最详细西数硬盘热交换流程
  7. hadoop启动HDFS命令
  8. linux安装Telnet工具
  9. ImageNet下载资源(2017年)
  10. 落地SOA成为中国电信战略转型第一步