当前位置: 首页 > 编程日记 > 正文

谭浩强《C++程序设计》书后习题 第十三章-第十四章

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

最近要复习一下C和C++的基础知识,于是计划把之前学过的谭浩强的《C程序设计》和《C++程序设计》习题重新做一遍。

编译环境为:操作系统32位Win7,编译工具VC++6.0

第十三章:输入输出流

10.1)输入三角形的三边边长a、b、c,通过海伦公式计算三角形面积,用cerr输出有关出错的信息

#include<iostream>
#include<cmath>using namespace std;int main()
{double a, b, c, s, area;cin >> a >> b >> c;if(a <= 0 || b <= 0 || c <= 0){cerr << "三角形每个边长应大于0" << endl;}else if(a + b <= c || a + c <= b || b + c <= a){cerr << "三角形两边之和须大于第三边" << endl;}else{s = (a + b + c) / 2.0;area = sqrt(s * (s - a) * (s - b) * (s - c));cout << "Area: " << area << endl;}return 0;
}

10.2)从键盘输入一批数值,要求保留3位小数,在输出时上下行小数点对齐

#include<iostream>using namespace std;int main()
{cout.setf(ios :: right);   //右对齐cout.setf(ios :: dec);     //十进制cout.setf(ios :: showpos); //对正数显示+号cout.setf(ios :: fixed);   //浮点数以定点格式输出double a;while(true){cout.precision(3); //实数精度3位cout.width(20);    //字段宽度10位cout.fill(' ');    //填充字符为' 'cin >> a;cout << a << endl;}cout.unsetf(ios :: right);   //取消右对齐cout.unsetf(ios :: dec);     //取消十进制cout.unsetf(ios :: showpos); //取消对正数显示+号cout.unsetf(ios :: fixed);   //取消浮点数以定点格式输出return 0;
}

10.3)编程序,在显示屏上显示一个字母B组成的三角形

#include<iostream>using namespace std;int main()
{int i, j;for(i = 0; i < 8; i++){//cout << i << ":";for(j = 8 - i - 1; j > 0; j--){cout.put(' ');}for(j = 0; j < i * 2 + 1; j++){cout.put('B');}cout << endl;}return 0;
}

10.4)建立两个磁盘文件f1.dat和f2.dat

1:从键盘键入20个整数,分别存在两个磁盘文件中,每个文件存10个

2:从f1.dat中读取10个数放在f2.dat的后面

3:对f2.dat中的20个整数进行排序

#include<iostream>
#include<fstream>
#include<cstdlib>using namespace std;int main()
{int a[20], i, j, temp;//样例输入 1 3 5 7 9 11 13 15 17 19 18 16 14 12 10 8 6 4 2 0cout << "请输入20个整数:";//输入10个数存入f1.datofstream outfile1("f1.dat", ios :: out);if(!outfile1){cerr << "f1.dat 打开错误" << endl;exit(1);}for(i = 0; i < 10; i++){cin >> a[i];outfile1 << a[i] << " ";}outfile1.close();//输入10个数存入f2.datofstream outfile2("f2.dat", ios :: out);if(!outfile2){cerr << "f2.dat 打开错误" << endl;exit(1);}for(i = 10; i < 20; i++){cin >> a[i];outfile2 << a[i] << " ";}outfile2.close();//从f1.dat中读入10个数存到f2.dat后ifstream infile1("f1.dat", ios :: in);if(!infile1){cerr << "f1.dat 打开错误" << endl;exit(1);}ofstream outfile3("f2.dat", ios :: out | ios :: app);if(!outfile3){cerr << "f2.dat 打开错误" << endl;exit(1);}for(i = 0; i < 10; i++){infile1 >> temp;outfile3 << temp << " ";}infile1.close();outfile3.close();//将f2.dat中的20个数排序后写回//读取20个数ifstream infile2("f1.dat", ios :: in);if(!infile2){cerr << "f1.dat 打开错误" << endl;exit(1);}for(i = 0; i < 20; i++){infile2 >> a[i];}infile2.close();//排序for(i = 0; i < 20; i++){for(j = i + 1; j < 20; j++){if(a[i] > a[j]){temp = a[i];a[i] = a[j];a[j] = temp;}}}//将排序后的数字写回ofstream outfile4("f2.dat", ios :: out);if(!outfile4){cerr << "f2.dat 打开错误" << endl;exit(1);}for(i = 0; i < 20; i++){outfile4 << a[i] << " ";}outfile4.close();return 0;
}

10.5)编程实现下列功能

1:按职工号大小由小到大顺序将5个员工的数据(包括号码、姓名、年龄、工资)输出到磁盘文件中保存

2:从键盘输入两个员工数据,增加到文件末尾

3:从键盘键入一个号码,从文件中查找数据,如果有则输出职工数据,没有则输出“查无此人”

#include<iostream>
#include<fstream>
#include<cstdlib>
#include<string>using namespace std;//职工
struct Person
{int m_Id;string m_Name;int m_Age;int m_Wage;Person(int i, string n, int a, int w): m_Id(i), m_Name(n), m_Age(a), m_Wage(w) { }void PrintInfo(){cout << "===================" << endl;cout << "Id:\t" << this -> m_Id << endl;cout << "Name:\t" << this -> m_Name << endl;cout << "Age:\t" << this -> m_Age << endl;cout << "Wage:\t" << this -> m_Wage << endl;cout << "===================" << endl;}
};Person *p[5] = 
{new Person(101, "Tsybius", 23, 7100),new Person(102, "Galatea", 21, 6600),new Person(105, "Quintus", 15, 5000),new Person(104, "Aurelia", 20, 8000),new Person(103, "Julius", 30, 5050)
};int main()
{//对5组数据按ID进行排序int i, j;Person *temp;for(i = 0; i < 5; i++){for(j = i + 1; j < 5; j++){if(p[i] -> m_Id > p[j] -> m_Id){temp = p[i];p[i] = p[j];p[j] = temp;}}}//将排好序的数据存入到文件f.datofstream outfile1("f.dat", ios :: out);if(!outfile1){cerr << "f.dat 打开错误" << endl;exit(1);}for(i = 0; i < 5; i++){outfile1 << p[i] -> m_Id << " " << p[i] -> m_Name << " "<< p[i] -> m_Age << " "<< p[i] -> m_Wage << endl;}outfile1.close();//再写入两个职工信息//示例输入 108 Titus 40 4000 109 Tulius 35 5000cout << "请输入2个职工信息:";ofstream outfile2("f.dat", ios :: out | ios :: app);if(!outfile2){cerr << "f.dat 打开错误" << endl;exit(1);}temp = new Person(0, "", 0, 0);cin >> temp -> m_Id >> temp -> m_Name >> temp -> m_Age >> temp -> m_Wage;outfile2 << temp -> m_Id << " "<< temp -> m_Name << " "<< temp -> m_Age << " "<< temp -> m_Wage << endl;cin >> temp -> m_Id >> temp -> m_Name >> temp -> m_Age >> temp -> m_Wage;outfile2 << temp -> m_Id << " "<< temp -> m_Name << " "<< temp -> m_Age << " "<< temp -> m_Wage << endl;outfile2.close();//输出文件中的全部职工数据ifstream infile1("f.dat", ios :: in);if(!infile1){cerr << "f.dat 打开错误" << endl;exit(1);}for(i = 0; i < 7; i++){infile1 >> temp -> m_Id >> temp -> m_Name >> temp -> m_Age >> temp -> m_Wage;temp -> PrintInfo();}infile1.close();//输入一个ID检测是否存在int id;cout << "请输入一个ID:";cin >> id;bool isFound = false;ifstream infile2("f.dat", ios :: in);if(!infile2){cerr << "f.dat 打开错误" << endl;exit(1);}for(i = 0; i < 7; i++){infile2 >> temp -> m_Id >> temp -> m_Name >> temp -> m_Age >> temp -> m_Wage;if(temp -> m_Id == id){temp -> PrintInfo();isFound = true;break;}}if(!isFound){cerr << "没有找到这个人" << endl;}infile2.close();return 0;
}

10.6)在例13.17的基础上,修改程序,将存在在c数组中的数据读入并显示出来

#include<iostream>
#include<strstream>using namespace std;struct Student
{int m_Num;char m_Name[20];float m_Score;
};int main()
{Student stud[3] = { 1001, "Li", 78, 1002, "Wang", 89.5f, 1004, "Fun", 90 };//将信息存入到字符串中char c[50];ostrstream strout(c, sizeof(c));int i;for(i = 0; i < 3; i++){strout << stud[i].m_Num << " "<< stud[i].m_Name << " " << stud[i].m_Score << " ";}strout << ends;cout << "array c:" << c << endl;//从字符串中读取信息Student stud2[3];istrstream strin(c, sizeof(c));for(i = 0; i < 3; i++){strin >> stud2[i].m_Num >> stud2[i].m_Name >> stud2[i].m_Score;cout << stud2[i].m_Num << " " << stud2[i].m_Name << " " << stud2[i].m_Score << endl;}return 0;
}

第十四章:输入输出流

14.1)求一元二次方程ax^2+bx+c=0的实根,如果方程没有实根,则输出有关警告信息

#include<iostream>
#include<cmath>using namespace std;int main()
{double a, b, c, delta;cin >> a >> b >> c;try{//计算Δdelta = b * b - 4 * a * c;if(delta < 0){throw delta;}//求根double x1 = (-1 * b + sqrt(delta)) / (2 * a);double x2 = (-1 * b - sqrt(delta)) / (2 * a);cout << "x1=" << x1 << ";x2=" << x2 << endl;}catch(double){//Δ<0的情况cout << "b^2-4ac=" << delta << "<0" << endl;cout << "方程无实根" << endl;}cout << "程序运行完毕" << endl;return 0;
}

14.3)在两个命名空间中实现Student类

#include<iostream>
#include<string>using namespace std;namespace ns1
{struct Student{int m_ID;string m_Name;int m_Age;string m_Addr;//构造函数Student(int id, string na, int ag, string ad): m_ID(id), m_Name(na), m_Age(ag), m_Addr(ad) { }}stud[3] = {Student(101, "Tsybius", 23, "XXX"),Student(102, "Galatea", 21, "YYY"),Student(103, "Aurelia", 22, "ZZZ")};
}namespace ns2
{struct Student{int m_ID;string m_Name;char m_Sex;string m_Addr;//构造函数Student(int id, string na, char sx, string ad): m_ID(id), m_Name(na), m_Sex(sx), m_Addr(ad) { }}stud[3] = {Student(101, "Tsybius", 'm', "XXX"),Student(102, "Galatea", 'f', "YYY"),Student(103, "Aurelia", 'f', "ZZZ")};
}int main()
{int id;cout << "请输入一个ID:";cin >> id;//搜索内容ns1 :: Student *s1;ns2 :: Student *s2;for(int i = 0; i < 3; i++){if(ns1 :: stud[i].m_ID == id){s1 = &(ns1 :: stud[i]);}if(ns2 :: stud[i].m_ID == id){s2 = &(ns2 :: stud[i]);}}cout << "ID:\t" << s1 -> m_ID << endl;cout << "Name:\t" << s1 -> m_Name << endl;cout << "Age:\t" << s1 -> m_Age << endl;cout << "Sex:\t" << s2 -> m_Sex << endl;cout << "Addr:\t" << s1 -> m_Addr << endl;return 0;
}

END

转载于:https://my.oschina.net/Tsybius2014/blog/314958

相关文章:

图像处理库(fbc_cv):源自OpenCV代码提取

在实际项目中会经常用到一些基本的图像处理操作&#xff0c;而且经常拿OpenCV进行结果对比&#xff0c;因此这里从OpenCV中提取了一些代码组织成fbc_cv库。项目fbc_cv所有的代码已放到GitHub中&#xff0c;地址为 https://github.com/fengbingchun/OpenCV_Test &#xff0c;它…

Swift2.x编写NavigationController动态缩放titleView

这两天看到一篇文章iOS 关于navigationBar的一些..中的动态缩放比较有意思,看了一下源码,然后用Swift写了一下,使用storyboard实现. 效果图: 部分代码: 设置滑动代理 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26/**设置滑动代理- parameter scrollV…

云厂商和开源厂商“鹬蚌相争”,他却看到了开发者的新机会

作者 | 夕颜出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;【导读】过去一年&#xff0c;开发者生态发生了一些或巨大、或微妙的变化&#xff0c;大的变化如巨头云厂商正在通过开源、收购等方式争夺开发者生态&#xff0c;比如微软以 75 亿美金收购 GitHub&#xff…

Error: could not open 'D:\Program Files\Java\jre7\lib\amd64\jvm.cfg'

重装JDK后&#xff0c;因为没有装在以前的目录&#xff0c;运行java命令后报错&#xff0c;环境变量的设置都没有问题。解决方法&#xff1a;删除c:/windows/system32/目录下的java.exe 、javaw.exe、javaws.exe&#xff0c;找不到的话在C:\Windows\SysWOW64下找。删除三个文件…

循环神经网络(RNN)简介

人工神经网络介绍参考&#xff1a; https://blog.csdn.net/fengbingchun/article/details/50274471 卷积神经网络介绍参考&#xff1a; https://blog.csdn.net/fengbingchun/article/details/50529500 这里在以上两篇基础上整理介绍循环神经网络&#xff1a; 前馈网络可以…

Swift 中 10 个震惊小伙伴的单行代码

几年前&#xff0c;函数式编程的复兴正值巅峰&#xff0c;一篇介绍 Scala 中 10 个单行函数式代码的博文在网上走红。很快地&#xff0c;一系列使用其他语言实现这些单行代码的文章也随之出现&#xff0c;比如 Haskell&#xff0c;Ruby&#xff0c;Groovy&#xff0c;Clojure&a…

满12万送Mate 30 Pro?华为云“双十一”20+款明星产品齐上线

双十一这次是真的真的真真真来了&#xff0c;华为云11.11血拼风暴一促即发&#xff01;想好怎么玩转双十一了嘛&#xff1f;怎么买到低价高性价比的云主机&#xff1f;怎么抽到100%中奖的礼品&#xff1f;怎么当欧皇被免单&#xff1f;不仅红包、折扣、特惠、满赠、抽奖一样都没…

javascript json对象转字符串形式

2019独角兽企业重金招聘Python工程师标准>>> /*** json对象转字符串形式*/function json2str(o) {var arr [];var fmt function(s) {if (typeof s object && s ! null) return json2str(s);return /^(string|number)$/.test(typeof s) ? "" …

使用 NSURLSession 开发一个支持后台下载和断点续传的下载工具

NSURLSession 是 iOS 系统提供给我们的原生网络操作库&#xff0c;它提供了网络操作相关的一系列特性支持&#xff0c;比如缓存控制&#xff0c;Cookie管理&#xff0c;HTTP 认证处理等等&#xff0c;是一套整体的网络操作处理解决方案。 关于 NSURLSession 的基本特性&#xf…

SSHDroid及sshpass简介

一、SSHDroid简介 SSH为Secure Shell的缩写&#xff0c;是建立在应用层基础上的安全协议。SSH是目前较可靠&#xff0c;专为远程登录会话和其他网络服务提供安全性的协议。利用SSH协议可以有效防止远程管理过程中的信息泄露问题。SSH客户端适用于多种平台&#xff0c;几乎所有…

漫画:我用深度学习框架画下女朋友最美的脸

这不&#xff0c;又一个程序员为爱变身灵魂画手&#xff0c;看得我都想学画画了。阿华是幸运的&#xff0c;因为他找到了对的方法&#xff0c;事半功倍&#xff0c;最终有情人终成眷属。这也得益于 PyTorch 的易学易用&#xff0c;大多数人第一次使用 PyTorch 几乎可以做到无痛…

吴恩达老师深度学习视频课笔记:循环神经网络

Why sequence models?&#xff1a;序列数据例子&#xff0c;如下图&#xff1a;(1).语音识别(speech recognition)&#xff1a;给定一个输入音频片段X&#xff0c;并要求输出片段对应的文字记录Y&#xff0c;这里输入和输出都是序列数据(sequence data)。因为X是按时序播放的音…

周伯文对话斯坦福AI实验室负责人:下一个NLP前沿是什么?

出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;10 月 31 日&#xff0c;在北京智源大会上&#xff0c;京东集团副总裁兼人工智能事业部总裁、智源-京东联合实验室主任周伯文&#xff0c;斯坦福人工智能实验室负责人&#xff08;SAIL&#xff09;Christopher Manning…

IOS8中SWIFT 弹出框的显示

弹出框不管是在网页端,还是在手机APP端,都是常用的控件.在网页中实现个简单的弹出框只需要调用alert,在IOS中,也不是那么复杂,也是容易使用的. 我先用xcode6创建一个名为iOS8SwiftAlertViewTutorial,设置好相关的信息. 在Storyboard中调整好视图显示方式 拖动一个按钮到主视图…

Maven学习笔记(二) :Maven的安装与配置

在Windows上安装Maven&#xff1a; 1. 首先检查安装JDK通过命令行运行命令&#xff1a;echo %JAVA_HOME%和java -version&#xff0c;能够查看当前java的安装文件夹及java的版本号&#xff0c;maven要求JDK的版本号必须在1.4以上。2. 下载Maven前往maven的下载页面:http://ma…

swift闭包

其实闭包就是函数 作为条件的函数 闭包表达式 首先声明一个数组 <code class"hljs cs has-numbering" style"display: block; padding: 0px; background-color: transparent; color: inherit; box-sizing: border-box; font-family: Source Code Pro, mono…

吴恩达老师深度学习视频课笔记:自然语言处理与词嵌入

Word representation&#xff1a;词嵌入(word embedding)&#xff0c;是语言表示的一种方式&#xff0c;可以让算法自动理解一些类似的词比如男人、女人&#xff0c;国王、王后等。通过词嵌入的概念&#xff0c;即使你的模型标记的训练集相对较小&#xff0c;也可以构建NLP(自然…

高文院士:为什么中国的AI发展必须要有开源开放平台?

出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;10 月 31 日&#xff0c;由北京智源人工智能研究院主办的 2019 北京智源大会在国家会议中心开幕&#xff0c;本次大会围绕人工智能基础研究现状及面临的机遇和挑战、人工智能技术未来发展的核心方向等话题&#xff0c;…

libcurl断点下载遇到的问题

最近游戏把资源&#xff08;图片、配置、lua&#xff09;的加载、更新全部改了 &#xff0c;加载其实还好&#xff0c;就是不走之前的zip解压方式。 以前的大体流程&#xff1a; 下载 –> 启动 –> 解压 –> 更新 –> 进入游戏 现在的大体流程&#xff1a; 下载 –…

sqlite3数据的使用(xcode 7,ios9)

由于考虑将来还要开发Android版本app&#xff0c;为了移植方便&#xff0c;所以使用了sqlite3来做数据持久化&#xff0c;到时候把sql语句拷过去还能用。 1、 首先用xcode载入sqlite3类库 选择工程的TARGETS-build phases-link binary with libraries&#xff0c;点击“”按钮&…

吴恩达老师深度学习视频课笔记:序列模型和注意力机制

基础模型&#xff1a;比如你想通过输入一个法语句子来将它翻译成一个英语句子&#xff0c;如下图&#xff0c;seq2seq模型&#xff0c;用x<1>一直到x<5>来表示输入句子的单词&#xff0c;然后我们用y<1>到y<6>来表示输出的句子的单词&#xff0c;如何训…

七个开发者成就百亿市值公司?这个技术思路如今让阿里发扬光大

2015年&#xff0c;马云带领阿里巴巴集团的高管拜访了位于芬兰游戏公司supercell 这家公司开发出了《部落战争》、《皇室战争》、《海岛奇兵》等App端知名游戏图片来自多玩BBS社区但是&#xff0c;这么知名的游戏公司开发团队当时却不足7人&#xff01;整个团队好像cell一样&am…

Linux学习笔记之文件管理和目录管理类命令

在开始理解Linux文件管理和目录类命令之前&#xff0c;有必要先说一下&#xff0c;关于操作系统在计算机中都做了哪些工作。0、操作系统的工作1、文件管理&#xff0c;增删改查2、目录管理3、进程管理4、软件安装5、运行程序6、网络管理7、设备管理本次笔记介绍的是文件管理和目…

张钹、朱松纯、黄铁军等同台激辩:人工智能的“能”与“不能”

整理 | AI科技大本营编辑部出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;10 月 31 日&#xff0c;由北京智源人工智能研究院主办的 2019 北京智源大会在国家会议中心开幕&#xff0c;本次大会吸引了国际人工智能领域的顶级专家学者参加&#xff0c;围绕人工智能基础…

ssqlit3.0数据库使用方法

由于考虑将来还要开发Android版本app&#xff0c;为了移植方便&#xff0c;所以使用了sqlite3来做数据持久化&#xff0c;到时候把sql语句拷过去还能用。 1、 首先用xcode载入sqlite3类库 选择工程的TARGETS-build phases-link binary with libraries&#xff0c;点击“”按钮&…

GCC中通过--wrap选项使用包装函数

在使用GCC编译器时&#xff0c;如果不想工程使用系统的库函数&#xff0c;例如在自己的工程中可以根据选项来控制是否使用系统中提供的malloc/free, new/delete函数&#xff0c;可以有两种方法&#xff1a; (1). 使用LD_PRELOAD环境变量&#xff1a;可以设置共享库的路径&…

[原]对Linux环境下任务调度一点认识

我一直以来有一个误解&#xff0c;那就是在终端运行某个程序时&#xff0c;按下Ctrl D时我误以为就是杀死了这个进程&#xff0c;今天才知道原来不是。比如我利用libevent在Linux环境下写了一个网络监听程序&#xff0c;当启动程序之后&#xff0c;就会一直监听本地的6789端口…

决策树的C++实现(CART)

关于决策树的介绍可以参考&#xff1a; https://blog.csdn.net/fengbingchun/article/details/78880934 CART算法的决策树的Python实现可以参考&#xff1a; https://blog.csdn.net/fengbingchun/article/details/78881143 这里参考 https://machinelearningmastery.com/impl…

iOS开发-由浅至深学习block

作者&#xff1a;Sindri的小巢&#xff08;简书&#xff09; 关于block 在iOS 4.0之后&#xff0c;block横空出世&#xff0c;它本身封装了一段代码并将这段代码当做变量&#xff0c;通过block()的方式进行回调。这不免让我们想到在C函数中&#xff0c;我们可以定义一个指向函数…

Google和微软分别提出分布式深度学习训练新框架:GPipe PipeDream

【进群了解最新免费公开课、技术沙龙信息】作者 | Jesus Rodriguez译者 | 陆离编辑 | Jane出品 | AI科技大本营&#xff08;ID&#xff1a;rgznai100&#xff09;【导读】微软和谷歌一直在致力于开发新的用于训练深度神经网络的模型&#xff0c;最近&#xff0c;谷歌和微软分别…