以C++ Primer Plus为参考书籍,自身归纳知识点,加深记忆。仅供参考,DEV C++已通过编译运行

练习1

//golf.h
const int Len = 40;
struct golf
{char fullname[Len];int handicap;
};void setgolf(golf& g, const char* name, int hc);
int setgolf(golf& g);
void handicap(golf& g, int hc);
void showgolf(const golf& g);
//function part
#include<iostream>
#include<cstring>
#include"p1.h"void setgolf(golf& g, const char* name, int hc)
{strcpy_s(g.fullname,name);g.handicap = hc;
}
int setgolf(golf& g)
{using std::cout;using std::cin;cout << "Enter fullname: ";if (cin.getline(g.fullname, 40) && strlen(g.fullname))//空字符串不等于空格串,空字符串的strlen为0,空格串为1{cout << "Enter the handicap: ";cin >> g.handicap;cin.get();return 1;}else{cout << "error";return 0;}
}
void handicap(golf& g, int hc)
{g.handicap = hc;
}
void showgolf(const golf& g)
{using std::cout;using std::cin;using std::endl;cout << "  FULLNAME: " << g.fullname << endl;cout << "  HANDICAP: " << g.handicap << endl;
}
#include<iostream>
#include"p1.h"int main()
{golf golfar[3];golf golfacc;for (int i = 0; i < 3; ++i){if (!setgolf(golfar[i]))break;}setgolf(golfacc, "Ann Birdfree", 24);showgolf(golfacc);handicap(golfacc, 30);showgolf(golfacc);return 0;
}

练习2

#include<iostream>
#include<string>
#include<cctype>void strcount(const std::string str);int main()
{using namespace std;string input;cout << "Enter a line:\n";getline(cin, input);while (cin){strcount(input);cout << "Enter next line(empty line to quit):\n";getline(cin, input);}}void strcount(const std::string str)
{using namespace std;static int total = 0;int count = 0;if (str == "")cout << "BLANK!\n";else{for (int cnt = 0; cnt < str.size(); ++cnt)//str.size()返回所有非‘\0’字符的长度,与题设不符{if (isalpha(str[cnt]))++count;}total += count;cout << "\"" << str << "\" contains ";cout << count << " characters\n";cout << total << " characters total\n";}}

练习3
方法一

#include<iostream>struct chaff
{char dross[20];int slag;
};char buffer[500];int main()
{using namespace std;chaff* structsr = new(buffer)chaff[2];for (int i = 0; i < 2; ++i){cout << "Enter dross[20]: ";cin.getline(structsr[i].dross, 20);cout << "Enter slag: ";cin >> structsr[i].slag;cin.get();}for (int i = 0; i < 2; ++i){cout << "DROSS: " << structsr[i].dross << endl;cout << "SLAG: " << structsr[i].slag << endl;}return 0;
}

方法二

#include<iostream>struct chaff
{char dross[20];int slag;
};int main()
{using namespace std;chaff* ptr = new chaff[2];for (int i = 0; i < 2; ++i){cout << "Enter dross[20]: ";cin.getline(ptr[i].dross, 20);cout << "Enter slag: ";cin >> ptr[i].slag;cin.get();}for (int i = 0; i < 2; ++i){cout << "DROSS: " << ptr[i].dross << endl;cout << "SLAG: " << ptr[i].slag << endl;}delete[]ptr;return 0;
}

练习4

//p4.h
namespace SALES
{const int QUARTERS = 4;struct Sales{double sales[QUARTERS];double average;double max;double min;};void setSales(Sales& s, const double ar[], int n);void setSales(Sales& s);void showSales(const Sales& s);
}
//function part
#include<iostream>
#include"p4.h"namespace SALES
{void setSales(Sales& s, const double ar[], int n){double sum = 0;for (int i = 0; i < n; ++i){s.sales[i] = ar[i];sum += s.sales[i];}s.average = sum / n;double tempmax, tempmin;tempmax = tempmin = ar[0];for (int i = 0; i < n; ++i){if (tempmax < s.sales[i])tempmax = s.sales[i];if (tempmin > s.sales[i])tempmin = s.sales[i];}s.max = tempmax;s.min = tempmin;}void setSales(Sales& s){using std::cout;using std::cin;using std::endl;int cnt = 0;cout << "Enter sales array: ";while (cnt < QUARTERS && cin >> s.sales[cnt] )//顺序不可替换,否则会多一次录入,虽然录入并没有什么用++cnt;double sum = 0;for (int i = 0; i < cnt; ++i)sum += s.sales[i];s.average = sum / cnt;double tempmax, tempmin;tempmax = tempmin = s.sales[0];for (int i = 0; i < cnt; ++i){if (tempmax < s.sales[i])tempmax = s.sales[i];if (tempmin > s.sales[i])tempmin = s.sales[i];}s.max = tempmax;s.min = tempmin;}void showSales(const Sales& s){using namespace std;for (int i = 0; i < QURATES ; ++i)cout << "SALES[" << i << "]: " << s.sales[i] << endl;cout << "AVERAGE: " << s.average << endl;cout << "MAX: " << s.max << endl;cout << "MIN: " << s.min << endl;}
}
#include<iostream>
#include"p4.h"int main()
{using SALES::Sales;using SALES::setSales;using SALES::showSales;Sales test1;double arr[3] = { 1.3,6.2,2.8 };setSales(test1, arr, 3);//程序存在瑕疵,原因在于arr小于4个时,show也打印出4个,但是把showSales(test1);//后续部分都处理成0也貌似有点不妥的样子,所以大概就这样吧:)Sales test2;setSales(test2);showSales(test2);return 0;
}

2020 我的C++学习之路 C++PrimerPlus第九章课后习题相关推荐

  1. 2020 我的C++学习之路 C++PrimerPlus第十章课后习题

    以C++ Primer Plus为参考书籍,自身归纳知识点,加深记忆.仅供参考,DEV C++已通过编译运行 . 练习1 //p1.h #include<string>class Acco ...

  2. 2020 我的C++学习之路 C++PrimerPlus第八章课后习题

    以C++ Primer Plus为参考书籍,自身归纳知识点,加深记忆.仅供参考,DEV C++已通过编译运行 . 练习1:题目我是看了好久才反应过来,不得不说翻译的不太行 #include<io ...

  3. 2020 我的C++学习之路 C++PrimerPlus第十一章课后习题

    以C++ Primer Plus为参考书籍,自身归纳知识点,加深记忆.仅供参考,DEV C++已通过编译运行 .第5题第6题改写过于麻烦,机械性重复就不写了,写的犯恶心. 练习1 //p1.h #in ...

  4. 2020 我的C++学习之路 C++PrimerPlus第七章课后习题

    以C++ Primer Plus为参考书籍,自身归纳知识点,加深记忆.仅供参考,DEV C++已通过编译运行 . 练习1 #include<iostream> using namespac ...

  5. 2020 我的C++学习之路 C++PrimerPlus第六章课后习题

    以C++ Primer Plus为参考书籍,自身归纳知识点,加深记忆.仅供参考,DEV C++已通过编译运行 . 练习1 #include<iostream> #include<cc ...

  6. 2020 我的C++学习之路 C++PrimerPlus第五章课后习题

    以C++ Primer Plus为参考书籍,自身归纳知识点,加深记忆.仅供参考,DEV C++已通过编译运行 . 练习1 #include<iostream>int main() {int ...

  7. 2020 我的C++学习之路 C++PrimerPlus第四章课后习题

    以C++ Primer Plus为参考书籍,自身归纳知识点,加深记忆.仅供参考,DEV C++已通过编译运行. 练习1 #include <iostream> int main() {us ...

  8. MYSQL学习笔记(自用)第九章

    MYSQL学习笔记(自用)第九章 第一节. 触发器 | Triggers DELIMITER $$CREATE TRIGGER payments_after_insertAFTER INSERT ON ...

  9. Linux 鸟叔的私房菜 基础学习篇(第四版) 课后习题答案

    答案仅供参考,来源于本人和网上,并非绝对正确,请酌情参考! 文章目录 第零章 计算机概论 第一章 Linux是什么与如何学习 第二章 主机划分与磁盘分区 第三章 安装CentOs 7.x 第四章 首次 ...

最新文章

  1. MAC Android Studio| Error: The android gradle plugin version 3.0.0-alpha1 is too old
  2. NIO:channel、buffer、状态变量、socket、charset
  3. 分享一些好用的 Chrome 扩展
  4. python列表转dict
  5. CSS兼容性解决方法!important的IE7,Firefox问题
  6. python编程是啥-Python编程语言的特点是什么?老男孩Python学习
  7. 钉钉扫码登录第三方_e签宝联合钉钉升级产品功能,共建企业服务生态闭环
  8. 自媒体入门如何制作出优质视频,有这5款软件就够了
  9. 微信绑定的卡服务器,微信亲属卡有什么作用 微信亲属卡怎么绑定
  10. java 以2为底的对数_Java对数函数及Java对数运算
  11. Multispectral Deep Neural Networks for Pedestrian Detection(BMVC 2016)论文解读
  12. 【小白学Java】D14》》》ArrayList应用<两大案例的数据分组聚合>
  13. 简易应用服务器配置要求计算公式
  14. STM32实例-蜂鸣器实验
  15. linux 找u盘,linux系统怎样找到U盘?
  16. 迅为瑞芯微3399开发板Ubuntu系统-安装ssh
  17. 淘宝详情接口调用示例
  18. MySQL8使用with recursive实现递归
  19. 魔兽世界怀旧服十月最新服务器,10月12日魔兽世界经典旧世 怀旧服服务器的开放进展...
  20. 读书笔记 - 《天局》

热门文章

  1. Google zerotouch方案介绍
  2. android密码解锁/指纹解锁返回的authToken深度解剖
  3. Linux基础维护——笔记
  4. (51)SSDT HOOK 实现进程保护
  5. (32)第一个驱动程序
  6. 进程间通信——匿名管道
  7. 【网络安全】2022年第一次靶场渗透实战学习
  8. Python的一些技巧
  9. 【PAT乙级】1074 宇宙无敌加法器 (20 分)
  10. MySQL查看存储过程