数据结构第一章习题

1.16

#include "stdafx.h"
#include "iostream"
//2018_7_25,假设全是整数了,可以改数据类型
using namespace std;
int main()
{
	size_t a, b, c;
	cout << "please enter three number" << endl;
	cin >> a >> b >> c;
	if (a >= b)
	{
		if (a >= c)//a最大
		{
			cout << a << endl;
			if (b >= c)
			{
				cout << b << endl;
				cout << c << endl;
			}
			else
			{
				cout << c << endl;
				cout << b << endl;
			}
		}
		else//a比b大,比c小
		{
			cout << c << endl;
			cout << a << endl;
			cout << b << endl;
		}

	}
	else//a比b小
	{
		if (a >= c)
		{
			cout << b << endl;
			cout << a << endl;
			cout << c << endl;
		}
		else
		{
			if (c >= b)
			{
				cout << c << endl;
				cout << b << endl;
				cout << a << endl;
			}
			else
			{
				cout << b << endl;
				cout << c << endl;
				cout << a << endl;
			}
		}
	}
	system("pause");
	return 0;
	
}

1.17

#include "stdafx.h"
#include "iostream"
#include "stddef.h"
using namespace std;
void feibonaqi(int k, int n);
int main()
{
	cout << "请输入阶数与项数" << endl;
	int size, sequence;
	cin >> size >> sequence;
	feibonaqi(size, sequence);
	system("pause");
	return 0;
}

void feibonaqi(int k, int n)
{

	int number[999] = { 0 };//数组长度应该足够大,但不知道怎么申请足够大的空间
	for (int i = 0;i != k;i++)
	{
		if (i != k - 1) number[i] = 0;
		else number[i] = 1;
	}
	number[k] = 1;
	for (int j = k + 1;j != n + 1;j++)
	{
		for (int i = 0;i != k;i++)
			number[j] = number[j] + number[j - i - 1];//k项的和,找对应关系
	}
	cout << "result is " << number[n]<< endl;
}

1.20

#include "stdafx.h"
#include "iostream"
#include "stddef.h"
#include<vector>
using namespace std;
//2018_7_26 数据结构1.20 全部写在main函数里了...
int main()
{
	cout << "请输入各系数,初始值x0,系数个数n" << endl;
	vector<int> array1,array2;//一个用来放系数,一个用来放x的乘积
	int number,x0,n;
	while (cin >> number&&number!=99999)
		array1.push_back(number);
	auto begin = array1.begin(), end = array1.end();
	--end;//使end指向最后一个元素,因为原来指向最后一个元素后面的位置
	--end;//使end指向倒数第二个元素
	x0 = *end;
	end = end + 2;//end归位
	n = array1.size() - 2;


	//开始算x的乘积
	array2.push_back(1);
	array2.push_back(x0);
	for (int i = 2;i != n;i++)//共有n-2个x的乘幂,前两个不管,因为已经存好了
	{
		int product = x0;
		for (int j = 1;j != i;j++)//每个x的乘幂乘i次
		{
			product = product * product;
		}
		array2.push_back(product);
	}

	//开始计算系数和幂的乘积
	int sum=0;
	auto begin2 = array2.begin(), end2 = array2.end();
	sum = sum + (*begin);
	++begin;
	sum = sum + (*begin)*x0;
	++begin;
	begin2 = begin2 + 2;//从第三项开始配对
	while (begin2 != end2)
	{
		sum = sum + (*begin)*(*begin2);
		++begin;
		++begin2;
	}
	cout << sum << endl;
	system("pause");
	return 0;
}


猜你喜欢

转载自blog.csdn.net/weixin_41878471/article/details/81202628