问题描述:编写一个程序,它使用下面的函数:
fill_array()将一个double数组的名称和长度作为参数。提示用户输入double值,并将这些值存储到数组中去。当数组被填满或用户输入了非数字的数据的时候结束。
show_array()将一个double数组的名称和长度作为参数,并显示该数组的内容。
reverse_array()将一个double数组的名称和长度作为参数,并将存储在数组中的值顺序反转。
程序将使用这些函数来填充数组,然后显示数组;反转数组,然后显示数组;反转数组中除第一个和最后一个元素之外的所有元素,然后显示数组。
解决方法:
1.建立三个以double数组的名称和长度作为参数的函数。第一个函数包含着询问用户得代码和输入代码存储进数组的代码。第三个函数加两个int类型参数,表示从哪开始倒序到哪结束。
2.第二个函数就是简单的顺序输出数组中的数据,第三个函数建立一个相同的数组,从数组的尾部开始复制进新建的数组并且输出这个数组,实现数组的顺序反转。
3.主程序中先调用第一个函数,接着调用第二个函数,接着调用第三个函数(控制两个int参数使得从开始到结束倒序),再调用第二个函数,最后再调用第三个函数(使得从第二个到倒数第二个倒序),调用第二个函数显示数组
代码:
#include <iostream>
using namespace std;
double a[1000];
int n=0;
void fill_array(double a[],int t)
{
cout << "请输入一个值" << endl;
while (cin>>a[n]&&n<1000)
{
cout << "请输入一个值" << endl;
n++;
}
}
void show_array(double a[], int t)
{
for (int i = 0; i < n; i++)
{
cout << a[i]<<" ";
}
}
void reverse_array(double a[], int t,int start,int end)
{
double b[1000];
int j = start;
for (int i = 0; i < n; i++)
{
b[i] = a[i];
}
for (int i = end; i>=start; i--)
{
b[j] = a[i];
j++;
}
for (int i = 0; i < n; i++)
{
a[i] = b[i];
}
}
int main()
{
fill_array(a, 1000);
show_array(a, 1000);
cout << endl;
reverse_array(a, 1000, 0, n-1);
show_array(a, 1000);
cout << endl;
reverse_array(a, 1000, 0, n - 1);
reverse_array(a, 1000, 1, n-2);
show_array(a, 1000);
return 0;
}