学生成绩系统,语义有错误吗?
做的成绩系统的初步,做出了一个框架,然而在完善功能时,可以编译,但先输入成绩后,运行这个 void score_inquiry(struct STUD *Wstu, int *num); 时 ,运行不了,求帮助!!! 代码如下:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>
#define N 100
void meun();
void yesorno();
struct STUD
{
long long stu_ID;
char stu_name;
float stu_score;
}student[N];
void grade_add(struct STUD *Wstu, int *num);
void score_inquiry(struct STUD *Wstu, int *num);
void score_modify();
void grade_delete();
void grade_all();
void grade_statisticsc();
int main()
{
meun();
return 0;
}
void (*select)(struct STUD *Wstu,int *num);
void meun()
{
int n;
static int num = 1;
printf (" 1:学生成绩新增\n 2:学生成绩查询\n 3:学生成绩修改\n 4:学生成绩删除\n 5:学生成绩全览\n\
6:班级成绩统记\n 0:退出\n");
void *choice[6] = {grade_add,score_inquiry,score_modify,grade_delete,grade_all,grade_statisticsc};
printf ("请输入你的选择\n");
scanf("%d",&n);
while(n != 0)
{
select = choice[n - 1];
(*select)(student, &num);
meun();
}
printf ("%d\n", num);
yesorno();
}
void grade_add(struct STUD *Wstu, int *num)
{
printf("1\n");
int i;
printf("********成绩新增*********\n");
printf ("请输入班级人数:");
scanf("%d",&*num);
printf("请输入%d个学生的学号,姓名,成绩:\n",*num);
for(i = 0; i < *num; i++)
{
scanf("%lld%s%f",&Wstu[i].stu_ID,&Wstu[i].stu_name,&Wstu[i].stu_score);
}
printf("成绩录入已完成!\n");
/*
for(i = 0; i < *num; i++)
{
printf("%lld%s%.1f\n",Wstu[i].stu_ID,Wstu[i].stu_name,Wstu[i].stu_score);
}
*/
}
void score_inquiry(struct STUD *Wstu, int *num)//可能错误存在的地方
{
printf("2\n");
int i;
for(i = 0; i < *num; i++)
{
printf("%lld %s %f",Wstu[i].stu_ID,Wstu[i].stu_name, Wstu[i].stu_score);
}
}
void score_modify()
{
printf("3\n");
}
void grade_delete()
{
printf("4\n");
}
void grade_all()
{
printf("5\n");
}
void grade_statisticsc()
{
printf("6\n");
}
void yesorno()
{
char ch;
printf ("确定退出系统?(Y/N)\n");
getchar();
ch = getchar();
if(ch == 'Y'|| ch == 'y')
{
printf ("OVER!\n");
exit(0);
}
else if (ch == 'N' || ch == 'n')
meun();
}
感谢帮忙!!!!