
C++Primer
青木夷则
联系邮箱vadonmo@126.com
展开
-
第三章 3.22
修改之前那个输出text第一段程序,首先把text的第一段全部改成大写形式,然后再输出它。#include #include #include #include using namespace std;int main(){ vector text; string s; while (getline(cin, s)) text.push_back(s); cou原创 2016-08-06 18:59:53 · 2556 阅读 · 0 评论 -
第四章 4.9 sizeof运算符
4.28编写一段程序,输出每一种内置类型所占空间大小。#include <iostream>#include <string>using namespace std;int main(){ int a; short b; long c; char d; wchar_t e; bool f; float g; double h;原创 2016-08-19 21:58:17 · 653 阅读 · 0 评论 -
第四章 4.10 逗号运算符
4.31for (vector<int>::size_type ix = 0; ix != ivec.size(); ix++, cnt--){ ivec[ix] = cnt;}4.32解释下面这个循环的含义。constexpr int size = 5;int ia[size] = { 1, 2, 3, 4, 5 };for (int *ptr = ia, ix = 0; ix !原创 2016-08-19 22:38:39 · 562 阅读 · 0 评论 -
第三章 3.6 多维数组
3.43#include <iostream>#include <string>using namespace std;int main(){ const size_t rowCnt = 3, colCnt = 4; size_t cnt = 0; int ia[rowCnt][colCnt]; for (auto &row : ia) {原创 2016-08-08 20:53:01 · 605 阅读 · 0 评论 -
第五章 5.1 简单语句
5.1什么是空语句?什么时候用到空语句?空语句是只有一个分号的语句,语法上需要但是逻辑上不需要时使用空语句。5.2什么是块?什么时候用到块?花括号扩起来的语句就是块,语法上需要一条,逻辑上需要多条时使用块。5.3while (val < 10) sum += val, ++val;原创 2016-08-20 10:02:45 · 1776 阅读 · 0 评论 -
第四章 4.1 基础
4.1 表达式 5 + 10 * 20 / 2的求值结果是多少? 等价于5 + ((10 * 20) / 2) = 1054.2*vec.begin() 等价于 *(vec.begin()) (*(vec.begin()) + 1)原创 2016-08-09 21:53:59 · 755 阅读 · 0 评论 -
第五章 5.4 迭代语句
5.19编写一段程序,使用do while循环重复的执行下述任务:首先提示用户输入两个string对象,然后挑出较短的那个并输出它。/************************************************************************* > File Name: exp5_19.cpp > Author: vadon > Mail原创 2016-08-21 18:58:43 · 528 阅读 · 0 评论 -
第五章 5.5 跳转语句
5.20/************************************************************************* > File Name: exp5_20.cpp > Author: vadon > Mail: vadonmo@126.com > Created Time: 2016年08月21日 星期日 19时20分20秒原创 2016-08-21 22:35:11 · 491 阅读 · 0 评论 -
第四章 4.3 逻辑和关系运算符
#include <iostream>#include <string>using namespace std;int main(){ int num = 0; while (cin>>num && num != 42) { cout << num << endl; } return 0;}原创 2016-08-09 22:52:04 · 727 阅读 · 0 评论 -
第四章 4.4 赋值运算符
4.13 在下述语句中,当赋值完成后i和d的值分别是多少? int i; double d; d = i = 3.5;//i = 3,d = 3 i = d = 3.5;//i = 3, d = 3.5 、4.14 执行下述if语句后将发生什么情况?if(42 = i){}//err 字面值是右值if(i = 42){}//true4.15下面的赋值是非法的,为什么?应该如何修改?doub原创 2016-08-10 22:55:50 · 751 阅读 · 0 评论 -
第四章 4.5 递增和递减运算符
4.17说明前置递增运算符和后置递增运算符的区别。 前置:自增后返回自增的结果,不保留自增前的值。 后置:自增后返回自增前的结果。4.18如果P132那个输出vector对象元素的while循环使用前置递增运算符,将得到什么结果?auto pbeg = v.begin();while(pbeg != v.end() && *pbeg >=0) cout << *pbeg++ << en原创 2016-08-10 23:19:00 · 2177 阅读 · 0 评论 -
第六章 6.1 函数基础
6.3#include<iostream>using namespace std;int fact(int val){ int ret = 1; while (val > 1) { ret *= val --; } return ret;}int main(){ int j = fact(5); cout << "5! i原创 2016-08-22 21:43:31 · 733 阅读 · 0 评论 -
第三章 3.5.5 与旧代码的接口
3.41原创 2016-08-08 19:25:54 · 2460 阅读 · 0 评论 -
第三章 3.5.4 C风格字符串
3.37 #include #include using namespace std;int main(){ const char ca[] = { 'h', 'e', 'l', 'l', 'o' }; const char *cp = ca; while (*cp) { cout << *cp << endl; ++原创 2016-08-07 21:19:51 · 2618 阅读 · 5 评论 -
第三章 3.23
编写一段程序,创建一个含有10个整数的vector对象,然后使用迭代器将所有元素的值都变成原来的两倍。输出vector对象的内容,检验程序是否正确。#include #include using namespace std;int main(){ vector ivec{ 1, 2, 3, 4, 5, 6, 7, 8, 9 }; for (auto it = ivec.begin原创 2016-08-06 19:09:43 · 2254 阅读 · 0 评论 -
第三章 3.24
使用迭代器重做3.3.3的练习3.3.3读入一组整数并把它们存入一个vector对象,将每对相邻整数的和输出出来。改写你得程序,这次要求先输出第1个和最后一个元素的和,接着输出第2个和倒数第2个元素的和,以此类推。#include <iostream>#include <vector>using namespace std;int main(){ int num; vector<i原创 2016-08-06 20:06:10 · 2504 阅读 · 0 评论 -
第三章 3.20
读入一组整数并把它们存入一个vector对象,将每对相邻整数的和输出出来。改写你得程序,这次要求先输出第1个和最后一个元素的和,接着输出第2个和倒数第2个元素的和,以此类推。#include #include using namespace std;int main(){ int num; vector ivec; while(cin >> num){ ivec.原创 2016-08-06 18:28:49 · 2458 阅读 · 0 评论 -
第三章 3.21
请使用迭代器重做3.3.3节的第一个练习3.16:编写一段程序,把练习3.13中vector对象的容量和具体内容输出出来。3.13(a)vector v1;(b)vector v2(10);(c)vector v3;(10,42);(d)vector v4{10};(e)vector v5{10,42};(f)vector v6{10};(g)vector v7原创 2016-08-06 18:38:39 · 2386 阅读 · 0 评论 -
第三章 3.25 3.26
3.3.3划分数段的程序是使用下标运算符实现的,请利用迭代器改写程序并实现完全相同的功能。#include <iostream>#include <vector>using namespace std;int main(){ vector<unsigned> scores(11, 0); unsigned grade; while (cin >> grade) {原创 2016-08-06 20:55:34 · 2738 阅读 · 0 评论 -
第三章 3.5.1 定义和初始化内置数组
3.27 假设text_size是一个无参数的函数,它的返回值是int。请回答下列哪个定义是非法的?why?unsigned buf_size = 1024;int ia[buf_size];//err 不是常量表达式int ia1[4 * 7 - 14];//correctint ia2[txt_size()];//err 返回值不是常量表达式char st[11] = "fundamen原创 2016-08-06 23:40:53 · 2566 阅读 · 0 评论 -
第三章 3.5.2 访问数组元素
3.30指出下面代码的索引错误。constexpr size_t array_size = 10;int ia[array_size];for (size_t ix = 1; //下标应从0开始 ix <= array_size; //不能大于等于数组大小 ++ix){ ia[ix] = ix;}3.31编写一段程序,定义一个含有10个int的数组,令每原创 2016-08-07 00:21:39 · 2572 阅读 · 0 评论 -
第四章 4.6 成员访问运算符
4.20 假设iter的类型是vector < string > :: iterator,说明下面的表达式是否合法,如果合法,表达式的含义是什么?如果不合法,错在何处?(a)*iter++;//合法,等价于*(iter++)(b)(*iter)++;//不合法,*iter为string,不能直接++(c)*iter.empty();//不合法,等价于*(iter.empty())(d)iter原创 2016-08-18 20:49:13 · 746 阅读 · 0 评论 -
第三章 3.5.3 指针和数组
3.34假定p1和p2指向同一个数组中的元素,则下面程序的功能是什么?什么情况下该程序是非法的?p1 += p2 - p1;功能:把p2的值赋给p1,等价于p1 = (p2 - p1) + p1即 p1 = p2; 在p1和p2不指向同一个数组中元素的时候,程序非法。3.35 编写一段程序,利用指针将数组元素置为0。#include <iostream>#include <string>#in原创 2016-08-07 12:29:45 · 2321 阅读 · 0 评论 -
第四章 4.7 条件运算符
4.21 编写一段程序,使用条件运算符从vector< int > 中找到哪些元素的值是奇数,然后将这些奇数的值翻倍。#include <iostream>#include <vector>using namespace std;int main(){ vector<int> vint{ 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 }; for (auto &ite原创 2016-08-18 21:24:17 · 754 阅读 · 0 评论 -
第四章 4.8 位运算符
4.25 如果一台机器上int占32位,char占8位,用的是Latin-1字符集,其中字符’q’的二进制形式是01110001,那么表达式~’q’<<6的值是什么?~'q'<<6等价于(~'q')<<6则(~'q')=1111111111111111111111111000111,左移6位111111111111111111100011100000004.26在本节关于关于测验成绩的例子中,如原创 2016-08-18 23:53:39 · 660 阅读 · 0 评论 -
第六章 6.2 参数传递
6.10编写一个函数,使用指针形参交换两个整数的值。在代码中调用该函数并输出交换后的结果。#include<iostream>using namespace std;void changeAB(int *a, int *b);int main(){ int a = 5,b = 6; cout << "before:" << a << " " << b << endl; ch原创 2016-08-23 21:18:54 · 698 阅读 · 0 评论