关于对结构体的函数调用的问题 15

首先在外部定义了一个结构体,然后在后面学生登陆函数中记录学生学号到结构体成员中,再根据这个成员在选课函数中进行对其他结构体的操作。问题:如果多次登陆只能记录最后一个学生的... 首先在外部定义了一个结构体,然后在后面学生登陆函数中记录学生学号到结构体成员中,再根据这个成员在选课函数中进行对其他结构体的操作。问题:如果多次登陆只能记录最后一个学生的学号,而且不能在课函数中进行对其他结构体的。下面是代码的一部分(代码有点多贴不上来):
【结构体】
struct student//定义学生结构体
{
char name[20];//学生姓名
long num;//学号
char sex;//性别
float score_sum;//总分
float score_every[5];//各科成绩
char lesson_name[5][20];//所选课程名称
int lesson_num[5];//所选课程序号
float lesson_score[5];//所选课程学分
float lesson_score_sum;//所选课程学分总和
int flunk;//不及格科数
char lesson_name_fail[5][20];//不及格科目名称
}stu[100];
【学生登陆函数】
void student_land()
{
int i;
long x;
system("cls");
printf("学号:");
scanf("%ld",&x);
printf("密码:");
for(i=0;i<9;i++)
{
putchar('*');
Sleep(150);
}
printf("\n");
i=0;
while(stu[i++].num==0)
{
stu[i].num=x;
break;
}
menu_3(&stu[i],i);
}
【选课函数(一部分)】

void choice(struct student *q,int n)
{
//加入判断学生是否选够5科语句(未完成)
int i,j=0,x,y=0;
system("cls");
q+=n;
for(i=0;i<9;i++)//显示课程内容
printf("课程序号:%d\t课程名称:%s\t\t学分:%.1f\t\t\n",l[i].num,l[i].name,l[i].score);
while(j<3)//进行最少选课量控制
{
printf("请选择课程:");
scanf("%d",&x);
for(i=0;i<=j;i++)//判断是否已选该课程
if(q->lesson_num[j]!=x)
y=1;
else
printf("\n已选该课程");
if(x>=1&&x<=9&&y==1)//判断是否属于课程序号范围
{
q->lesson_num[j]=x;
strcpy(q->lesson_name[j],l[x].name);
q->lesson_score[j]=l[x].score;
j++;
}
else
printf("\n请输入正确编号\n");
}
printf("你已选满三科课程,是否继续选课(1\\0):");
scanf("%d",&x);
if(x==0)
{
q->lesson_score_sum=0;
for(i=0;i<3;i++)//将所选课程学分相加
q->lesson_score_sum+=q->lesson_score[i];
printf("选课完成!欢迎下次使用!\n");
Sleep(2000);
menu_1();
}
展开
 我来答
  • 你的回答被采纳后将获得:
  • 系统奖励15(财富值+成长值)+难题奖励10(财富值+成长值)+提问者悬赏15(财富值+成长值)
雨诺与诺
2015-01-24 · TA获得超过1213个赞
知道小有建树答主
回答量:2179
采纳率:33%
帮助的人:686万
展开全部
您的问题是什么。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式