![]() |
#2
rjsp2020-11-30 23:33
|
3.4 5.6 p
编译器输出结果为:
fil_array:2
show_array:44 2 5 67
show_array1:4.9007e-317 4.88941e-317
为什么程序跳过了show_array1()函数中的输入环节?在
cout<<p[j]<<' ';
这行就输出了4.9007e-317 4.88941e-317这两个奇怪的数字?
如何修改?代码如下:

#include<iostream>
using namespace std;
int fill_array(double ar[],int size){
int i,count;
count=0;
i=0;
while(cin>>ar[i]&&i<size){
count++;
i++;
}
return count;
}
void show_array(double ar[],int size){
cout<<"show_array:";
for(int i=0;i<4;i++)
cout<<ar[i]<<' ';
}
double *show_array1(){
double *b=new double[5];
for(int i=0;i<5;i++){
if(!(cin>>b[i]))
break;
}
return b;
}
int main(void){
double b[8];
int a=fill_array(b,8);
cout<<"fil_array:"<<a<<endl;
double c[4]={44,2,5,67};
show_array(c,4);
cout<<endl;
double *p=show_array1();
cout<<"show_array1:";
for(int j=0;j<=sizeof(p)/sizeof(*p);j++)
cout<<p[j]<<' ';
delete [] p;
return 0;
}
using namespace std;
int fill_array(double ar[],int size){
int i,count;
count=0;
i=0;
while(cin>>ar[i]&&i<size){
count++;
i++;
}
return count;
}
void show_array(double ar[],int size){
cout<<"show_array:";
for(int i=0;i<4;i++)
cout<<ar[i]<<' ';
}
double *show_array1(){
double *b=new double[5];
for(int i=0;i<5;i++){
if(!(cin>>b[i]))
break;
}
return b;
}
int main(void){
double b[8];
int a=fill_array(b,8);
cout<<"fil_array:"<<a<<endl;
double c[4]={44,2,5,67};
show_array(c,4);
cout<<endl;
double *p=show_array1();
cout<<"show_array1:";
for(int j=0;j<=sizeof(p)/sizeof(*p);j++)
cout<<p[j]<<' ';
delete [] p;
return 0;
}
[此贴子已经被作者于2020-11-30 22:50编辑过]