Kyr1e_ 2019-01-29 20:13 采纳率: 0%
浏览 1402

C++题目,求教,输出不了结果。

定义一个数组类 Array,求整型一维组中值为素数的元素的平均值。具体要求如下:

(1)私有成员数据: int *p,k; // p 表示维组,k 为数组大小 float *s; //维组中素数元素的平均值

(2)公有成员函数: Array(int*ptr,int n):根据参数初始化 p 和 k,然后初始化 s 并为 s 赋初值;

int fun(int n):判断 n 是否为到数,若是返回 1,否则返回 0;

void sum ( ):求素数元素的平均值;

void show( ):输出所有成员数据,数组每行 5 个元素,其他成员每行一个; 析构函数。

(3)设计一个完整的程序对该类进行测试。 以数组{5,2,7,4,8,23,65,1,40}说明 Array 类型对象 arr,并对其测试。

已经在dev上写完了了,程序可以运行,但是没有输出,只有个黑框,求看看是哪里错了。

#include<iostream>
using namespace std;
class Array
{
    private:
        int *p,k;
        float s;
    public:
        Array(int *ptr,int n);
        int fun(int n);
        void sum();
        void show();
        ~Array();
};
Array::Array(int *ptr,int n)
{
    k=n;
    int *p=new int[k];
    for(int i=0;i<k;i++)
       p[i]=ptr[i];
    s=0;
}
int Array::fun(int n)
{
    if(n<2) return 0;
    for(int i=2;i<n;i++)
        if(n%i==0) return 0;
    return 1;
}
void Array::sum()
{
    int i,temp=0;
    for(i=0;i<k;i++)
    {
        if(fun(p[i]))
        {
            s+=p[i];
            temp++;
        }
    }s/=temp;
}
void Array::show()
{
for(int i=0;i<k;i++)
    {
    cout<<p[i]<<" ";
    if(i%4==0)cout<<'\n';
    }
    cout<<"\n数组大小为"<<k<<"\n其中素数的平均数为:"<<s<<endl;
}
Array::~Array(){delete []p;}
int main()
{
    int a[]={5,2,7,4,8,23,65,1,40};
    Array arr(a,9);
    arr.sum();
    arr.show();
    return 0;
}
  • 写回答

1条回答

  • bostonAlen 2019-01-29 21:42
    关注

    空指针异常,访问指针成员进行一些操作时需判断p是否为空,因为p并未初始化!,在使用p的前面加一个if(p != nullptr),另外析构建议你也加上if(p),再令p = NULL;防止野指针
    图片说明

    评论

报告相同问题?

悬赏问题

  • ¥15 LiBeAs的带隙等于0.997eV,计算阴离子的N和P
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 来真人,不要ai!matlab有关常微分方程的问题求解决,
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算
  • ¥15 java如何提取出pdf里的文字?
  • ¥100 求三轴之间相互配合画圆以及直线的算法