C++程序设计(PEARSON版)第三版10.2答案

本文介绍了一个C++程序,该程序能够接收两个字符串作为输入,并找出这两个字符串中的公共字符。程序首先比较两个字符串的长度,然后使用两层循环遍历每个字符串以确定公共字符的位置。最后,程序输出这些公共字符。

string commonChars(const string & s1,const string &s2)

编写测试程序,提示用户输入两个字符串,打印输出他们的公共字符。下面是样例运行:

Ex1:

Enter a string s1:abcd

Enter a string s2:aecaten
The common characters are ac

Ex2:

Enter a string s1:abcd

Enter a string s2:efg
No common characters

下面的代码在VS2017和Dev-C++上获得通过:

#include "pch.h"
#include <iostream>
#include<string>
#include<algorithm>
using namespace std;
bool compareBM(string s1, string s2)
{
	if (s1.length() >= s2.length())
		return true;
	else
		return false;
}
string refixed(string d)
{
	string::iterator it = d.begin();
	while (it != d.end())
	{
		for (string::iterator helper = it + 1; helper != d.end(); helper++) {
			if (*it == *helper)
			{
				d.erase(helper);
				helper--;
				// 为了使得最后一次字符被删除时,check2不会超出input1的范围。
			}
		}
		it++;
	}
	return d;
}
string commonChars(const string& s1, const string& s2)
{
	bool c;
	string b=s1,d=s1;
	c=compareBM(s1, s2);
	int a[100] = { 0 };
	int k=0;
	if (c == true)
	{
		for (unsigned int i=0;i<s1.length();i++)
		{
			for (unsigned int j = 0; j<s2.length(); j++)
			{
				if (s1[i] == s2[j])
				{
					a[k] = i;
						k++;
				}
			}
		}
					
	}
	else
	{
		for (unsigned int i = 0; i < s2.length(); i++)
		{
			for (unsigned int j = 0;j< s1.length(); j++)
			{
				if (s2[i] == s1[j])
				{
					a[k] = i;
					k++;
				}
			}
		}
	}
	if (k == 0)
		return "No common characters";
	if (c == true)
		b = s1;
	else b = s2;
	for (int i = 0; i < k; i++)
	{
		d[i] = b[a[i]];
	}
	for (int i = k; i < d.length(); i++)
	{
		d[i] = '\0';
	}
	d = refixed(d);
	return "The common characters are "+d;
}
int main()
{
	string s1, s2;
	cout << "Enter a string s1:";
	cin >> s1;
	cout << endl;
	cout << "Enter a string s2:";
	cin >> s2;
	cout<<commonChars(s1, s2);
	return 0;
}

 

目录 第1章 概述 1.1计算机程序设计语言的发展 1.2 面向对象的方法 1.3 面向对象的软件开发 1.4 信息的表示与存储 1.5 程序的开发过程 1.6 小结 习题 第2章 C++简单程序设计 2.1 C++语言概述 2.2 基本数据类型和表达式 2.3 数据的输入与输出 2.4 算法的基本控制结构 2.5 自定义数据类型 2.6 小结 习题 第3章 函数 3.1 函数的定义与使用 3.2 内联函数 3.3 带默认形参值的函数 3.4 函数重载 3.5 函数模板 3.6 使用C++系统函数 3.7 小结 习题 第4章 类与对象 4.1 面向对象的思想 4.2 面向对象程序设计的基本特点 4.3 类和对象 4.4 构造函数和析构函数 4.5 类的组合 4.6 类模板 4.7 面向对象标记 4.8 小结 习题 第5章 C++程序的结构 5.1 作用域与可见性 5.2 生存期 5.3 数据与函数 5.4 静态成员 5.5 友元 5.6 共享数据的保护 5.7 多文件结构和编译预处理命令 5.8 小结 习题 第6章 数组、指针与字符串 6.1 数组 6.2 指针 6.3 动态内存分配 6.4 字符串 6.5 小结 习题 第7章 继承与派生 7.1 继承与派生 7.2 访问控制 7.3 派生类的构造和析构函数 7.4 派生类成员的标识与访问 7.5 赋值兼容规则 7.6程序实例——用高斯消去法解线性方程组 7.7 程序实例——一个小型公司的人员信息管理系统 7.8 小结 习题 第8章 多态性 8.1 多态性概述 8.2 运算符重载 8.3 虚函数 8.4 抽象类 8.5 程序实例——用变步长梯形积分算法求解函数的定积分 8.6 程序实例——对一个小型公司的人员信息管理系统程序的改进 8.7 小结 习题 第9章 群体类 9.1 线性群体 9.2 C++标准库中的容器类 9.3 小结 习题 第10章 群体数据的组织 10.1 插入排序 10.2 选择排序 10.3 交换排序 10.4 顺序查找 10.5 折半查找 10.6 标准C++库中的算法 10.7 小结 习题 第11章 流类库与输入/输出 11.1 I/O流的概念 11.2 输出流 11.3 输入流 11.4 输入/输出流 11.5 小结 习题 第12章异常处理 12.1 异常处理的基本思想 12.2 C++异常处理的实现 12.3 异常处理中的构造与析构 12.4 小结 习题 第13章 MFC库与Windows程序开发概述 13.1 Windows的编程模式 13.2 MFC库简介 13.3 使用VisualC++开发Windows程序的步骤 13.4 小结 习题 参考文献
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值