mzz 发布留言 2008-6-29 12:41
我被卡住了,C语言设计的问题,请各位帮忙看看,谢谢!!!!!
题目是:1、学生成绩管理(结构体数组、函数、指针、算法、流程结构及文件等的综合应用)
程序说明:有N个学生,每个学生的数据包含学号(不重复)、姓名、三门课的成绩及平均成绩,试设计一学生成绩管理系统,使之能提供以下功能:
(1)主菜单
学生成绩管理系统
1、 成绩录入
2、 成绩查询
3、 成绩统计
4、 退 出
(2)各菜单项功能
① 成绩录入:输入学生的学号、姓名及三门课的成绩;
② 成绩查询:(至少一种查询方式)。
v 按学号查询学生记录。
v 查询不及格学生的记录。
③成绩统计:
v 计算学生的平均分;
v 根据学生的平均分高低,对学生的数据进行排序后输出;
v 对学生单科成绩排序,输出学生姓名与该科成绩;
④退出系统:退出整个系统(即主菜单)。
(3)结构体数组:
#define N 30
struct student
{int num; /* 定义学号*/
char name[20]; /* 定义姓名*/
float score[3]; /* 定义存贮三门课成绩的数组*/
float average; /* 定义平均成绩*/
};struct student stu[N]; /* 定义结构体数组,存贮多个学生的记录*/
=================================================================================
以下是学生的编写的源代码
=================================================================================
#include
/*引用库函数*/
#include
#include
#define N 30
struct student/*定义结构体数组*/
{
int num; /*学号*/
char name[20]; /*姓名*/
float score[3];
float average; /*平均成绩*/
};struct student stu[N]; /*结构体数组变量*/
int menu_select() /*菜单函数*/
{
char c;
do{
printf("\t\t**************学生成绩管理系统************\n"); /*菜单选择*/
printf("\t\t | 1. 成 绩 录 入 |\n");
printf("\t\t | 2. 成 绩 查 询 |\n");
printf("\t\t | 3. 成 绩 统 计 |\n");
printf("\t\t | 4. 退 出 |\n");
printf("\t\t*****************************************\n");
printf("\t\t\t请做出选择(1-4):");
c=getchar(); /*读入选择*/
}while(c<'1'||c>'4');
return c;
}
int Input(student stu[],int n) /* 录入成绩 */
{int i;
for(i=0;i {printf("请输入学生的学号: \n");
scanf("%s",stu.name);
printf("请输入学生的数学成绩: \n");
scanf("%s",stu.yuwen);
printf("请输入学生的英语成绩: \n");
scanf("%s",stu,int n) /*按学号查找*/
{ int i=0;
printf("请输入要查询的学生的学号: \n");
scanf("%s",num);
while(strcmp(stu.name,stu.yuwen,stu.shuxue+stu.yingyu;
stu.average>stu[p].average)
if(p!=j)
{t=stu[j].average;
stu[j].average=stu[p].average;
stu[p].average=t;
}
}printf("依平均分从高到低依次是:\n");
for(m=1,m<=N,m++)
printf("第 %d 名 姓名是: %s 学号是: %s 平均分是: %d",m,stu[m-1].name,stu[m-1].num,stu[m-1].average);
}
if(u==2)
{ int i,j,m;
struct student t;
for(i=0;i for(j=0;j if(stu[j].shuxue {t=stu[j].shuxue;
stu[j].shuxue=stu[j+1].shuxue;
stu[j+1].shuxue=t;
}
printf("依数学成绩排由高到低依次是: \n");
for(m=1,m<=N,m++)
printf("第 %d 名 姓名是: %s 学号是: %s 数学成绩是: %d",m,stu[m-1].name,stu[m-1].num,stu[m-1].shuxue);
}
if(u==3)
{ int i,j,m;
struct student t;
for(i=0;i for(j=0;j if(stu[j].yuwen {t=stu[j].yuwen;
stu[j].yuwen=stu[j+1].yuwen;
stu[j+1].yuwen=t;
}
printf("依语文成绩排由高到低依次是: \n");
for(m=1,m<=N,m++)
printf("第 %d 名 姓名是: %s 学号是: %s 语文成绩是: %d",m,stu[m-1].name,stu[m-1].num,stu[m-1].yuwen);
}
if(u==4)
{ int i,j,m;
struct student t;
for(i=0;i for(j=0;j if(stu[j].yingyu {t=stu[j].yingyu;
stu[j].yingyu=stu[j+1].yingyu;
stu[j+1].yingyu=t;
}
printf("依英语成绩排由高到低依次是: \n");
for(m=1,m<=N,m++)
printf("第 %d 名 姓名是: %s 学号是: %s 英语成绩是: %d",m,stu[m-1].name,stu[m-1].num,stu[m-1].yingyu);
}
}
void main() /*主函数*/
{
int n=0;
for(;;)
{ switch(menu_select()) /*选择判断*/
{ case 1: printf("\t\t | 1. 成 绩 录 入 |\n");
n=Input(stu,n);break;
case 2: printf("\t\t | 2. 成 绩 查 询 |\n");
serch_a_record(stu[], n); break;
case 3: printf("\t\t | 3. 成 绩 统 计 |\n");
Sort(); break;
case 4: printf("\t\t | 4. 退 出 |\n");
break;
}
}
}
=================================
这个程序运行后出现的问题:
编译源程序C:\321.C
错误:C:\321.C 29:变量列表语法错误
*** 编译出现1个错误 ***
我怎么改第29行也不行,运行还是错误。
运行环境是TC2.0,请各位高手帮忙看看,先谢谢了!!!!
页: [1]