| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1334 人关注过本帖
标题:百思不得其解啊(冒泡法学生课程排序)
只看楼主 加入收藏
舞动
Rank: 1
等 级:新手上路
帖 子:48
专家分:0
注 册:2007-7-25
收藏
 问题点数:0 回复次数:7 
百思不得其解啊(冒泡法学生课程排序)

我的代码如下
#include <stdio.h>
#include <iostream.h>
struct course
{
int math;
int english;
int computer;
}; /*定义结构体*/
struct student
{
int num;
int sno;
struct course mark;
int sum;
int average;
}stu[10]; /*定义数组结构体*/

void BubbleSort(int* pData,int Count)
{
int iTemp;
for(int i=1;i<Count;i++)
{
for(int j=Count-1;j>=i;j--)
{
if(pData[j]<pData[j-1])
{
iTemp = pData[j-1];
pData[j-1] = pData[j];
pData[j] = iTemp;
}
}
}
} /*排序算法*/
void main()
{
int i,j,t;
int sum[10];
printf("依次输入学生的序号,学号,成绩(数学,英语,计算机)\n");
stu.sum=stu.mark.math+stu.mark.english+stu.mark.computer;
sum[10]=stu.sum;
stu.average=(stu.mark.math+stu.mark.english+stu.mark.computer)/3;
for(i=1;i<=10;i++)
scanf("%d,%d,%d,%d,%d,%d,%d", &stu.num, &stu.sno, &stu.mark.math, &stu.mark.english, &stu.mark.computer, &stu.sum, &stu.average);
/* for(j=1;j<10;j++)
for(i=1;i<10-j;i++)
if(stu.sum>stu[i+1].sum)
{
t=stu.sum;
stu.sum=stu[i+1].sum;
stu[i+1].sum=t;
}*/

BubbleSort(sum,10);
printf("按总分成绩高低排列:\n");
for(i=1;i<=10;i++)
printf("%d,%d,%d,%d,%d,%2f,%2f", &stu.num, &stu.sno, &stu.mark.math, &stu.mark.english, &stu.mark.computer, &stu.sum, &stu.average);
printf("\n");
}

编译和连接都没问题 就是最后一步执行有问题 问题如下(图片不能发啊)
说我
Cpp.exe遇到问题需要关闭,我们对此引起的不便表示歉意
如果你正处于进程中,信息可能丢失

=============
帮你重排了一下, 看起来要好些...

野比

[此贴子已经被野比于2007-8-15 0:47:14编辑过]

搜索更多相关主题的帖子: 百思不得其解 课程 学生 冒泡 
2007-08-13 07:08
bupthehe
Rank: 1
等 级:新手上路
帖 子:61
专家分:0
注 册:2007-8-2
收藏
得分:0 
MM起的好早啊,PS;你把图片改成.jpg格式就可以发了,呵呵
2007-08-13 08:45
yue10155
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2007-3-31
收藏
得分:0 
呵呵。。这种问题经常出现,,,你好好检查一下你的函数定义是不是哪里出现了错误,,应该可以解决这个问题啊

挑战自我就等于胜利
2007-08-13 09:45
aipb2007
Rank: 8Rank: 8
来 自:CQU
等 级:贵宾
威 望:40
帖 子:2879
专家分:7
注 册:2007-3-18
收藏
得分:0 
程序很混乱啊,怎么还没输入值就在计算总分和平均分?

for(i=1;i<=10;i++)
scanf("%d,%d,%d,%d,%d,%d,%d",&stu.num,&stu.sno,&stu.mark.math,&stu.mark.english,&stu.mark.computer,&stu.sum,&stu.average);

循环是从0--9,取不到10的。stu是什么?stu[i]吧?

Fight  to win  or  die...
2007-08-13 10:57
terisevend
Rank: 1
等 级:新手上路
帖 子:62
专家分:0
注 册:2007-6-2
收藏
得分:0 

看到我晕死...字太黑了- -!
数组定义时,写stu[10]..但是使用stu[n]时,n∈[0,10)...
但是LZ却使用了stu[10]...
而且...LZ定义的是数组YA~不能直接使用stu.num...


2007-08-13 13:19
野比
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:24
帖 子:1627
专家分:516
注 册:2007-5-24
收藏
得分:0 
泡泡法... 看4楼...
还有, 测试的时候没必要输入那么多相似项, 象成绩输入一个(比如数学)就够了..
等功能实现了, 再加无数成绩都没问题..

女侠,约吗?
2007-08-14 10:19
neverDie
Rank: 1
等 级:新手上路
威 望:1
帖 子:123
专家分:0
注 册:2007-5-5
收藏
得分:0 
在编译器上排版也这么混乱?

习惯不好哦。

2007-08-14 12:11
猎豹
Rank: 1
来 自:河南
等 级:新手上路
帖 子:7
专家分:0
注 册:2010-4-10
收藏
得分:0 

#include <iostream>
using namespace std;
struct course
{
  int math;
  int english;
  int computer;
}; /*定义结构体*/

struct student
{
  int num;
  int sno;
  struct course mark;
  int sum;
  int average;
}stu[3]; /*定义数组结构体*/


int main()
{
   int i,j,t;
   
   int sum[3];
   sum[3]=stu[3].sum;
//   student *sum[3]
   cout<<"依次输入学生的序号,学号,成绩(数学,英语,计算机)\n";
   for(int i=0;i<3;i++)
   {
     cin>>stu[i].num>>stu[i].sno>>stu[i].mark.math>>stu[i].mark.english>>stu[i].
     stu[i].sum=stu[i].mark.math+stu[i].mark.english+stu[i].
     stu[i].average=(stu[i].mark.math+stu[i].mark.english+stu[i].)/3;
   }
  student a;
  for(int i=0;i<2;i++)
  {
    for(int j=0;j<2;j++)
    {
       if(stu[j].sum>stu[j+1].sum)//从小到大排列
       {
         a = stu[j];
         stu[j] = stu[j+1];
         stu[j+1] = a;
       }
    }
  }
cout<<"按总分成绩高低排列:\n";
cout<<"序号"<<" "<<"学号"<<" "<<"成绩"<<endl;
for(int i=0;i<3;i++)
cout<<stu[i].num<<" "<<stu[i].sno<<" "<<stu[i].sum<<endl;
system("pause");
return 0;
}

2010-04-25 11:41
快速回复:百思不得其解啊(冒泡法学生课程排序)
数据加载中...
 
   



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

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