| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 955 人关注过本帖
标题:[求助]输出错误
只看楼主 加入收藏
xialup
Rank: 1
等 级:新手上路
帖 子:84
专家分:0
注 册:2006-3-20
收藏
 问题点数:0 回复次数:10 
[求助]输出错误
#include <iostream>
using namespce std;
class data
{
private:
long number;
char *name;
char *add;
int date;
public:
void show();
};
void data::show()
{
long w;
char x[100];
char y[100];
int z;
for(int i=0;i<2;i++)
{
cin>>w>>x>>y>>z;
}
number=w;
name=&x[0];
add=&y[0];
date=z;
cout<<"学号"<<" "<<"姓名"<<" "<<"地址"<<" "<<"出生年月"<<endl;
cout<<number<<" "<<name<<" "<<add<<" "<<date<<endl; 这边该怎么改??
}
int main()
{
data obj;
obj.show();
system("pause");
return 0;
}
我编写了一个简单的学生信息的程序,可当我输入两个学生信息时,输出的却是后一个学生的信息,要输出两个学生的信息,该如何去修改?还有就是如果输入的学号是以0开头的,输出的就不正确,这又该如何去改?谢谢!

[此贴子已经被作者于2006-5-29 16:17:53编辑过]

搜索更多相关主题的帖子: 输出 
2006-05-29 16:13
aogun
Rank: 5Rank: 5
等 级:贵宾
威 望:17
帖 子:638
专家分:0
注 册:2006-4-5
收藏
得分:0 
[CODE]#include <iostream>
#define COLUMN_WIDTH "\t\t"
using namespace std;
class data
{
private:
long number;
char *name;
char *add;
int date;
public:
void show();
};
void data::show()
{
long w;
char x[100];
char y[100];
int z;
for(int i=0;i<2;i++)
{
cin>>w>>x>>y>>z;
number=w;
name=&x[0];
add=&y[0];
date=z;

cout<<"学号"<<COLUMN_WIDTH<<"姓名"<<COLUMN_WIDTH<<"地址"<<COLUMN_WIDTH<<"出生年月"<<endl;
cout<<number<<COLUMN_WIDTH<<name<<COLUMN_WIDTH<<add<<COLUMN_WIDTH<<date<<endl; //这边该怎么改??
}//括号括到这里
}
int main()
{
data obj;
obj.show();
system("pause");
return 0;
}[/CODE]

世界上总共有 10 种人,一种懂得什么是二进制 ,一种不懂。
2006-05-29 16:24
song4
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:38
帖 子:1533
专家分:4
注 册:2006-3-25
收藏
得分:0 
楼主用同一个数组记载数据,又用它给同一个类数据成员
第二个输入给第一个数据覆盖了
你用的是LONG来储存学号
当然遇见0就会把他剃掉
建议楼主
要是非要一次输入两个,以储存数据来看,把成员做成两个
以只是输出来看,让他写一次输出一次,但是这都不符合逻辑
关于学号,楼主要是想用0,那么把学号设成字符数组

嵌入式 ARM 单片机 驱动 RT操作系统 J2ME LINUX  Symbian C C++ 数据结构 JAVA Oracle 设计模式 软件工程 JSP
2006-05-29 16:29
song4
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:38
帖 子:1533
专家分:4
注 册:2006-3-25
收藏
得分:0 

#include <iostream>
using namespace std;
class data
{
private:
char *number;
char *name;
char *add;
int date;
public:
void show();
};
void data::show()
{char w[10];
char x[100];
char y[100];
int z;
cin>>w>>x>>y>>z;

number=&w[0];//这个很不好,最好用strcpy
name=&x[0];
add=&y[0];
date=z;
cout<<"学号"<<" "<<"姓名"<<" "<<"地址"<<" "<<"出生年月"<<endl;
cout<<number<<" "<<name<<" "<<add<<" "<<date<<endl;
}
int main()
{
data obj;
obj.show();
system("pause");
return 0;
}
//其他地方需要很大的优化


嵌入式 ARM 单片机 驱动 RT操作系统 J2ME LINUX  Symbian C C++ 数据结构 JAVA Oracle 设计模式 软件工程 JSP
2006-05-29 16:31
xialup
Rank: 1
等 级:新手上路
帖 子:84
专家分:0
注 册:2006-3-20
收藏
得分:0 

很谢谢了
其实我也知道那肯定是不行的 但想不出该怎么改
我想用数组存储数据然后遍历数组输出来.^^^^应该很好实现的呢 怎么就变烦了呢~~~


加一个MAX应该可以的

[此贴子已经被作者于2006-5-29 16:44:01编辑过]


2006-05-29 16:42
song4
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:38
帖 子:1533
专家分:4
注 册:2006-3-25
收藏
得分:0 
strcpy(目的,原料);要不你用strcat把两个数据加到一起吧
不过这非常非常不好呢
aogun说的我都没看出来
正是输入一次输出一次

嵌入式 ARM 单片机 驱动 RT操作系统 J2ME LINUX  Symbian C C++ 数据结构 JAVA Oracle 设计模式 软件工程 JSP
2006-05-29 16:45
xialup
Rank: 1
等 级:新手上路
帖 子:84
专家分:0
注 册:2006-3-20
收藏
得分:0 

如果要批量输入批量输出该如何实现呢~~


2006-05-29 17:01
song4
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:38
帖 子:1533
专家分:4
注 册:2006-3-25
收藏
得分:0 
string应该可以的

嵌入式 ARM 单片机 驱动 RT操作系统 J2ME LINUX  Symbian C C++ 数据结构 JAVA Oracle 设计模式 软件工程 JSP
2006-05-29 17:15
aogun
Rank: 5Rank: 5
等 级:贵宾
威 望:17
帖 子:638
专家分:0
注 册:2006-4-5
收藏
得分:0 

批量的话要么申请字符串数组内存,用stl容器是最简单的,list、vector等随便用一个就行


世界上总共有 10 种人,一种懂得什么是二进制 ,一种不懂。
2006-05-29 17:16
xialup
Rank: 1
等 级:新手上路
帖 子:84
专家分:0
注 册:2006-3-20
收藏
得分:0 

完上回家试下 刚学C++还没一个月已经觉得好困难了`~~~呵呵^坚持~


2006-05-29 17:19
快速回复:[求助]输出错误
数据加载中...
 
   



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

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