The C++ Programming Language 第七章 作业

The C++ Programming Language 读书笔记 - Bjarne_Stroustrup 1979年,贝尔丝·斯托芬鲁普(Bjarne_Stroustrup)发表了著名的“C++和对象技术”论文,对C++语言的基础语法、数据结构、类和对象等进行了全面系统的阐述。近几十年来,随着C++作为高级编程语言在工程应用中的广泛接受,学习C++的读者越来越多,但是对于那些从事C++开发工作的人来说,了解C++的背景知识仍然是一个重要的前提。本书就是为了帮助读者理解并掌握C++的语言特性及其背后的原理,帮助读者快速熟悉C++语法和各种数据结构、算法的用法。 阅读详情

The C++ Programming Language 第七章 作业
james chen
050317

7.10.1
写出下面声明:一个函数,它以指向字符的指针和对整数的引用为参数,不返回值;一个指向这个函数的指针;一个以这种指针为参数的函数;以及一个返回这种指针的函数。写出一个函数的定义,它以一个这样的指针作为参数,并返回其参数作为返回值。
void f(char*,int&);
void (*g)(char*,int&);
typedef void (*h)(char*,int&)
void i(h);
h j(h);
------------------
#include<iostream>
using namespace std;
typedef void (*G)(char*,int&);  //定义函数指针
void f(char* a,int& b)   //目标函数
{
cout<<"a:"<<a<<endl;
cout<<"b:"<<b<<endl;
}
void i(G t,char* x,int& y)  //以函数指针为形参
{
t(x,y);
}
G h(G t)    //以函数指针为参数,返回一个函数指针
{return t;}
void main()
{
char a[]="i love you!!!";
int b=54321;
G p1=&f;
i(p1,a,b);
G p2=h(&f);
p2(a,b);
}


7.10.2
下面的代码是什么意思?他会有什么用处?
typedef int (&rifii)(int,int);
这是一个自定义类型,它引用一个函数,返回int,所引用的这个函数形参为两个int.
它可以将函数当变量来用,使用程序简化。例:
#include<iostream>
using namespace std;
typedef int(&rifii)(int,int);
int add(int a,int b)
{return a+b;}
int max(int a,int b)
{return (a>b)?a:b;}
void main()
{
 int a=10,b=15;
 rifii cx=add,cz=max;
 cout<<cz(a,b)<<endl;
 cout<<cx(a,b)<<endl;
}


7.10.3
写一个类似"hello world!"的函数,它以一个名字作为命令行参数,并写出"hello name"。修改这个函数,使它能以一系列名字作为参数,并对每个名字分别说hello。
#include<iostream>
using namespace std;
int main(int argc,char* argv[])
{
 for(int i=1;i<argc;i++)   //argv[0]为程序自身名字
  cout<<"hello,"<<argv[i]<<"!"<<endl;
 return 0;
}

D:/>7103 aaaa bbbb
hello,aaaa!
hello,bbbb!

7.10.7
考虑
struct Tnode{
 string word;
 int count;
 Tnode* left;
 Tnode* right;
};
写一个函数向Tnode的树中插入新单词。写一个函数将Tnode的树打印出来。写一个函数将Tnode的树按照单词的字典顺序打印出来。

#include<iostream>
#include<string>
#include<iomanip>
#include<vector>
#include<algorithm>
using namespace std;
////////////////////////////////////////////////////////
//  Tnode* newTnode(Tnode*)  //插入新节点
//  void printt(Tnode*)   //打印节点
//  void prints(Tnode*)   //按顺序打印节点
////////////////////////////////////////////////////////

struct Tnode
{
 string word;
 static int count;  //节点数置为静态全局变量
 Tnode* left;
 Tnode* right;
};
int Tnode::count = 0;   //初始化Tnode::count
Tnode* newTnode(Tnode* b)
{
 Tnode* a=new Tnode;
 cin>>a->word;
 a->right=0;
 a->count++;
 if(a->count<2)
  a->left=0;    //第一节点,左节点无为0
 else
  {
  a->left=b;    //新左节点等于原当前节点
  b->right=a;    //原右节点等于新节点
  }
 return a;
}
void printt(Tnode* temp)
{
 int n=temp->count;
 while(n--)
 {
  cout<<setw(10)<<temp->word<<":"<<temp->left<<","<<temp<<","<<temp->right<<endl;    
  temp=temp->left;
 }
}
void prints(Tnode* temp)
{
 vector<string> cxbb;
 int n=temp->count;
 while(n--)
 {
  cxbb.push_back(temp->word);
  temp=temp->left;
 }
 sort(cxbb.begin(),cxbb.end());    //排序
 vector<string>::iterator cz;
 for(cz=cxbb.begin();cz!=cxbb.end();cz++)
  cout<<*cz<<endl;
}
int main()
{
 Tnode* curr;
 int n=5;
 while(n--)curr=newTnode(curr);
 printt(curr);     //打印节点
 prints(curr);     //按单词顺序打印 
 return 0;
}


zzzz
ddd
sasd
yyyy
ffff
      ffff:00370D10,00372478,00000000
      yyyy:00370C70,00370D10,00372478
      sasd:00370988,00370C70,00370D10
       ddd:00371B88,00370988,00370C70
      zzzz:00000000,00371B88,00370988
ddd
ffff
sasd
yyyy
zzzz
Press any key to continue


7.10.9
写一个加密程序,它从cin输入,并将编码后的字符序列写到cout。可以采用如下的简单加密模式:字符c的加密形式是c^key[i],其中key是通过命令行参数提供的一个字符串。这个程序以循环的方式使用key中的字符,直到读完全输入。用同一个key重新加密编码后的正文就能得到原来的正文。如果不提供key则不加密。

#include<iostream>
using namespace std;
void enc(char s,char* key)
{
 char x;
 while(*key!=0)
 {
  x=s^*key++;
  cout<<x;
 }
 cout<<endl;
}
int main(int argc,char* argv[])
{
 if(argc>1)
  enc('s',argv[1]);
 return 0;
}

D:/>7109 2342
A@GA
D:/>7109 A@GA
2342
D:/>7109
D:/>

7.10.16
实现7.5节的print,void print(int value,int base=10),base为基数,实现16,2进制输出
#include<iostream>
using namespace std;
void bb(int a)
{
 int n=a/2,t=a%2;
 if(n>1)
  {bb(n);cout<<t;}
 else
  cout<<n<<t;
}
void aa(int a)
{ 
 int n=a/16,t=a%16;
 if(n>16)aa(n);
 if(n<10)cout<<n;
  else cout<<char(n+55);
 if(t<10)cout<<t;
  else cout<<char(t+55);
 cout<<endl;
}
void print(int value,int base=10)
{
 switch(base)
 {
 case 10:
  cout<<value<<endl;
  break;
 case 16:
  aa(value);
  break;
 case 2:
  bb(value);
  cout<<endl;
  break;
 default:
  cout<<"error!!"<<endl;
 }
}
void main()
{
print(192);
print(192,10);
print(192,16);
print(192,2);
print(192,3);
}

192
192
C0
11000000
error!!
Press any key to continue


7.10.18
写一个不用递归的阶乘函数。
#include<iostream>
using namespace std;
int bb(int a)      //循环求阶乘
{
 int temp=a;
 while(a-->1)temp*=a;
 return temp;
}
int aa(int a)      //递归求阶乘
{
 return (a>1)?a*aa(a-1):1;
}
void main()
{
 cout<<aa(4)<<endl;
 cout<<aa(5)<<endl;
 cout<<bb(4)<<endl;
 cout<<bb(5)<<endl;
}

24
120
24
120
Press any key to continue

The C++ Programming Language习题答案(清晰版) djvu格式,短小精悍!欢迎大家下载,一起分享~~~~~~~ 立即下载

相关推荐

The C++ Programming Language课后习题答案

<<C++ solution>>里面的源代码。就是是The C++ PL 特别版的课后题答案。有谁知道<<C++ solution>>哪里有卖么?知道的话请帮忙告诉我一声。

The+C+Programming+Language 练习1-16原书答案

#include <stdio.h> #define MAXLINE 1000 /* maximum input line size */ int getline(char line[], int maxline); void copy(char to[], char from[]); /* printf longest input line */ int main() { i...

fuhuangjjj的博客 885

The c++ programming language习题答案

c++之父编写的《c++程序设计语言》课后习题的源程序

《C程序设计语言》(《The C Programming Language》)第二版第七章练习题

7-1: 编写一个程序,根据它自身被调用时存放在argv[0]中的名字,实现将大写字母转换为小写字母或将小写字母转换为大写字母的功能 /*gcc编译时会生成一个名为a.exe的程序,我们以前在命令行参数程序中argv[0]输入的就是a.exe 此处采用gcc的-o命令改变生成的程序文件名,例如以前输入gcc xxx.c生成a.exe程序文件,现在采用-o命令, 输入gcc xxx.c -o u生成...

m0_46655998的博客 712

《The C++ Programming Language》课后习题解答

《The C++ Programming Language》课后习题解答,都为源文件

《The c++ programming language 》的习题答案

《The c++ programming language 》的习题答案

【C++】typedef的高级用法---简化复杂函数声明

文章目录常规变量、指针、数组别名函数声明 常规变量、指针、数组别名 typedef signed char int8_t固定大小的数据类型宏定义,一个字节八位 typedef char *pChar typedef char pChar[10] 函数声明 对于typedef void (*fp) (int);,其中fp代表一个函数指针,可用于简化某些复杂函数的声明。 比如对于信号处理signal函数,接受两个参数: 需要“被捕获”的特定signal的整数值,类型为int 指向用户提供函数的指针,类型为

vict_wang的博客 1682

THE C++ PROGRAMMING LANGUAGE课后习题答案

关于C++ programming language课后习题答案的完整版本

The C++ Programming Language 第七章 笔记

The C++ Programming Language 第七章 笔记james chen050311*********************7.1 函数声明*********************在一个函数声明中,需要给出函数的名字,这个函数返回的值的类型(如果有的话),以及在调用这个函数时必须提供的参数的个数和类型。在函数声明中可以包含参数的名字,这样做可能对读程序的人有所帮助,但编译器将

xchenbb的专栏 1442

轴承寿命预测实战:手把手教你用IEEE PHM2012数据集训练模型(附Python代码)

本文详细介绍了如何利用IEEE PHM2012数据集构建轴承剩余寿命预测模型,从数据预处理、特征工程到LSTM模型训练与部署,提供了完整的Python代码实现。通过实战案例,帮助读者掌握预测性维护中的关键技术,提升工业设备的运行安全与效率。

weixin_29186249的博客 311

《最游记》游戏开发全栈指南:从源码解析到实战部署

本文提供了一份详尽的《最游记》游戏源码全栈开发指南。文章深入解析了这款3D玄幻网游的完整源码结构,涵盖客户端、服务端、引擎和工具链,并提供了从环境搭建、核心模块解析到实战修改与部署的完整流程。对于希望深入理解MMORPG架构的开发者而言,这份指南是宝贵的实战资源。

weixin_28363123的博客 72

《c primer plus》、《The c programming language》中文译本,dev-c++编译器

如果你学c不只是为了考试的话,这两本最经典的c语言教程可能能帮到你 刚学c语言,用的谭浩强,谭老师的书,结果把书上原本的代码打到编译器上却总是出错{error},百度发现网上都是对谭老师这本书一面倒的负面评价。 但 如果你们学校规定的教材就是谭浩强的《c语言程序设计》,为了考试的话,那还是要看教材的,如果想对c理解的更深刻的话,这两本可以挑一本作为辅助提升。《c primer plu...

liloch的博客 1550

RK3588设备树节点实战:从零配置音频与显示模块(ES8388+DSI0)

本文详细介绍了在RK3588平台上配置音频编解码器ES8388和显示接口DSI0的设备树节点实战。通过具体案例拆解设备树节点的编写逻辑与调试技巧,包括音频路由与声卡配置、DSI控制器基础配置、视频通路路由配置以及电源管理与时钟树设计。文章还提供了调试工具与实战技巧,帮助开发者快速解决常见问题。

weixin_42525637的博客 353

The C++ Programming Language

 The C++ Programming LanguageClick below to go directly to a specific section:History | Significant Language Features | Areas of Application | Sample Programs Related Links | Printed References |

小发猫 2393

F28335 DSP ePWM模块实战:从基础配置到电机控制

本文详细解析了TI TMS320F28335 DSP的ePWM模块,从基础概念、寄存器配置到实战应用。通过代码示例,手把手教你如何配置定时中断、生成PWM波形、实现死区保护与故障联防,并最终完成一个可调速、可换向的直流电机控制项目,是掌握F28335电机控制核心技术的实战指南。

g5h6i的博客 1128

近几年预训练语音大模型汇总

语音大模型研究近年来取得显著进展,主要包括wav2vec 2.0(2020)、HuBERT(2021)、WavLM(2022)、Data2Vec(2022)、Whisper(2023)等代表性工作。这些模型采用自监督学习框架,通过掩码预测、对比学习等策略在大规模语音数据上预训练,可有效应用于语音识别、情感分析、疾病检测等下游任务。其中wav2vec 2.0首次将对比学习引入语音领域,Whisper通过68万小时弱监督数据实现强大的跨语言能力。这些突破为低资源语音任务提供了通用特征提取方案,推动了医疗语音分析

victory0431的博客 1780

读The C++ programming language感受。

最近有想学C++的想法,在书店看到The C++ programming language就拿回来了。后来上网看,大家都说这个不适合入门,但是买完了(很贵的!),就的看了!     个人觉得群众的眼睛是雪亮的!真书还真不适合入门。我几乎每章都要看4~5遍,才能弄明他。幸好有强大的C基础。还有电子版的C++ Primer辅助。要不真是没法看了!感觉C++的语法真是太复杂了,默认的东西也多!都要把我

zcsoft 1747

干货满满!AI应用架构师分享AI驱动虚拟展示干货

虚拟展示(Virtual Presentation):用数字技术将物理对象/场景转化为可交互的虚拟内容(比如3D文物、虚拟试衣间);AI驱动(AI-Powered):通过AI技术实现实时交互、智能决策、个性化生成,让虚拟内容“活”起来;AI驱动虚拟展示:以用户体验为核心,将“3D渲染+AI理解+实时数据”融合,形成“感知-决策-反馈”的闭环系统。前端交互层是用户直接体验到的部分,再厉害的AI和渲染,只要前端交互烂,用户都会跑。我见过很多团队为了“炫技”做了复杂的AI功能,结果用户不会用。

AI大模型应用之禅 536

The C++ Programming Language 第六章 作业

The C++ Programming Language 第六章 作业 james chen/200503 6.6.1 将下面的for循环重写为采用while循环的等价形式 for(i=0;iif(input_line[i]==?)quest_count++; 重写这个片段,用一个指针作为被控制变量,其检测采用*p==?的形式.. int i=0; while(max_length--)

xchenbb的专栏 1794

生成模型实战 | 基于Transformer生成音乐

本文介绍了基于Transformer架构的音乐生成方法,将音乐视为一系列事件序列进行处理。与将音乐表示为多维图像的MuseGAN不同,该方法使用类似GPT的仅解码器模型,基于先前事件预测下一个音乐事件。模型使用MIDI格式的钢琴音乐数据,通过分词处理将音符转换为note-on、note-off、time-shift和velocity四种事件类型,共388个独特词元,映射为索引序列后输入网络。训练完成后,可通过调整温度参数控制生成音乐的新颖性,从而创作出风格类似训练数据且连贯逼真的音乐作品。

盼小辉丶的博客 5856

【固态变压器(SST)全维度解析】发展历史、技术、玩家、挑战与数据中心趋势

SST正处于技术突破向规模化商用的关键过渡期,随着SiC/GaN器件降价、标准完善、可靠性数据积累,其在数据中心的渗透率将快速提升。短期(2025 - 2027年)以示范项目为主,中长期(2030年后)有望成为超大规模智算中心的主流供电方案。

昔时扬尘处 2127

谁应该去读 C++ Programming Language

最近在读 Bjarne Stroustrup The C++ Programming Language 第四版.  大学的时候买过第三版的特别版, 虽然看了,但是云里雾里的, 其实看了也没啥用, 到是C++ primer 第三版让我茅塞顿开. 很长很长时间以后, C++11发布了, The C++ Programming Language终于更新到了第四版. 边看, 感悟良多, Bja

SalmonRun的专栏 2669

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

阅读《The C++ Programming Language (Special Edition) 十周年中文纪念版》

C++之父Bjarne Stroustrup所著的《The C++ Programming Language (Special Edition)》堪称程序开发领域中的经典之经典,岂有不深刻拜读之理?以《The C++ Programming Language (Special E

xingpub的专栏 1202

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

The C++ Programming Language 第四章

The C++ Programming Language 第三章暂无

xchenbb的专栏 1002

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

The C++ Programming Language 第三章

The C++ Programming Language 第三章暂无

xchenbb的专栏 856
上一篇: The C++ Programming Language 第七章 笔记
下一篇: The C++ Programming Language 第八章 笔记
xchenbb
博客等级 码龄22年 20粉丝 17原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xchenbb

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值