急救!!明天就答辩,大家帮帮忙吧

时间:2022-04-25 21:31:11


题目是:用C语言编写下面的程序 我已经编完了,可运行有个错误,怎么改都改不过来了,麻烦好心人帮改下被,我明天就答辩了,大家帮帮忙吧!注意:是在TC2.0环境下运行的,不然错误更多!!

 学生成绩管理(结构体数组、函数、指针、算法、流程结构及文件等的综合应用)

程序说明:有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];  /* 定义结构体数组,存贮多个学生的记录*/
我已经编完了,可运行有个错误,怎么改都改不过来了,麻烦好心人帮改下被,我明天就答辩了,大家帮帮忙吧!注意:是在TC2.0环境下运行的,不然错误更多!!
 

 #include<stdio.h> /*引用库函数*/ 
#include<ctype.h> 
#include<string.h> 
#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<N;i++)
  {printf("请输入学生的学号:       \n");
   scanf("%s",stu[i].num);
   printf("请输入学生的姓名:       \n");
   scanf("%s",stu[i].name);
   printf("请输入学生的数学成绩:       \n");
   scanf("%s",stu[i].shuxue);
   printf("请输入学生的语文成绩:       \n");
   scanf("%s",stu[i].yuwen);
   printf("请输入学生的英语成绩:       \n");
   scanf("%s",stu[i].yingyu);
   }

 
 
 
int serch_a_record(stu[],int n) /*按学号查找*/ 
{ int i=0; 
 
  printf("请输入要查询的学生的学号:       \n"); 
  scanf("%s",num); 
  while(strcmp(stu[i].name,s)!=0&&i<N) i++; 
     if(i==n) 
    { printf("没有您查找的学号\n");
     } 
     if(i<N)
    {printf("该生的姓名为:%s\n该生的数学成绩为: %d\n该生的语文成绩为:  %d\n该生的英语成绩为:   %d\n",stu[i].name,stu[i].shuxue,stu[i].yuwen,stu[i].yingyu);
     }
}
void sort()
{
 int i,j,p,t,u,m;
 struct student t;
   do
  {printf("(1)依平均分排序\n");
   printf("(2)依数学成绩排序\n");
   printf("(3)依语文成绩排序\n");
   printf("(4)依英语成绩排序\n");
   scanf("%d",&u);
   printf("\n");
  }while(u!=1&&u!=2&&u!=3&&u!=4);
 if(u==1)
 {inti,j,p,t;
  for(i=0;i<N;i++)
  {sum=stu[i].shuxue+stu[i].yuwen+stu[i].yingyu;
     stu[i].average=sum/3;
     }
  
    
 
   for(j=0;j<N-1;j++)/* 选择法排序 */
      {p=j;
        for(i=j+1;i<N;i++)
         if(stu[i].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<N-1;i++) /*冒泡法排序*/ 
   for(j=0;j<N-1-i;j++) 
     if(stu[j].shuxue<stu[j+1].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<N-1;i++) /*冒泡法排序*/ 
   for(j=0;j<N-1-i;j++) 
     if(stu[j].yuwen<stu[j+1].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<N-1;i++) /*冒泡法排序*/ 
   for(j=0;j<N-1-i;j++) 
     if(stu[j].yingyu<stu[j+1].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; 
      } 
  } 
}

 


13 个解决方案

#1


我靠 ,这也叫毕设啊

#2


都要毕业了,这个都搞不定!

#3


引用 1 楼 iamliadai 的回复:
我靠   ,这也叫毕设啊 

这个顶多就是一个C的课程设计。

#4


先不要讨论毕设的难度,请大家帮忙看看,谢谢各位了~~很着急的

#5


这也是毕业设计啊?
没编译你程序,大楷看了一下,只是运行有一个错误吗?怕不是吧,语法都一大堆,你这个能编译过去?

重复定义t
void sort()
{
int i,j,p,t,u,m;
struct student t;



你的结构哪来这三项
  scanf("%s",stu[i].shuxue);
  printf("请输入学生的语文成绩:      \n");
  scanf("%s",stu[i].yuwen);
  printf("请输入学生的英语成绩:      \n");
  scanf("%s",stu[i].yingyu); 


这个函数第一个参数没类型行吗?还有输入的num比较的却是s,这两个参数定义了吗
int serch_a_record(stu[],int n) /*按学号查找*/
{ int i=0;

  printf("请输入要查询的学生的学号:      \n");
  scanf("%s",num);
  while(strcmp(stu[i].name,s)!=0&&i <N) i++;
    if(i==n)
    { printf("没有您查找的学号\n");
    }
    if(i <N)
    {printf("该生的姓名为:%s\n该生的数学成绩为: %d\n该生的语文成绩为:  %d\n该生的英语成绩为:  %d\n",stu[i].name,stu[i].shuxue,stu[i].yuwen,stu[i].yingyu);
    }
}
 

还有sort函数里那么多重复代码,既然代码相同干吗不写成一个函数?

#6


靠,颜色都没显示出来,再发一下,注意红色部位

void sort()
{
int i,j,p, t,u,m;
struct student  t;

  scanf("%s",stu[i]. shuxue);
  printf("请输入学生的语文成绩:      \n");
  scanf("%s",stu[i]. yuwen);
  printf("请输入学生的英语成绩:      \n");
  scanf("%s",stu[i]. yingyu);

int serch_a_record( stu[],int n) /*按学号查找*/
{ int i=0;

  printf("请输入要查询的学生的学号:      \n");
  scanf("%s", num);
  while(strcmp(stu[i].name, s)!=0&&i <N) i++;
    if(i==n)
    { printf("没有您查找的学号\n");
    }
    if(i <N)
    {printf("该生的姓名为:%s\n该生的数学成绩为: %d\n该生的语文成绩为:  %d\n该生的英语成绩为:  %d\n",stu[i].name,stu[i].shuxue,stu[i].yuwen,stu[i].yingyu);
    }
}

#7


这个是大一的毕设!
我现在大一

#8


刚答辩完的偶低调的路过~~~~~~~~

#9


引用 7 楼 lovemzz 的回复:
这个是大一的毕设! 
我现在大一

请问下大一就毕业答辩了???

#10


这是课程设计,课设也要答辩

#11


引用 10 楼 jieao111 的回复:
这是课程设计,课设也要答辩

原来是这样啊~~~
还没遇到课程设计课~~~嘿嘿
大家直接忽略9楼~~

#12


没装TC!~
楼主看一下5楼的建议吧!
赶紧把该改的地方改了……

#13


你用VC编译一下 也可以啊 

#1


我靠 ,这也叫毕设啊

#2


都要毕业了,这个都搞不定!

#3


引用 1 楼 iamliadai 的回复:
我靠   ,这也叫毕设啊 

这个顶多就是一个C的课程设计。

#4


先不要讨论毕设的难度,请大家帮忙看看,谢谢各位了~~很着急的

#5


这也是毕业设计啊?
没编译你程序,大楷看了一下,只是运行有一个错误吗?怕不是吧,语法都一大堆,你这个能编译过去?

重复定义t
void sort()
{
int i,j,p,t,u,m;
struct student t;



你的结构哪来这三项
  scanf("%s",stu[i].shuxue);
  printf("请输入学生的语文成绩:      \n");
  scanf("%s",stu[i].yuwen);
  printf("请输入学生的英语成绩:      \n");
  scanf("%s",stu[i].yingyu); 


这个函数第一个参数没类型行吗?还有输入的num比较的却是s,这两个参数定义了吗
int serch_a_record(stu[],int n) /*按学号查找*/
{ int i=0;

  printf("请输入要查询的学生的学号:      \n");
  scanf("%s",num);
  while(strcmp(stu[i].name,s)!=0&&i <N) i++;
    if(i==n)
    { printf("没有您查找的学号\n");
    }
    if(i <N)
    {printf("该生的姓名为:%s\n该生的数学成绩为: %d\n该生的语文成绩为:  %d\n该生的英语成绩为:  %d\n",stu[i].name,stu[i].shuxue,stu[i].yuwen,stu[i].yingyu);
    }
}
 

还有sort函数里那么多重复代码,既然代码相同干吗不写成一个函数?

#6


靠,颜色都没显示出来,再发一下,注意红色部位

void sort()
{
int i,j,p, t,u,m;
struct student  t;

  scanf("%s",stu[i]. shuxue);
  printf("请输入学生的语文成绩:      \n");
  scanf("%s",stu[i]. yuwen);
  printf("请输入学生的英语成绩:      \n");
  scanf("%s",stu[i]. yingyu);

int serch_a_record( stu[],int n) /*按学号查找*/
{ int i=0;

  printf("请输入要查询的学生的学号:      \n");
  scanf("%s", num);
  while(strcmp(stu[i].name, s)!=0&&i <N) i++;
    if(i==n)
    { printf("没有您查找的学号\n");
    }
    if(i <N)
    {printf("该生的姓名为:%s\n该生的数学成绩为: %d\n该生的语文成绩为:  %d\n该生的英语成绩为:  %d\n",stu[i].name,stu[i].shuxue,stu[i].yuwen,stu[i].yingyu);
    }
}

#7


这个是大一的毕设!
我现在大一

#8


刚答辩完的偶低调的路过~~~~~~~~

#9


引用 7 楼 lovemzz 的回复:
这个是大一的毕设! 
我现在大一

请问下大一就毕业答辩了???

#10


这是课程设计,课设也要答辩

#11


引用 10 楼 jieao111 的回复:
这是课程设计,课设也要答辩

原来是这样啊~~~
还没遇到课程设计课~~~嘿嘿
大家直接忽略9楼~~

#12


没装TC!~
楼主看一下5楼的建议吧!
赶紧把该改的地方改了……

#13


你用VC编译一下 也可以啊