| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 471 人关注过本帖
标题:[求助]关与结构的问题
只看楼主 加入收藏
handsome303
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2006-2-28
收藏
 问题点数:0 回复次数:5 
[求助]关与结构的问题
程序的目的是将学生的学号进行由小到大的排序。
小弟用边输入边排序的方法,但不知为何不能正确执行,虽然能通过编译,想很很久也想不到问题出在哪?望各位大大帮帮忙,正在学习C++

程序如何:
#include<iostream.h>

class Student
{
public:
Student()
{
setdate();
}

void setdate()
{
int a;
cout<<"输入所要建立的学生学号:";
cin>>a;
ID=a;

cout<<"输入学生的姓名:"<<flush;
cin>>name;

float b;
cout<<"输入A课程的成绩:";
cin>>b;
chinese=b;

float c;
cout<<"输入B课程的成绩:";
cin>>c;
math=c;

float d;
cout<<"输入C课程的成绩:";
cin>>d;
english=d;

total=english+chinese+math;

average=total/3;

}

int getID()
{
return ID;
}

char* getname()
{
return name;
}

float getchin()
{
return chinese;
}

float getmath()
{
return math;
}

float geteng()
{
return english;
}

float gettotal()
{
return total;
}

float getaverage()
{

return average;
}


protected:
int ID;
char name[20];
float chinese;
float math;
float english;
float total;
float average;
}; //类定义

struct Date
{
Student student;
Date *next;
}; //结构定义

Date *List()
{
int n=5;
Date *head; // 链首定义
head=NULL;
Date *temp;
Date *privoit; //临时变量
Date *head1;
Date *ps; //结点
ps=new Date;
if(head==NULL)
{
head=ps;
}
cout<<endl;
ps=new Date;

if(ps->student.getID()<head->student.getID())
{
temp=head;
head=ps;
ps=temp;
}
head->next=ps;
ps->next=NULL;//初始链

for(int i=0;i<n-2;i++)
{
cout<<endl;
ps=new Date;

if(ps->student.getID()<head->student.getID())
{
temp=head;
head=ps;
ps=temp;
}

privoit=head->next;
head->next=ps;
ps->next=privoit;
head1=head->next; //插入到head后面,再跟后面的元素比较大小

for(int j=0;j<=i;j++)
{
head1=head1->next;

if(ps->student.getID()>head1->student.getID())
{
temp=head1;
head1=ps;
ps=temp;
head1=ps;
}
else
break;
}
}
return (head);
}

void Print(Date *k)
{
cout<<"学号 姓名 A科成绩 B科成绩 C科成绩 总分成绩 平均成绩 "<<endl;
while(k!=NULL)
{
cout<<k->student.getID()<<" "<<k->student.getname()<<" "<<k->student.getchin()<<" "<<k->student.getmath()
<<" "<<k->student.geteng()<<" "<<k->student.gettotal()<<" "<<k->student.getaverage()<<endl;
k=k->next;
}
}


void main()
{

Print(List());
}
搜索更多相关主题的帖子: 结构 
2006-06-19 15:51
woodhead
Rank: 3Rank: 3
等 级:新手上路
威 望:9
帖 子:1124
专家分:0
注 册:2005-7-18
收藏
得分:0 
temp=head;
head=ps;
ps=temp; ???

楼主的链表的结构看着头晕

2006-06-19 18:33
handsome303
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2006-2-28
收藏
得分:0 
哦,这个是交换链首的代码啊!temp作为交换两个指针的临时变量啊!
2006-06-19 18:44
song4
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:38
帖 子:1533
专家分:4
注 册:2006-3-25
收藏
得分:0 
LZ,错的我没话说.
我终于明白有时候改代码比写代码还难
if(ps->student.getID()<head->student.getID())
{
temp=head;
head=ps;
ps=temp;
}

privoit=head->next;
head->next=ps;
ps->next=privoit;
head1=head->next; //插入到head后面,再跟后面的元素比较大小

if(ps->student.getID()>head1->student.getID())
{
temp=head1;
head1=ps;
ps=temp;
head1=ps;
}
else
break;
这俩地方错了,自己看看吧.有看不懂的语句.我试图改了,但他一环套一环.非常不规范
希望楼主抓抓代码规范

嵌入式 ARM 单片机 驱动 RT操作系统 J2ME LINUX  Symbian C C++ 数据结构 JAVA Oracle 设计模式 软件工程 JSP
2006-06-19 20:37
handsome303
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2006-2-28
收藏
得分:0 
汗...不好意思song4大哥,麻烦到你了!顺便问一下,该如何代码规范啊?
你可以加我吗?QQ:199462359,跟你学学东西...嘻....




2006-06-20 00:16
song4
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:38
帖 子:1533
专家分:4
注 册:2006-3-25
收藏
得分:0 
112021999
msn song4@163.com

嵌入式 ARM 单片机 驱动 RT操作系统 J2ME LINUX  Symbian C C++ 数据结构 JAVA Oracle 设计模式 软件工程 JSP
2006-06-20 12:26
快速回复:[求助]关与结构的问题
数据加载中...
 
   



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

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