字符串逆序&树深度&电话号码

1 给定一个句子(只包含字母和空格),将句子单词反序,单词间用空格间隔,前后没有空格

输入:"hello xiao mi"

输出:"mi xiao hello"

#include   
#include
#include
#include
using namespace std;

int ReverseWords(char *str, char *resultWords[])//记录单词个数及每个单词开始的首地址
{
	int wordStart = 0;//标记单词开始位
	int wordCount = 0;//计数单词个数
	char *tempWord[256];//存放每个单词的其起始地址
	for (int i = 0; str[i] != '\0'; i++)//遍历字符串,寻找单词
	{
		if (str[i] == ' ')//对空格进行标记,且将所有空格变为'\0',方便保存每一个单词
		{
			wordStart = 0;
			str[i] = '\0';
		}
		else
		{
			if (wordStart == 0)//若前一个是空格
			{
				wordStart = 1;
				tempWord[wordCount++] = &str[i];//存放单词开始的首地址
			}
		}
	}
	for (int j = 0; j < wordCount; j++)//遍历单词首地址,方便逆序输出
	{
		resultWords[j] = tempWord[wordCount - 1 - j];
	}
	return wordCount;
}


int main(void)
{
	char str[] = { '\0' };

	while (cin.getline(str, 256))
	{
		char *resultWords[256];//指针数组,用来存放结果单词的起始地址 
		int cnt = ReverseWords(str, resultWords);//调用函数
		for (int i = 0; i < cnt; i++)
		{
			cout << resultWords[i] << ' ';
		}
		cout << endl;
	}
	system("pause");
	return 0;

}
简便操作:将字符串完全反转,再反转单词!
#include  
#include  
using namespace std;
#define N 256

int main()
{
	char str[N] = { '\0' };
	char temp;
	cin.getline(str, 256);//输入一行字符串方式!!!
	int j = strlen(str) - 1;
	int i = 0, begin, end;
	//全盘逆序输出
	while(j>i)
	{
		temp = str[i];
		str[i] = str[j];
		str[j] = temp;
		i++;
		j--;
	}
	i = 0;
	while (str[i])//遍历整个数组
	{
		if (str[i] != ' ')//找单词的起终位,并进行反转
		{
			begin = i;
			while (str[i] && str[i] != ' ')
				i++;
			i = i - 1;
			end = i;				
		}
		while (begin < end)//单词调换位置
		{
			temp = str[begin];
			str[begin] = str[end];
			str[end] = temp;
			begin++;
			end--;
		}
		i++;
	}
	cout << str << endl;
	system("pause");
	return 0;
}


 
  

输入的第一行表示节点个数为n,节点的编号为0到n-1组成,下面是n-1行,每行有两个整数,第一个数表示父节点的编号,第二个数表示子节点的编号

输出树的高度,为一个整数。
样例输入:
5
0 1
0 2
1 3
1 4
样例输出: 3

#include   
#include
using namespace std;

int main() {
	int a, b, n, m = 0;
	int tree[1000] = { 0 }; /* 最大结点数+1 */
	scanf_s("%d", &n);
	while (scanf_s("%d%d", &a, &b) > 0) //输入过程中,输入结束以EOF结束,输出结果
	{
		tree[b] = tree[a] + 1;
		if (m < tree[b]) m = tree[b];
	}
	printf("%d", m + 1);
	system("pause");
	return 0;
}


3 手机号码分身功能:首先将手机号码中的每个数字加8取个位,然后使用对应大写字母代替("ZERO","TWO","THREE"......"NINE"),然后随机打乱这些字母,所生成的字符串即为电话号码对应的分身

#include 
#include 

using namespace std;

int main()
{
	int num;
	while (cin >> num)
	{
		string str;
		for (int i = 0; i> str;
			int arr[10] = { 0 };
			int len = str.length();
			int a = 0;
			while (a




你可能感兴趣的:(编程总结)