标题:c语言设计程序,没有出结果
只看楼主
vgytu
Rank: 1
等 级:新手上路
帖 子:16
专家分:5
注 册:2020-4-27
结帖率:100%
已结贴  问题点数:20 回复次数:12 
c语言设计程序,没有出结果
#include <iostream>
using namespace std;
class Test{
public:
    int init(int a,int b){
        data=new int data[a];
        for(int i=0;i<a;i++){
            data+i=b;
        }   
    }
    print(){
        while(this->data!=NULL){
            cout<<*data<<endl;
        }
    }
    int *data;
}

int main(){
    Test a;
    a.init();
    a.print();
    return 0;   
}
题目
2. 下面是一个类的测试程序,设计出能使用如下测试程序的类。
int main()
{
   Test a;
   a.init(10,20);
   a.print();
  return 0;
} 
搜索更多相关主题的帖子: data print 结果 int c语言 
2020-04-27 18:10
wmf2014
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:216
帖 子:2039
专家分:11273
注 册:2014-12-6
得分:7 
应该有句data++,否则死循环了。

能编个毛线衣吗?
2020-04-27 19:26
vgytu
Rank: 1
等 级:新手上路
帖 子:16
专家分:5
注 册:2020-4-27
得分:0 
好的,谢谢指导

https://zh.
2020-04-27 20:08
吕孟伟
Rank: 8Rank: 8
等 级:贵宾
威 望:27
帖 子:200
专家分:870
注 册:2018-10-4
得分:7 
程序代码:
#include <iostream>
using namespace std;
class Test{
public:
    void init(int a,int b){
        data = new int[a]();
        for(int i=0;i<a;i++){
            *data+=b;
        }  
        datalast = &data[a];
    }
    void print(){
        
        while(this->data != datalast){
            cout<< *data << endl;
            ++data;
        }
        delete [] data;
    }
    
    private:
    int* data;
    int* datalast;//指向data尾元素的下一位置的指针
};

int main(){
    Test a;
    a.init(10,20);
    a.print();
    return 0;    
}

借用一下侯捷的话:勿在浮沙筑高台。
2020-04-27 22:29
vgytu
Rank: 1
等 级:新手上路
帖 子:16
专家分:5
注 册:2020-4-27
得分:0 
好牛啊,感谢4楼,感谢3楼,
data = new int[a]();以为现有的知识还不能拜读,我把他理解为
data = new int;可以吗?感谢

https://zh.
2020-04-27 23:06
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:7 
以下是引用vgytu在2020-4-27 23:06:53的发言:

好牛啊,感谢4楼,感谢3楼,
data = new int[a]();以为现有的知识还不能拜读,我把他理解为
data = new int;可以吗?感谢

不可以,前者操作符是 new[],后者操作符是 new。完全不相干。
2020-04-28 08:34
vgytu
Rank: 1
等 级:新手上路
帖 子:16
专家分:5
注 册:2020-4-27
得分:0 
回复6楼,哦哦,谢谢6楼的回答,我就想着date有点像
int tem=0;
tem+=b,然后叠加10次b
我看四楼的代码进行了取消引用操作,就相当于tem[0]+=b;吗?
print函数里有点像迭代器,从第一个到最后一个并打印,实质性不应该只是a[0]进行了操作吗?
然后就想着是否可以把数组形式换成单一变量?也就是new int;
不过这句
data = new int[a]();确实很难拜读,大神知道后面跟着的括号是什么意思吗?感谢
c语言没学多久

https://zh.
2020-04-28 09:40
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:0 
以下是引用vgytu在2020-4-28 09:40:03的发言:

c语言没学多久
你这不是“c语言”,而是“C++语言”。虽然出题者水平很差,把C++弄得跟C一样,四不像吧。

你没有给出题目要求,假如题目要求是打印出10个20的话,那代码应该是
程序代码:
#include <iostream>
using namespace std;

class Test
{
public:
    Test() : size_(), data_()
    {
    }
    Test( const Test& rhs ) : size_(rhs.size_), data_(new int[rhs.size_])
    {
        for( size_t i=0; i!=size_; ++i )
            data_[i] = rhs.data_[i];
    }
    Test& operator=( const Test& rhs )
    {
        if( this != &rhs )
        {
            delete[] data_;
            size_ = rhs.size_;
            data_ = new int[rhs.size_];
            for( size_t i=0; i!=size_; ++i )
                data_[i] = rhs.data_[i];
        }
        return *this;
    }
    ~Test()
    {
        delete[] data_;
    }

    void init( size_t size, int value )
    {
        delete[] data_;
        size_ = size;
        data_ = new int[size];
        for( size_t i=0; i!=size_; ++i )
            data_[i] = value;
    }

    void print() const
    {
        for( size_t i=0; i!=size_; ++i )
            cout << data_[i] << '\n';
    }

private:
    size_t size_;
    int* data_;
};

int main( void )
{
    Test a;
    a.init(10,20);
    a.print();
    return 0;
}




2020-04-28 10:01
vgytu
Rank: 1
等 级:新手上路
帖 子:16
专家分:5
注 册:2020-4-27
得分:0 
4楼?你这句data = new int[a]();确实很难拜读,能让小弟我圣经式的拜读吗,让我感受一下倾盆大雨般的知识洗礼吗?

https://zh.
2020-04-28 10:04
vgytu
Rank: 1
等 级:新手上路
帖 子:16
专家分:5
注 册:2020-4-27
得分:0 
回复8楼,喜欢您的说话风格,出题者只是在考验答题者的水平,我的水平只能做a+b,您这代码高手代码,让我跪读几天,再来个知识总结

https://zh.
2020-04-28 10:10



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-501292-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.421478 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved