本帖最后由 ltt1986 于 2015-7-8 02:56 编辑 #include<iostream>
#include<cctype>
const int size=5;
int Fill_array(double [], int);
void Show_array(const double [], int);
void Reverse_array(double [], int);
int main()
{
double arr[size];
int num;
num = Fill_array(arr,size);
Show_array(arr,num);
Reverse_array(arr,num);
Show_array(arr,num);
return 0;
}
int Fill_array(double ar[], int n)//输入函数
{
using namespace std;
int num=0;
cout << "请输入:" ;
cin >> ar[num];
while(cin.good() && /*isdigit(ar[num])*/ && (num<n)) //问题出现在这,循环只执行了一次
//isdigit(ar[num]) 判断是否为0-9的数字字符,你接受是浮点数1.0000000,不满足退出
//如果注释掉发现逻辑有问题
//逻辑有问题,接受5次输入后还是num的值是4,还可以输入,
//造成数组成员变成6个了,数组下标越界直接崩溃
//你应该是想判断输入的是否类型匹配
{
num++ ;
cin >> ar[num];
}
return num+1;
}
void Show_array(const double ar[], int n)//输出函数
{
for(int i=0; i<n; i++)
std::cout << "第 " << i+1 << " 个数为:" << ar[i] << std::endl;
}
void Reverse_array(double ar[], int n)//反转函数
{
double temp;
for(int i=0; i<n/2; i++)
{
temp = ar[i];
ar[i] = ar[n-i-1];
ar[n-i-1] = temp;
}
}
|