|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 名人堂_丿_帅 于 2013-2-14 10:57 编辑
对不起,这是整个程序。。
注释中加问号的都是我想问的。。。高手帮帮忙。。
谢谢。。。
/*
2013年2月13日13:51:11
功能:
输入学生信息,进行操作,输出排序后的学生信息
目的:
编写学生管理系统
*/
# include <stdio.h>
# include <malloc.h>
struct Student
{
char name[100];
char sex;
float score;
};
void InputStudent(struct Student * p1, int len1);
void OutputStudent(struct Student * p2, int len2);
void sort(struct Student * p3, int len3);
int chacuo(struct Student * p4, int len4);
int main(void)
{
int len;
struct Student * pArr;
printf("请输入学生的个数:\n");
printf("len = ");
scanf("%d", &len);
pArr = (struct Student *)malloc(len * sizeof(struct Student));
InputStudent(pArr, len); //输入学生信息
if (0 == chacuo(pArr, len) ) //对输入的学生信息查错
printf("你输入的学生信息 分数 不合理\n");
//有了错误怎么结束或者重新开始???
sort(pArr, len); //对输入的学生信息操作
printf("\n");
printf("---------------------------------超级分割线---------------------------\n");
printf("\n");
OutputStudent(pArr, len); //输出操作之后的学生信息
return 0;
}
void InputStudent(struct Student * p1, int len1)
{
int i = 0;
for (i=0; i<len1; ++i)
{
printf("亲,请输入第%d个学生的信息:\n", i+1);
printf("姓名:");
scanf("%s", p1.name);
printf("性别:");
scanf("%c", &p1.sex); //本语句是否正确???
//输入姓名和分数都可以,但不能输入性别,为什么???
printf("分数:");
scanf("%f", &p1.score);
}
}
void OutputStudent(struct Student * p2, int len2) //输出排序后的学生信息
{
int i;
for (i=0; i<len2; ++i)
{
printf("排名第%d名学生信息是:\n", i+1);
printf("姓名:%s\n", p2.name);
printf("性别:%c\n", p2.sex);
printf("分数:%f\n", p2.score);
}
}
void sort(struct Student * p3, int len3) //对输入的学生信息排序
{
int i, j;
struct Student t;
for (i=0; i<len3-1; ++i)
for (j=0; j<len3-1-i; ++j)
if (p3[j].score < p3[j+1].score)
{
t = p3[j];
p3[j] = p3[j+1];
p3[j+1] = t;
}
}
int chacuo(struct Student * p4, int len4) //本函数对用户输入的分数查错,如果分数大于100或者 //小于0返回0;
{
int i;
for (i=0; i<len4; ++i)
if (p4.score>100 && p4.score<0)
return 0;
}
/*
在VC++6.0中输出结果:
-------------------------
请输入学生的个数:
len = 2
亲,请输入第1个学生的信息:
姓名:zhangsan
性别:分数:100 //为什么这里连了起来???
亲,请输入第2个学生的信息:
姓名:lisi
性别:分数:98 //为什么这里连了起来???
---------------------------------超级分割线---------------------------
排名第1名学生信息是:
姓名:zhangsan
性别: //为什么没有输出???
//为什么这里多了一个换行???
分数:100.000000
排名第2名学生信息是:
姓名:lisi
性别: //为什么没有输出???
//为什么这里多了一个换行???
分数:98.000000
Press any key to continue
-------------------------
*/
|
|