C++Primer Plus第七章--函数---c++的编程模块7.3编程练习6,交换和数字顺序反序输出

6.编写一个程序,它使用下列函数:Fill_array()将一个 double 数组的名称和长度作为参数。
它提示用户输入 double值,并将这些值存储到数组中。当数组被填满或用户输入了非数字时,
输入将停止,并返回实际输入了多少个数字。Show_array( )将一个 double 数组的名称和长度作为参数,
并显示该数组的内容。Reverse-array()将一个 double 数组的名称和长度作为参数,
并将存储在数组中的值的顺序反转。程序将使用这些函数来填充数组,然后显示数组;
反转数组,然后显示数组;反转数组中除第一个和
最后一个元素之外的所有元素,然后显示数组。

#pragma region 6.cpp 7.6
/*
*/
#if 1
#include<iostream>
unsigned Fill_array(double[], int);
unsigned Show_array(double[], int);
unsigned Reverse_array(double[], int);
void swap(double*, double*);
int main()
{
	using namespace std;
	double* arr = new double[100];
	unsigned arrn;
	arrn = Fill_array(arr,100);
	Show_array(arr, arrn);
	Reverse_array(arr, arrn);
	Show_array(arr, arrn);
	return 0;
}

输入函数的实现

//函数的实现
//提示用户输入 double值,并将这些值存储到数组中。当数组被填满或用户输入了非数字时输入将停止,并返回实际输入了多少个数字
unsigned Fill_array(double arr[], int n)
{
	int num;
	int cntnum = 0;
	std::cout << "请开始在数组中输入数字:" << std::endl;
	while (std::cin>>num)
	{
		arr[cntnum] = num;
		cntnum++;
	}
	std::cout << "数组中输入了:" << cntnum << "个数字";
	std::cout << std::endl;
	std::cout << cntnum;
	std::cout << std::endl;
	return cntnum;
}

显示函数的实现

//显示该数组的内容
unsigned Show_array(double arr[], int n)
{
	for (int i = 0; i < n; i++)
	{
		std::cout << arr[i] << "\t";
	}
	std::cout << std::endl;
	return n;
}

倒序数组

//将存储在数组中的值的顺序反转
unsigned Reverse_array(double arr[], int n)
{
	if (n % 2 == 1)
	{
		for (int i = 0; i <= n/2; i++)
		{
			swap(&arr[(n/2)-i],&arr[n/2+i]);
		}
	}
	else
	{
		for (int i = 0; i < n / 2; i++)
		{
			swap(&arr[n/2-i-1],&arr[n/2+i]);
		}
	}
	return n;
}

交换函数

//交换函数
void swap(double* a, double* b)
{
	double p;
	p = *a;
	*a = *b;
	*b = p;
}
#endif 
#pragma endregion

排序演示:图一:
在这里插入图片描述

图二:
在这里插入图片描述

注意事项:排序的时候,传入的n是数组的个数,不要和数组数位搞混下了。我写代码的时候,就犯了这个毛病

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值