| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1168 人关注过本帖
标题:请教结构排序问题.真的被搞晕了.哥哥姐姐,救我啊!!!!
只看楼主 加入收藏
一只大菜鸟
Rank: 1
等 级:新手上路
帖 子:24
专家分:0
注 册:2007-3-17
收藏
得分:0 
谢谢,楼上.我会认真看.

2007-03-17 18:51
iwfy
Rank: 1
等 级:新手上路
威 望:2
帖 子:888
专家分:0
注 册:2007-2-23
收藏
得分:0 

#include<stdio.h>
struct student
{
char name[20];
int number;
int a;
int b;
int c;
float pjcj; /*加个平均成绩项*/
}stu[3];
void sort(int*);
void main()
{
int j=0,k=0;
float num,max;
char i;
do
{
printf("请输入名字:\n");
scanf("%s",&stu[j].name);
printf("请输入序号:\n");
scanf("%d",&stu[j].number);
printf("请输入成绩:\n");
scanf("%d",&stu[j].a);
printf("请输入成绩:\n");
scanf("%d",&stu[j].b);
printf("请输入成绩:\n");
scanf("%d",&stu[j].c);
printf("请选择是否继续:Y/N");
stu[j].pjcj=(stu[j].a+stu[j].b+stu[j].c)/3; /*输入完三门成绩后平均一下*/
// scanf("%c",&i);
j++;
fflush(stdin);
}while(j<3);
printf("排序前的详细内容为:\n");

printf("学号 姓名 平均成绩\n");

num=stu[0].pjcj;
for(k=0;k<2;k++)
{
for(j=1;j<3;j++)
{
if(stu[j].pjcj>num)
{
max=stu[j].pjcj;
stu[k].pjcj=max;
stu[j].pjcj=num;
num=max;

}
}
// stu[k].pjcj=num;
printf("%.1f\t",stu[k].pjcj);
num=stu[k+1].pjcj;
}
printf("%.1f\n",stu[2].pjcj);
/* printf("\n%d\t%s\t%d\t",stu[k].number,stu[k].name,(stu[k].a+stu[k].b+stu[k].c)/3);
num[k]=(stu[k].a+stu[k].b+stu[k].c)/3;
printf("%d",num[k]);
*/
getch();

}


英语不好还想学编程??逆天之路,不由分说!! 数学太差还想学编程??离经叛道,义无返顾!!
2007-03-17 19:03
e4lich
Rank: 2
等 级:新手上路
威 望:4
帖 子:182
专家分:0
注 册:2006-10-26
收藏
得分:0 

fflush(stdin);
是什么意思啊?


我只想变强!     
2007-03-17 19:03
e4lich
Rank: 2
等 级:新手上路
威 望:4
帖 子:182
专家分:0
注 册:2006-10-26
收藏
得分:0 
iwfy的程序好象只能编译但不符合要求哦

我只想变强!     
2007-03-17 19:06
iwfy
Rank: 1
等 级:新手上路
威 望:2
帖 子:888
专家分:0
注 册:2007-2-23
收藏
得分:0 
fflush(stdin);是清除一个流,我也没见过,刚才查了下函数
我用的是WIN-TC,刚才的代码有错,现在的好了

英语不好还想学编程??逆天之路,不由分说!! 数学太差还想学编程??离经叛道,义无返顾!!
2007-03-17 19:08
pinglideyu
Rank: 3Rank: 3
来 自:武汉工程大学
等 级:论坛游侠
威 望:1
帖 子:735
专家分:140
注 册:2007-1-7
收藏
得分:0 
以下是引用iwfy在2007-3-17 19:03:03的发言:

#include<stdio.h>
struct student
{
char name[20];
int number;
int a;
int b;
int c;
float pjcj; /*加个平均成绩项*/
}stu[3];
void sort(int*);
void main()
{
int j=0,k=0;
float num,max;
char i;
do
{
printf("请输入名字:\n");
scanf("%s",&stu[j].name);
printf("请输入序号:\n");
scanf("%d",&stu[j].number);
printf("请输入成绩:\n");
scanf("%d",&stu[j].a);
printf("请输入成绩:\n");
scanf("%d",&stu[j].b);
printf("请输入成绩:\n");
scanf("%d",&stu[j].c);
printf("请选择是否继续:Y/N");
stu[j].pjcj=(stu[j].a+stu[j].b+stu[j].c)/3; /*输入完三门成绩后平均一下*/
// scanf("%c",&i);
j++;
fflush(stdin);
}while(j<3);
printf("排序前的详细内容为:\n");

printf("学号 姓名 平均成绩\n");

num=stu[0].pjcj;
for(k=0;k<2;k++)
{
for(j=1;j<3;j++)
{
if(stu[j].pjcj>num)
{
max=stu[j].pjcj;
stu[k].pjcj=max;
stu[j].pjcj=num;
num=max;

}
}
// stu[k].pjcj=num;
printf("%.1f\t",stu[k].pjcj);
num=stu[k+1].pjcj;
}
printf("%.1f\n",stu[2].pjcj);
/* printf("\n%d\t%s\t%d\t",stu[k].number,stu[k].name,(stu[k].a+stu[k].b+stu[k].c)/3);
num[k]=(stu[k].a+stu[k].b+stu[k].c)/3;
printf("%d",num[k]);
*/
getch();

}

他这个挺好的,看看他的吧。
谢谢你了哟。


~~我的明天我知道~~
2007-03-17 19:26
PcrazyC
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:5652
专家分:0
注 册:2006-10-20
收藏
得分:0 
scanf("%s",&stu[j].name);

这句怎么没出现错误的,我奇怪

雁无留踪之意,水无取影之心
2007-03-17 19:38
e4lich
Rank: 2
等 级:新手上路
威 望:4
帖 子:182
专家分:0
注 册:2006-10-26
收藏
得分:0 
#include<stdio.h>
struct student
{
char name[20];
int number;
int a;
int b;
int c;
}stu[3];
void sort(int *a,int n)
{int i,j,t;
for(i=0;i<n;i++)
{for(j=0;j<i;j++)
{if(a[i]>a[j])
{t=a[i];a[i]=a[j];a[j]=t;}}}
}
void main()
{
int i,j=0,k=0,num[3];
printf("input the name:\n");
scanf("%s",&stu[j].name);
do
{
printf("input the number:\n");
scanf("%d",&stu[j].number);
printf("input the score1:\n");
scanf("%d",&stu[j].a);
printf("input the score2:\n");
scanf("%d",&stu[j].b);
printf("input the score3:\n");
scanf("%d",&stu[j].c);
j++;
printf("if you don't want continue?input no\n");
printf("input the name:\n");
scanf("%s",&stu[j].name);
}while(strcmp(stu[j].name,"no"));
for(k=0;k<j;k++)
num[k]=(stu[k].a+stu[k].b+stu[k].c)/3;
sort(num,j);
printf("the score array:\n");
printf("number name leverscore\n");
for(i=0;i<j;i++)
{for(k=0;k<j;k++)
{if(num[i]==(stu[k].a+stu[k].b+stu[k].c)/3)
printf("\n%d\t%s\t%d\t",stu[k].number,stu[k].name,(stu[k].a+stu[k].b+stu[k].c)/3);
}}}
这个可以的!看看吧

我只想变强!     
2007-03-17 19:43
e4lich
Rank: 2
等 级:新手上路
威 望:4
帖 子:182
专家分:0
注 册:2006-10-26
收藏
得分:0 

scanf("%s",&stu[j].name);

这句怎么没出现错误的,我奇怪
用&和不用都没错的,用了是画蛇添足啦!


我只想变强!     
2007-03-17 19:45
爱以走远
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:52
帖 子:7542
专家分:21
注 册:2007-3-16
收藏
得分:0 
我也是说   但是书上没用

   好好活着,因为我们会死很久!!!
2007-03-17 19:49
快速回复:请教结构排序问题.真的被搞晕了.哥哥姐姐,救我啊!!!!
数据加载中...
 
   



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

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