为了账号安全,请及时绑定邮箱和手机立即绑定

我这个代码结果为什么老错

输出的第一个数是1,后边的就都是很大的负数

#include<iostream>

#include<cstdlib>

using namespace std;

class HugeInteger 

{

public:

int b[5];

void print()

{

for (int i = 0; i < 5; i++)

{

cout << b[i]-48 << ' ';

}

}

};

int main() 

{

HugeInteger *p = new HugeInteger[5];

char a[5];

for (int i=0; i < 5; i++)

{

cin >> a[i];

(p + i)->b[i] = a[i];

}

p ->print();

delete p;

p = NULL;

system("pause");

}


正在回答

5 回答

class HugeInteger
{
public:
int b[5];
void print()
{
for (int i = 0; i < 5; i++)
{
cout << b[i] - 48 << ' ';
}
}
};
int main()
{
HugeInteger *p = new HugeInteger[5];
char a[5];
for (int i = 0; i < 5; i++)
{
cin >> a[i];
(p)->b[i] = a[i];
}
p->print();
delete []p;
p = NULL;
system("pause");
return 0;
}


0 回复 有任何疑惑可以回复我~
#1

驱魔鮔

把(p+i)->b[i]改为p->b[i]就行了,另外释放资源时应该是delete []p;
2018-11-14 回复 有任何疑惑可以回复我~
class HugeInteger{public:	int b[5];	void print()	{		for (int i = 0; i < 5; i++)		{			cout << b[i] - 48 << ' ';		}	}};int main(){	HugeInteger *p = new HugeInteger[5];	char a[5];	for (int i = 0; i < 5; i++)	{		cin >> a[i];		(p)->b[i] = a[i];	}	p->print();	delete []p;	p = NULL;	system("pause");	return 0;}

把代码改一下就行了

你把值赋错了

0 回复 有任何疑惑可以回复我~

你给了5个对象数组 每个数组里面又有 5个int的数组 你赋值只是赋值的每个对象里面相对于的参数 

例如就像 

p[0].b[0]=a[0]  

p[1].b[1]=a[1]

正确的应该是

p[0].b[0]=a[0]

p[0].b[1]=a[1]

p[0].b[2]=a[2]

p[1].b[0]=a[0]

但你忘记了 你对象里面是有 5个int的数组的

在就是你早最后调用打印函数他只是打印的第一个对象里面的数组 你传都没有传够他怎么打印的出来 

0 回复 有任何疑惑可以回复我~
#include <stdlib.h>
#include <iostream>
using namespace std;
class HugeInteger
{
public:	char b[5];
	void print()	
	{
		for (int i = 0; i < 5; i++)
		{			
		    cout << b[i] << ' ';
		}	
        }
};
int main()
{
	HugeInteger *p = new HugeInteger[5];
	char a[5];		
	for (int i = 0; i < 5; i++)	
	{		
	    for (int j = 0; j < 5; j++)		
	    {			
	        cin >> a[j];			
	        p[i].b[j] = a[j];		
	    }		p[i].print();	
}	
    delete p;	
    p = NULL;	
    system("pause");	
    return 0;
}


2 回复 有任何疑惑可以回复我~
#1

姗秀为画

需要delete []p吗 不是对象数组的吗
2018-04-24 回复 有任何疑惑可以回复我~
#2

qq_故梦_12 回复 姗秀为画

额....没注意
2018-04-24 回复 有任何疑惑可以回复我~

为什么你要把字符数组的值赋给int的数组?

0 回复 有任何疑惑可以回复我~
#1

姗秀为画

别人在输出的时候已经做了-48的操作了 就是ascll码减48的意思嘛 第48个就是0
2018-04-24 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
C++远征之封装篇(下)
  • 参与学习       70919    人
  • 解答问题       514    个

封装--面向对象三大特征之一,通过案例让C++所学知识融会贯通

进入课程

我这个代码结果为什么老错

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信