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是数组的个数,不要和数组数位搞混下了。我写代码的时候,就犯了这个毛病