| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 743 人关注过本帖
标题:[求助]简单学员系统的一点问题
只看楼主 加入收藏
奥丁
Rank: 1
等 级:新手上路
帖 子:327
专家分:0
注 册:2006-10-18
结帖率:100%
收藏
 问题点数:0 回复次数:8 
[求助]简单学员系统的一点问题

#include <stdio.h>
#include <stdlib.h>

#define NUM 20

struct _stu_
{
char name[12];
float chinese;
float math;
};

typedef struct _stu_ STU;

int accept(STU *str[]);
void sort(STU *str[], int n);
void print(STU *str[], int n);

void main()
{
int n;
STU *str[NUM];

n = accept(str);
sort(str, n);
print(str, n);

}

int accept(STU *str[])
{
int n, i;

printf("请输入学生个数:");
scanf("%d", &n);
printf("\n");

for(i = 0; i < n; i++)
{
str[i] = (STU *)malloc(81 * sizeof(STU));
printf("请输入第%d号学员的名字:", i + 1001);
scanf("%s", &str[i]->name);
printf("请输入第%d号学员的语文成绩:", i + 1001);
scanf("%f", &str[i]->chinese);
printf("请输入第%d号学员的数学成绩:", i + 1001);
scanf("%f", &str[i]->math);
printf("\n");

}
return n;

}

float *avg(STU *str[], int n)
{
int i;
float f[NUM];
float *p;

p = f;

for(i = 0; i < n; i++)
{
f[i] = (str[i]->math + str[i]->chinese) / 2;
}
return f;
}

void sort(STU *str[], int n)
{
int i, j;
STU *tmp;
float *p;

p = avg(str, n);

for(j = 0; j < n - 1; j++)
{
for(i = 0; i < n - j - i; i++)
{
if(*(p + i) < *(p + i + 1))
{
tmp = str[i];
str[i] = str[i + 1];
str[i + 1] = tmp;
}
}
}
}

void print(STU *str[], int n)
{
int i;

printf("\n名次\t学号\t语文成绩\t数学成绩\t平均分\n");
for(i = 0; i < n; i++)
{
printf("%02d\t", i + 1);
printf("%d\t", i + 1001);//输出学号
printf("%.1f\t\t", str[i]->chinese);
printf("%.1f\t\t", str[i]->math);
printf("%.1f\n", (str[i]->math + str[i]->chinese)/2);


}

}



图片附件: 游客没有浏览图片的权限,请 登录注册


现在的运行结果是这样的

有一点问题,我用什么方法能把学号固定?也就是排序之后的学号和输入时是一致的。


[此贴子已经被作者于2007-10-18 0:27:53编辑过]

搜索更多相关主题的帖子: str STU 学员 int 系统 
2007-10-17 02:00
永夜的极光
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:2721
专家分:1
注 册:2007-10-9
收藏
得分:0 

结构体不能整体复制,你可以再写一个函数,专门是复制整个结构体


从BFS(Breadth First Study)到DFS(Depth First Study)
2007-10-17 07:46
wzhings
Rank: 1
等 级:新手上路
帖 子:92
专家分:0
注 册:2007-1-16
收藏
得分:0 

结构体里有问题..
可以在定义结构体数组时,多定义一个..然后,把它做中间元..来回的转..


在我的眼里,这个世界是由0和1组成的!~
2007-10-17 13:29
奥丁
Rank: 1
等 级:新手上路
帖 子:327
专家分:0
注 册:2006-10-18
收藏
得分:0 

不好意思我的题看错了呵呵
结构体里应该是学号 不是名字

2007-10-17 19:31
missiyou
Rank: 5Rank: 5
等 级:贵宾
威 望:16
帖 子:531
专家分:218
注 册:2007-10-9
收藏
得分:0 

直接在结构体中,定义一个学号

2007-10-17 19:56
奥丁
Rank: 1
等 级:新手上路
帖 子:327
专家分:0
注 册:2006-10-18
收藏
得分:0 

二楼的意思没明白

不过已经解决了

2007-10-18 00:15
ondy
Rank: 1
等 级:新手上路
威 望:1
帖 子:88
专家分:0
注 册:2007-9-4
收藏
得分:0 

用strcopy 函数


2007-10-18 11:28
奥丁
Rank: 1
等 级:新手上路
帖 子:327
专家分:0
注 册:2006-10-18
收藏
得分:0 

帮忙看看float *avg(STU *str[], int n)函数和void sort(STU *str[], int n)的关系是不是有问题? 排序会出错

2007-10-18 15:47
奥丁
Rank: 1
等 级:新手上路
帖 子:327
专家分:0
注 册:2006-10-18
收藏
得分:0 
str[i] = (STU *)malloc(81 * sizeof(STU));
这行是不是太浪费了?

应该怎么分配?
str[i] = (STU *)malloc(sizeof(STU));?
2007-10-18 23:27
快速回复:[求助]简单学员系统的一点问题
数据加载中...
 
   



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

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