标题:关于一个学生管理问题的错误(菜鸟在线等待回复)
只看楼主
xiaohu65
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2005-12-19
 问题点数:0 回复次数:2 
关于一个学生管理问题的错误(菜鸟在线等待回复)

关于一个学生管理问题的错误,实在看不出,请各位大虾指点~~~!(在求平均分的时候出了错,我搞不明白,能帮我看看吗?)
#include<stdio.h>
void q();
void w();
void e(); //定义函数
void r();
void t();
void pjcha();
int n;
struct student //结构体
{
char sxm[10];//学生姓名
int sage;//学生年龄
int sxb;//学生性别
int sdate;//学生生日
int sx;//数学成绩
int wy;//外语成绩
int wl;//物理成绩
int hx;//化学成绩
}s[100];
void main()
{
int a;
while(a!=6) 警告 noname.c 23: 可能在'a'定义以前使用了它在 main 函数中
{
printf("≡≡学员表≡≡\n");
printf("1.学员信息录入!\n");
printf("2.学员S1学员的成绩录入!\n");
printf("3.学员信息查询!\n");
printf("4.学员成绩查询!\n"); //主菜单!
printf("5.学员成绩排名!\n");
printf("6.退出\n");
printf("请输入一个数字: ");
scanf("%d",&a);
switch (a)
{
case 1: q(); break;
case 2: w(); break;
case 3: e(); break; // 函数的调用
case 4: r(); break;
case 5: t(); break;
case 6: break;
}
}
}
void q() //录入学生信息函数的实现
{
int i,j,m;
j=1;
n=1;
printf("≡≡≡这里是学员信息录入!≡≡≡\n");
printf("您要输入几位学生的信息: ");
scanf("%d",&m);
for(i=0;i<m;i++)
{
printf("第%d个学员的ID号:%d\n",j,n);
printf("请输入第%d个学员的姓名:",j);
scanf("%s",&s[i].sxm);
printf("请输入第%d个学员的年龄:",j);
scanf("%d",&s[i].sage);
printf("请输入第%d个学员的性别:(1为男,2为女)",j);
scanf("%d",&s[i].sxb);
printf("请输入第%d个学员的出生年月:",j);
scanf("%d",&s[i].sdate);
printf("\n\n");
j++;
n++;
}

}
void w() //这里是学员成绩录函数的实现
{
int i,j;
j=1;
printf("≡≡≡这里是学员的成绩录入!≡≡≡\n");
for(i=0;i<n-1;i++)
{
printf("学号为%d的学员数学的成绩:",j);
scanf("%d",&s[i].sx);
printf("请输入学号为%d的学员外语的成绩:",j);
scanf("%d",&s[i].wy);
printf("请输入学号为%d的学员物理的成绩:",j);
scanf("%d",&s[i].wl);
printf("请输入学号为%d的学员化学的成绩:",j);
scanf("%d",&s[i].hx);
printf("\n\n");
j++;
}
printf("没有学员.\n\n\n");
}
void e()//查询学员信息(ID查询)
{
int a;
char ch;
printf("≡≡≡这里是学员信息查询!≡≡≡\n");
do
{
printf("请输入要查询学员的ID号: ");
scanf("%d",&a);
printf(" ID号为%d的学员信息!\n",a);
printf("姓名为%s\n",s[a-1].sxm);
printf("年龄为%d\n",s[a-1].sage);
if(s[a-1].sxb==1)
{
printf("性别为男!\n");
}
else if(s[a-1].sxb==2)
{
printf("性别为女!\n");
}
else
{
printf("性别为人妖!\n");
}
printf("出生年月为%d\n",s[a-1].sdate);
printf("需要继续查询吗(y/n)?");
getchar();
scanf("%c",&ch);
}while(ch=='Y'||ch=='y');
}
void r()//成绩查询(ID查询)
{
int a;
char ch;
printf("≡≡≡这里是学员成绩查询!≡≡≡\n");
do
{
printf("请输入要查询学员的ID号: ");
scanf("%d",&a);
printf(" ID号为%d的学员信息!\n",a);
printf("要查学生的姓名为%s\n",s[a-1].sxm);
printf("数学成绩为%d\n",s[a-1].sx);
printf("外语成绩为%d\n",s[a-1].wy);
printf("物理成绩为%d\n",s[a-1].wl);
printf("化学成绩为%d\n",s[a-1].hx);
printf("需要继续查询吗(y/n)?");
getchar();
scanf("%c",&ch);
}while(ch=='Y'||ch=='y');
}
void t()//成绩排名函数
{
int b;
printf("≡≡≡这里是学员成绩排名!≡≡≡\n");
printf("1.按平均分排名!\n");
printf("2.退出!\n");
printf("请输入:");
scanf("%d",&b);
switch (b)
{
case 1: pjcha(); break;
case 2: break;
}
}
void pjcha()//按平均分排名
{
struct student temp[100];
int i,j,m;
m=1;
for(i=0;i<n-1;i++)
{
for(j=i+1;j<n;j++)
{
if(1.0/4(s[i].sx+s[i].wy+s[i].wl+s[i].hx)<1.0/4(s[j].sx+s[j].wy+s[j].wl+s[j].hx)) 这行出错了
{
temp[i]=s[i];
s[i]=s[j];
s[j]=temp[i];
}
}
}
for(i=0;i<n-1;i++)
{
printf("第%d名,姓名为%s\n",m,s[i].sxm);
printf("数学成绩为%d\n",s[i].sx);
printf("外语成绩为%d\n",s[i].wy);
printf("物理成绩为%d\n",s[i].wl);
printf("化学成绩为%d\n",s[i].hx);
printf("这位同学的总成绩为%d\n",s[i].sx+s[i].wy+s[i].wl+s[i].hx);
printf("\n\n");
m++;
}
}

搜索更多相关主题的帖子: void 学生 int 在线 
2005-12-19 15:05
topfable
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2005-12-19
得分:0 
你给a赋初值为0,试试
2005-12-19 16:36
xiaohu65
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2005-12-19
得分:0 

谢谢,我已经搞明白了,非常感谢2楼的大虾~~!

2005-12-19 17:05



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-38897-1-1.html




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

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