C实训报告

时间:2024.4.1

语言基础实训

报告书

    设计题目:       C语言基础实训报告          

    班    级:                                     

    设 计 人:                           

 

指导教师对课程设计的评语

课程设计成绩              

教师评语:

                                               指导教师签字 :       

                                                       20##年  月   日

目录

1.项目一名称:学生成绩排名. 4

1.1实训目的. 4

1.2实训内容. 4

1.3程序流程:. 4

1.4程序代码: 5

2.项目二名称:按条件实现学生成绩排名. 7

2.1实训目的. 7

2.2实训内容. 7

2.3程序流程:. 7

2.4程序代码: 8

3.项目三名称:数组优化学生成绩排名. 9

3.1实训目的. 9

3.2 实训内容. 9

3.3程序流程. 9

3.4程序代码:. 10

4.项目四名称:学生成绩单制作. 11

4.1实训目的:. 11

4.2实训内容. 11

4.4程序代码: 11

5.项目五名称:学生成绩排序文件管理. 15

5.1实训目的. 15

5.2实训内容. 15

5.4程序流程:. 16

6.项目六名称:设计和编写学生成绩管理系统的系统主菜单. 20

6.1实训目的. 20

6.2实训内容. 20

6.3程序代码. 20

7.项目七:学生成绩管理项目实现. 22

7.1.实训目的. 22

7.2实训内容:. 22

7.3程序代码. 22

8.实训心得: 29

1.项目一名称:学生成绩排名

1.1实训目的:

(1)熟悉变量、数组定义、使用、输入、输出等基本操作;

(2)进行选择、循环结构程序设计练习;

(3)掌握冒泡法排序的算法。

1.2实训内容:

    (1)定义一个数组a[11],用以存放学生的成绩。

    (2)从键盘输入10个学生及成绩;

(3)采用冒泡法,将学生成绩按照从高到低进行排序;

(4)再输入一个学生的成绩,将此成绩按照排序规律插入原学生成绩数组;

(5)将排好序的成绩单进行反序存放,即原来是从高到低,现在改为从低到高排列。

 

1.3程序流程:

 

 

                              

                              

1.4程序代码:

     #include<stdio.h>   //头文件

     void main()      //主函数

     {int a[11];      //定义一维数组

      int i,j,t,b;

      printf("input 10 numbers :\n");

      for(i=1;i<=10;i++)   //输入十个学生成绩

      scanf("%d",&a[i]);    *scanf中不能用‘\n’

      printf("\n");

      for(j=1;j<10;j++)    //冒泡法对十个学生的成绩由高到低排序

      for(i=1;i<=10-j;i++)

        if(a[i]<a[i+1])

         {t=a[i];

          a[i]=a[i+1];

          a[i+1]=t;

          }

     printf("the sorterd number :\n");//输出排序后的结果

     for(i=1;i<11;i++)

     printf("%d ",a[i]);

     printf("\n");

     scanf("%d",&b);//再插入一个学生的成绩

     if (a[1]>b)  //插入法排序

         a[0]=b;

else

        {for(i=1;i<=11;i++)

         if(a[i]<b)

          { for(j=10;j>=i;j--)

               a[j-1]=a[j];

              a[i]=b;

               break;

          }

        }

     for(j=0;j<10;j++)

     for(i=0;i<10-j;i++)      //再次用冒泡法使成绩由低到高排序排序

       if (a[i]>a[i+1])

           {t=a[i];

            a[i]=a[i+1];

            a[i+1]=t;

            }

      printf("the scorted numbers :\n");

      for(i=0;i<11;i++)

      printf("%d ",a[i]);

      printf("\n");

     }

 

 

 

 

 

2.项目二名称:按条件实现学生成绩排名

2.1实训目的:

(1)复习数组,选择、循环结构程序设计;

(2)掌握函数的定义、调用、声明,以及参数的两种传递方式。

2.2实训内容:

(1)在函数中进行10个学生成绩从高到低排名 sort(int a[10]);

(2)改进第一步的函数为sort(int a[],int n),进行n个学生成绩从高到低排名;

(3)改进第二步的函数为sort(int a[],int n, char style), 将n个学生成绩从高到低排名,排名方式;

(4)根据sort()函数的style参数进行,如style为‘a’按升序排,style为‘d’按降序排。(a:ascending  升,d:descending 降);

(5)尝试用三种方法排序:冒泡法、选择法,插入法排序。

2.3程序流程:

   

 2.4程序代码:

              #include<stdio.h>  //头文件

#define N  10   *学会使用宏定义

void main()

{void sort(int array[],int n );//sort函数的声明

int a[N];

int i;

printf("input 10 scores:\n");//输入十个学生的成绩

for(i=0;i<N;i++)

               scanf("%d",&a[i]);

sort(a,N);   //在主函数中调用sort函数

 printf("the sorted array:\n");

for(i=0;i<N;i++)

printf("%d ",a[i]);

printf("\n");

}

void sort(int array[],int n)   //sort函数的定义

{int i,j,k,t;

                for(i=0;i<N-1;j++)          //选择法排序

                {k=i;

                 for(j=i+1;j<N;j++)

                 if(array[j]<array[k])

                 k=j;

                 t=array[k];array[k]=array[i];array[i]=t;

   }

3.项目三名称:数组优化学生成绩排名

 3.1实训目的:

(1)熟悉变量的指针和指向变量的的指针变量的概念和使用;

(2)熟悉数组的指针和指向数组的的指针变量的概念和使用。

 3.2 实训内容:

(1)定义一个数组stu[10]存放10个学生的成绩,从键盘输入数据,要求用指针实现;

(2)将数组stu[10]的内容输出到屏幕上,要求用指针实现;

(3)将成绩数组按照从高到低进行排序,要求用指针实现;

(4)将第三步内容放在函数中实现,在主函数中调用实现排序,用指针实现,输出排序后的成绩单;

(5)采用指针方法,输入字符串“student score ”,复制该字符串并输出(复制字符串采用库函数或用户自定义函数)。

3.3程序流程:

                  

   3.4程序代码:

#include <stdio.h>     //头文件

void main()

{void  sort(int *x,int n);//用指针实现

int i,*p,a[10];

printf("input 10 scores:\n");

                            p=a;

                            for(i=0;i<10;i++)

                            scanf("%d",p++);

                            p=a;

                  sort(p,10);  //在主函数中调用sort函数

printf("排序后的结果:\n");

                            for(p=a,i=0;i<10;i++)

                             { printf("%d ",*p);p++;}

                          }

                           void sort(int *x,int n)  //排序函数的定义

{

                             int i,j,t,k;

                             for(i=0;i<n-1;i++)

                               {k=i;

                                for(j=i+1;j<n;j++)

                                  if ( *(x+j)>*(x+k) )

                                   k=j;

                                  if(k!=i)

                                  {t=*(x+i);

                                   *(x+i)=*(x+k);

                                   *(x+k)=t;}

 }

                             }

4.项目四名称:学生成绩单制作

 4.1实训目的:

(1)掌握结构体变量及数组的定义、赋值、初始化、输入、输出;

(2)结构体数组的操作。

 4.2实训内容:

(1)定义一个结构体数组,存放10个学生的学号,姓名,math、Chinese、English三门课的成绩;

(2)从键盘输入10个学生的以上内容;

(3)输出单门课成绩最高的学生的学号、姓名、以及该门课程的成绩;

(4)输出三门课程的平均分数最高的学生的学号、姓名及其平均分;

(5)将10个学生按照平均分数从高到低进行排序,输出结果,格式如下所示:

number     name   math   Chinese   English    average

103        tom    90      90       100         95

101        alice    90      80       70         80

4.4程序代码:

#include <stdio.h>

# define N 3  //宏定义

struct student  //定义结构体数组

{

                  char num[7];

                  char name[8];

                  float Chinese;

                  float English;

                  float Math;

                  float aver;

                } stu[N],stud;

void main() //主函数

{int i,j,n;float max;                       

               printf("请输入3个学生的各项成绩:\n");  //输入学生的相关信息

for(i=0;i<N;i++)

               {printf("请输入学生的学号:\n");

                   scanf("%s",stu[i].num);

                   printf("请输入学生的姓名:\n");

                   scanf("%s",stu[i].name);

                   printf("请输入语文成绩:\n");

                   scanf("%f",&stu[i].Chinese);

                   printf("请输入英语成绩:\n");

                   scanf("%f",&stu[i].English);

                   printf("请输入数学成绩:\n");

                   scanf("%f",&stu[i].Math);

stu[i].aver=(stu[i].Chinese+stu[i].English+stu[i].Math)/3;             

                   printf("平均分为:%f\n",stu[i].aver);

                    }

printf("数学成绩最高的为:\n");    //计算数学成绩最高分

                max=stu[0].Math;

                for(i=1;i<N;i++)

               {if(stu[i].Math >=max)

                      {max=stu[i].Math;

                           n=i;

                    }           

               }

             printf("学号:%s姓名:%s  数学成绩:%f",stu[n].num,stu[n].name,max);

             printf("\n");

           printf("语文成绩最高的为:\n");//计算数学成绩最高分

             max=stu[0].Chinese;

             for(i=1;i<10;i++)

             {if(stu[i].Chinese>= max)

                    {max=stu[i].Chinese;

                           n=i;

                    }           

            }

             printf("学号:%s姓名:%s  语文成绩:%f",stu[n].num,stu[n].name,max);

           printf("\n");

           printf("英语成绩最高的为:\n");//计算英语成绩最高分

             max=stu[0].English;

             for(i=1;i<N;i++)

            {

                if(stu[i].English>=max)

                    {

                           max=stu[i].English;

                           n=i;

                    }           

             }

           printf("学号:%s姓名:%s  英语成绩:%f",stu[n].num,stu[n].name,max);

           printf("\n");

         printf("平均成绩最高的为:\n");  //计算平均成绩最高分

           max=stu[0].aver;

           for(i=1;i<N;i++)

           {

               if(stu[i].aver>=max)

                    {

                           max=stu[i].aver;

                           n=i;

                     }         

            }

               printf("学号:%s姓名:%s  平均成绩:%f",stu[n].num,stu[n].name,max);

            printf("\n");

            printf("按平均成绩由高到低排列:\n");            for(i=0;i<N-1;i++)

               for(j=0;j<N-1-i;j++)

               {

                    if(stu[j].aver>=stu[j+1].aver)  //用冒泡法实现平均成绩由高到低排序

                    {   stud=stu[j];

                           stu[j]=stu[j+1];

                           stu[j+1]=stud;                         

                     }

               }

            printf("     学号    姓名     语文    英语    数学    平均分\n");

            for(j=0;j<N;j++)

             printf("%s %s %f %f %f %f\n",stu[i].num,stu[j].name,

             stu[j].Chinese,stu[j].English,stu[j].Math,stu[j].aver);

        }

 

 

 

 

 

 

 

5.项目五名称:学生成绩排序文件管理

 5.1实训目的:

(1)掌握文件指针的概念和运用;

(2)掌握文件的相关操作:打开、读、写、关闭;

(3)掌握文件的定位操作。

 5.2实训内容:

(1)定义一个结构体数组,存放10个学生的学号,姓名,三门课的成绩;

(2)从键盘输入10个学生的以上内容,存入文件stud.dat,关闭文件;

(3)打开stud.dat文件,将数据读出,查看是否正确写入,关闭文件;

(4)打开文件stud.dat文件,读出数据,将10个学生按照平均分数从高到低进行排序,分别将结果输出到屏幕上和另一文件studsort.dat中;

(5)从studsort.dat 文件中读取第2,4,6,8,10个学生的数据。

5.3程序流程:

            

          

5.4程序流程:

#include <stdio.h>

#define  N  3   //宏定义

char p1[20]={"stud.dat"};

char p2[20]={"studsort.dat"};

FILE *fp;

struct student_type  //定义结构体数组

{    char name[10];

                char num[20];

                  int math; Eng; Chin; ave;

}stud[N],h;

void  input()//给结构体赋初值

{

                printf("请输入学生信息:\n\n");

                for(int i=0;i<N;i++)

               {

                   printf("\n请输入第%d个学生信息:\n",i+1);

                   printf("姓名:");

                   scanf("%s",stud[i].name);

                   printf("学号:");

                   scanf("%s",stud[i].num);

                   getchar();

                   printf("数学:");

                   scanf("%d",&stud[i].math);

                   printf("英语:");

                   scanf("%d",&stud[i].Eng);

                   printf("语文:");

                   scanf("%d",&stud[i].Chin);

             }

}

void output()//输出学生信息

{

          for(int i=0;i<N;i++)

       {printf("name:%s\nnumber:%s\nmath:%d\nEnglish:%d\nChinese:%d\n\n",stud[i].name,stud[i].num,stud[i].math,stud[i].Eng,stud[i].Chin);

          }

}

void save(char s[])//将数据写进文件

{

          int i;

          if((fp=fopen(s,"wb"))==NULL)

              {printf("cannot open file\n");

                    return;

             }

        for(i=0;i<N;i++)

        if(fwrite(&stud[i],sizeof(struct student_type),1,fp)!=1)

        printf("file write error\n");

}

void display(char s[])//打开文件stud.dat

{

               int i;

               if((fp=fopen(s,"rb"))==NULL)

             {

                 printf("cannot open file\n");

                    return;   

              }

             for(i=0;i<N;i++)

             {

                 if((fread(&stud[i],sizeof(struct student_type),1,fp))!=1)

                  {

                      printf("file read error\n");

                  }

             }

}

    void sort()//根据学生成绩排序

{

            int i,j;

            display(p1);

           for (i=0;i<N;i++)

               {

                    stud[i].ave=(stud[i].math+stud[i].Eng+stud[i].Chin)/3.0; //计算平均分

              }

           for (i=0;i<N;i++)

              for (j=0;j<N-i-1;j++)

                    if(stud[j].ave<stud[j+1].ave)      //对平均分排序

                    {

                           h=stud[j];

                           stud[j]=stud[j+1];

                           stud[j+1]=h;

                    }

      printf("来自文件stud.dat,排序结果!\n");

       printf("number        name        math           English       Chinese     average\n");

      for (i=0;i<N;i++)

             for (j=0;j<N-i-1;j++)

                    if(stud[j].ave<stud[j+1].ave)

                           {

                                  h=stud[j];

                                  stud[j]=stud[j+1];

                                  stud[j+1]=h;

                           }

      for (i=0;i<N;i++)

             {

printf("%s%14s%14d%14d%14d%18f\n",stud[i].num,stud[i].name,stud[i].math,stud[i].Eng,stud[i].Ch      in,stud[i].ave);

             }

      printf("\n");

      save(p2);

      fclose(fp);

      fclose(fp);

}

void read()//输出文件studsort.dat中读取第246810个学生的数据

{

      printf("来自文件studsort.dat,排序结果!\n");

      display(p2);

      printf("number        name        math           English       Chinese        average\n");

      for (int i=1;i<N;i=i+2)

             {

      printf("%s%14s%14d%14d%14d%18f\n",stud[i].num,stud[i].name,stud[i].math,stud[i].Eng,stud[i].Chin,stud[i].ave);

             }

      fclose(fp);

}

//主函数

void main()

{   input();//给结构体赋初值

save(p1);//将数据写进文件

fclose(fp);//关闭文件

display(p1);//打开文件stud.dat

fclose(fp);//关闭文件

output();//输出学生信息

sort();//根据学生成绩排序

read();//输出文件studsort.dat中读取第246810个学生的数据

}

6.项目六名称:设计和编写学生成绩管理系统的系统主菜单

6.1实训目的:

(1)掌握结构化程序设计的方法,自顶向下,逐步细化;

(2)设计系统框架结构,理顺主模块和各个模块之间的调用顺序和关系。

 6.2实训内容:

(1)编写主菜单,包括1输入、2插入、3排序、4查找、5删除、6输出、7退出等7个功能的菜单项,程序执行则首先显示这7个菜单项目,当用户按下功能序号时可以执行相应的功能。

(2)每一个功能编写一个相应的空函数,名称为input、insert、sort、find、delete、output、quit,由主函数来调用。

(3)为了测试调用成功与否,每个空函数里加上语句显示当前被调用的函数的名称

(4)每执行完一次某个菜单功能后,还要返回主菜单,等待用户再选择菜单项。

 6.3程序代码:

int menu_select()  //主菜单函数

{ int x;

printf("***********************************\n");

printf("*1、学生信息输入  2、学生信息插入 *\n");

      printf("*3、学生成绩,学号排序  4、学生成绩查询 *\n");

printf("*5、学生信息删除  6、学生信息输出 *\n");

printf("*7、退出程序                      *\n");

printf("***********************************\n");

do

{

printf("\n请输入1-7之间的任意数字进入功能选项:\n");

scanf("%d",&x);

}

while(x>7||x<0);

return(x);

}

void input()                                 //输入函

{

}

  int insert()                            //插入学生信息函数定义

{

}

void  savesort()                                  //排序函数

{

}

void findstu()                          //查找函数

{

}

void deletestu()                  //删除函数

{

}

7.项目七:学生成绩管理项目实现

7.1.实训目的:

(1)掌握结构化程序设计的方法,自下而上,编码实现各模块功能;

(2)掌握各个模块之间的调用顺序和关系。

7.2.实训内容:

(1)输入:函数input把20学生的学名号、姓、性别、年龄、四科成绩以及平均成绩和总成绩放在一个结构体数组中,学生的学号、姓名、四科成绩由键盘输入,然后计算出平均成绩和总成绩放在结构体对应的域中,并把原始数据放入student.dat。

(2)输出:函数output 输出全部学生的记录,从文件中读出学生的信息,并从屏幕上输出。

(3)插入:insert 函数输入一个学生的记录,按学号的先后顺序插入该学生的全部内容。

(4)删除:delete函数输入一个学生的学号或姓名,找到该学生并删除该学生的全部内容。

(5)排序:sort函数对所有学生按要求排序(1.学号  2.总成绩  ),并输出。

(6)查找:find函数输入一个学生的学号或姓名,找到该学生并输出该学生的全部内容。要求能查询多次

(7)综合调试,完成项目

7.3 程序代码

#include<stdio.h>                             //头文件的开始

#include<stdlib.h>

struct Student1                                //学生结构体

{

      long int number;

      char name[15],sex[5];

      int age;

      float score[4];

      double total;

      double averge;

};

struct Student                                  //结点结构体

{

    struct Student1 stu;

      struct Student *next;

};

void Caidan(struct Student *p);                     //菜单函数

int print();                                      //主菜单输出函数

void Input(struct Student *p);                      //数据输入函数

void Insert(struct Student *p);                      //插入函数

void Sort(struct Student *p);                       //排序总函数

void Sort1(struct Student *p);                      //学号排序函数

void Sort2(struct Student *p);                      //成绩排序函数

void Find(struct Student *p);                       //查找函数

void Delet(struct Student *p);                      //删除函数

void Display(struct Student *p);                    //从函数中读取输出函数

void Display1(struct Student *p);                   //输出函数

void out();                                     //退出函数

void Write(struct Student *,char s[]);                //写函数

void Read(struct Student *,char s[]);                //读函授

/*主函数开始*/

int main()

{   struct Student *p=NULL;                     //定义结点指针             

      for(;;)                                     //死循环控制菜单

             Caidan(p);

      return 0;

}                                            //主函数结束

void Caidan(struct Student *p)           //菜单函数

{  int n;

      n=print();                                  //调用菜单输出函数

      switch(n)                                  //用switch做菜单选择

      {

      case 1: Input(p);break;                       //输入1调用Input函数

      case 2:Insert(p);break;                       //输入2调用Insert函数

      case 3: Sort(p);break;                        //输入3调用Sort函数

      case 4:Find(p);break;                        //输入4调用Find函数

      case 5:Delet(p);break;                       //输入5调用Delet函数

      case 6:Display(p);break;                     //输入6调用Display函数

      case 7:out();break;                          //输入7调用Out函数

      }

}                                           //菜单函数结束                                                                           

int print()                                    //菜单输出函数

{

      int n;

      printf("********************目录**********************\n");

      printf("**                 1.输入                   **\n");

      printf("**                 2.插入                   **\n");

      printf("**                 3.排序                   **\n");

      printf("**                 4.查找                   **\n");

      printf("**                 5.删除                   **\n");

      printf("**                 6.输出                   **\n");

      printf("**                 7.退出                   **\n");

      printf("**********************************************\n");

      printf("请从1--7选择:");

      scanf("%d",&n);

      return n;

}

void Input(struct Student *p)       //数据输入函数

{   int count=0,N;              //定义计数器count和要输入的学生个数变量N                                           

      struct Student *a;

      printf("请输入要录入的学生个数");

      scanf("%d",&N);

      printf("请输入学号、姓名、性别、年龄和四科成绩\n");

      for(count=0;count<N;count++)  //用循环来控制内存空间的分配,并录入数据         

      {   if(count==0)

                    a=p=calloc(1,sizeof(struct Student));   

             if(count!=0)

             {  p->next=calloc(1,sizeof(struct Student));

                    p=p->next;

             }

             if(count==N-1)

                    p->next=NULL;

             scanf("%ld %s %s %d %f%f%f%f",&p->stu.number,p->stu.name,p->stu.sex,

&p->stu.age,&p->stu.score[0],&p->stu.score[1],&p->stu.score[2],&p->stu.score[3]);

      p->stu.total=p->stu.score[0]+p->stu.score[1]+p->stu.score[2]+p->stu.score[3];

             p->stu.averge=p->stu.total/4.0;

      }

      Sort1(a);                                    //调用排序函数

      Write(a,"stu.dat");                            //调用写入函数

}                                             //数据输入函数结束

void Write(struct Student *p,char s[])                //文件写入函数

{   FILE *fp;

      struct Student *a;

      if((fp=fopen(s,"wb"))==NULL)               //以二进制写的方式打开文件

      {   printf("error!!");

             exit(0);

      }

      do

      {   if(fwrite(p,sizeof(struct Student),1,fp)!=1)

                    printf("write error!!");

             a=p;

             p=p->next;

             free(a);                               //内存释放

      }while(p!=NULL);

      fclose(fp);                                //关闭文件

}                                           //文件的写函数结束

void Read(struct Student *p,char s[])              //文件的读函数

{  FILE *fp;

      struct Student *a,*b;

      if((fp=fopen(s,"rb"))==NULL)               //以二进制读的方式打开文件

      {   printf("read open error!");

             exit(0);

      }

      a=p=calloc(1,sizeof(struct Student));          //分配内存空间

      do

      {   if(fread(p,sizeof(struct Student),1,fp)!=1)   //读到内存

                  printf("read error!!");

             b=p->next;

             if(b!=NULL)

             {   p->next=calloc(1,sizeof(struct Student));

                 p=p->next;

             }

      }while(b!=NULL);

}                                            //结束

void Display(struct Student *p)                    //从文件中读并输出到文件

{   struct Student *a;

      p=Read(p,"stu.dat");

      printf("学号   姓名   性别  年龄   高数   语文    英语    体育     总成绩    平均成绩\n");

      do

      {printf("%-5ld  %-5s  %-5s  %-4d %-4.2f  %-4.2f   %-4.2f    %-4.2f    %-4.2lf    %-4.2lf\n",p->stu.number,p->stu.name,

p->stu.sex,p->stu.age,p->stu.score[0],p->stu.score[1],p->stu.score[2],p->stu.score[3],p->stu.total,p->stu.averge);

             a=p;

             p=p->next;

             free(a);

      }while(p!=NULL);

}                                            //文件结束

void Display1(struct Student *p)                   //输出函数

{   struct Student *a;

      printf("学号   姓名   性别  年龄   高数   语文    英语    体育     总成绩    平均成绩\n");

      do

      {     printf("%-5ld  %-5s  %-5s  %-4d %-4.2f  %-4.2f   %-4.2f    %-4.2f    %-4.2lf    %-4.2lf\n",p->stu.number,p->stu.name,

p->stu.sex,p->stu.age,p->stu.score[0],p->stu.score[1],p->stu.score[2],p->stu.score[3],p->stu.total,p->stu.averge);

             a=p;

             p=p->next;

      }while(p!=NULL);

}                                              //函数结束

void Insert(struct Student *p)                       //插入函数

{   int n,i,count;

      struct Student *a,*c,*t,*head;

      printf("请输入要插入学生的个数:");

      scanf("%d",&n);

      head=Read(p,"stu.dat");

      for(i=0;i<n;i++)

      { a=calloc(1,sizeof(struct Student));

        scanf("%ld %s %s %d %f %f %f %f",&a->stu.number,a->stu.name,a->stu.sex,

      &a->stu.age,&a->stu.score[0],&a->stu.score[1],&a->stu.score[2],&a->stu.score[3]);

      a->stu.total=a->stu.score[0]+a->stu.score[1]+a->stu.score[2]+a->stu.score[3];

             a->stu.averge=a->stu.total/4.0;

             a->next=NULL;

             count=0;

             p=head;

             do

             {  if(a->stu.number<p->stu.number)

                    {  if(count==0)

                           {  a->next=p;

                                  head=a;

                           }

                           else

                           {   t=c->next;

                                  c->next=a;

                                  a->next=t;

                           }

                           break;

}

                    c=p;

                    p=p->next;

                    count++;

             }while(p!=NULL);

             if(p==NULL)

             {   c->next=a;

                    a->next=NULL;

             }

      }

      Display1(head);

      Write(head,"stu.dat");

}                                   //函数结束             

void Sort1(struct Student *p)             //学号排序     

{

      int n=0,i,j;

      struct Student1 t;

      struct Student *p1,*a;

      a=p;

      do

      {  p=p->next;

             n++;

      }while(p!=NULL);

      p=a;

      for(i=0;i<n-1;i++)

      {   p=a;

             for(j=0;j<n-1-i;j++)

             {   p1=p->next;

                    if(p->stu.number>p1->stu.number)

                    {   t=p->stu;

                           p->stu=p1->stu;

                           p1->stu=t;

                    }

                    p=p1;

             }

      }

}

void Sort2(struct Student *p)             //按成绩排序函数

{   int n=0,i,j;

      struct Student1 t;

      struct Student *p1,*a;

      a=Read(p,"stu.dat");

      p=a;

      do

{   p=p->next;

             n++;

      }while(p!=NULL);

      p=a;

      for(i=0;i<n-1;i++)

      {   p=a;

             for(j=0;j<n-1-i;j++)

             {   p1=p->next;

                    if(p->stu.total>p1->stu.total)

                    {   t=p->stu;

                           p->stu=p1->stu;

                           p1->stu=t;

                    }

                    p=p1;

             }

      }

      Display1(a);

}                                               //函数结束

void Sort(struct Student *p)                         //总排序函数

{   printf("按学号排序:\n");

      Display(p);

      printf("按总成绩排名:\n");

      Sort2(p);

}

void out()                                       //退出函数

{exit(0);}                                       //函数结束

void Find(struct Student *p)                        //查找函数

{  long int num;

      int n=0;

      struct Student *a;

      p=Read(p,"stu.dat");

      printf("请输入要查询的学号:");

      scanf("%ld",&num);

      do

      {if(num==p->stu.number)

      {printf("学号 姓名 性别 年龄 高数 语文 英语 体育 总成绩 平均成绩\n");

       printf("%-5ld%-5s %-5s %-4d %-4.2f %-4.2f %-4.2f %-4.2f %-4.2lf    %-4.2lf\n",p->stu.number,p->stu.name,

p->stu.sex,p->stu.age,p->stu.score[0],p->stu.score[1],p->stu.score[2],p->stu.score[3],p->stu.total,p->stu.averge);

                    n=1;}

             a=p;

             p=p->next;

          free(a);

      }while(p!=NULL);

      if(n==0)

             printf("没有你要查找的学生信息。\n");

}

void Delet(struct Student *p)

{  long int num;

      int n=0;

      struct Student *a,*head;

      head=p=Read(p,"stu.dat");

      printf("请输入要删除学生的学号:");

      scanf("%ld",&num);

      do

      {  if(num==p->stu.number)

             {  if(n==0)

                    {   head=p->next;

                           free(p);

                           break;

                    }

                    else

                    {   a->next=p->next;

                           free(p);

                           break;

                    }

             }

             a=p;

             p=p->next;

      }while(p!=NULL);

      Display1(head);

      Write(head,"stu.dat");}

8.实训心得:

认识与接触C语言已经有差不多一年了,从上第一堂课老师就强调C语言的重要性,在上第一堂课之前我不了解什么是C我也不知道我是否能够学好他,在慢慢的接触后,我认识C语言是一门比较复杂与困难的学科。刚刚接触到C语言,完全弄不了解,不清楚为什么要这样写、有什么规则、格式、更别说什么函数的字符。在通过为期两周的C语言程序设计实训,我又增长了知识,实训期间及编写实训报告的过程中,自己学到了许多知识,为更好的从实训中吸取经验,以促进今后的学习,自己对实训作了总结,总结如下:

首先,实训的两周时间里,对于之前C语言的知识又进行了一遍系统性的复习,我认为这次复习是更加完善的,因为此次复习是在一次理论和实践相结合的复习。因此此次实训在学到知识的同时,更锻炼了自己的动手能力。其次,之前对于C语言的学习是基于Turbo C++的环境,而此次实训又熟悉了VC++6.0的编译环境,在实训的过程中能够利用所学的基本知识,解决简单的程序设计问题,通过每天的编写相关程序代码、反复调试、与同学不断地讨论及查阅相关资料。自己的编程能力有了一定程度的提高。此外,在实训的过程中克服了自己性子急的毛病,锻炼了自己的耐性。同时培养了自己独立思考的团结合作的意识使自身有了很大程度的提高。最后,在编写实训的报告中自己也发现了些许的小问题,不过通过耐心的再调试过程,最终自己成功完成了本次实训报告的编写。

实训周过后,接下来还会面对学习生活中更多新的挑战,通过两周的实训的锻炼,我增强了信心,锻炼了自己,相信自己有足够的勇气迎接未来更多的挑战。

更多相关推荐:
实训报告范文

实训报告仪模拟对话企业介绍学年学期专业班级姓名学号指导老师1实训项目商务面试进出口公司市场营销商务礼目录1实训一2实训二3实训三4实训四5实训五6实训六模拟面试与简历制作公司结构与企业文化实践建立公司模拟业务流...

实训报告范本

秦皇岛职业技术学院有关艾欣超市的实训报告实训项目:连锁超市商品摆放与周边环境实训时间:20xx年x月x日8:00-12:00.指导教师:王蕾实训人员:张艳林一、实训目的1.这次上实训的主要目的是将《连锁企业商品…

实训报告模板

荆楚理工学院课程实训成绩年级20xx级专业电气工程及其自动化课程低压电气控制技术班级11电工2班姓名志学号20xx401020xx3指导教师评语在为期三周的实训中该生严格遵守各项实训制度未有无故缺勤迟到早退现象...

实训报告

《阿里巴巴国际站操作平台》实训报告姓名舒*班级2011级阿里2班学号11*****01经济管理学院电子商务专业20xx年5月一、实训目的与要求阿里巴巴电子商务国际平台是阿里巴巴集团旗下的B2B贸易平台,主要有两…

实习实训报告

20##届本科毕业实习报告专业班级:学号:学生姓名:指导教师:实习期间:实习地点:二○##年三月二十五日信息工程系校外实习报告要求1.整个毕业实习报告包括封面、毕业实习考核内容及评分标准、正文、毕业实习考勤表、…

实训报告格式

汽车诊断与检测实训一、实训目的(一)掌握电控发动机的结构和工作原理。(二)掌握汽油喷射系统的构造及原理。(三)了解汽车空调系统特点。(四)掌握汽车空调的组成、原理、安装、作用和控制面板的用途及使用。(五)了解车…

实训报告

为期一周的实训已经画上了句号。虽然时间不长,但是这次的实训中我学到了很多,同时也让我意识到我要学的更多。通过整个实训我更加明确了自己将来的工作方向,以及自己以后学习的方向。第一天我们参观的是上海电气,上海电机学…

实训报告

实验题目双色球彩票选号器MySSQ电子0903班覃济灿学号20xx4737一实验目的1熟悉linux环境的使用2熟练linux下嵌入式Qte环境搭建3熟悉嵌入式qtopia桌面应用软件开发的一般步骤4有效结合实...

实训报告

西南财经大学天府学院20xx届企业经营实战实训报告公司名称永安堂医药有限公司指导教师辛亦维实训时间20xx年09月05日12日组长吴非联系电话1820xx61443企业经营实战课程组公司宣言以全球营销网络为依托...

实训报告

实训一互联网是无时空的百科全书一实训目的熟悉互联网无时空性开放性资源性和自助性的特征熟悉常用的搜索引擎和部分企业网站二实训内容1访问若干搜索引擎比如百度搜狗雅虎谷歌一搜等在各个搜索引擎中搜索什么是网络营销什么是...

AE实训报告

目录一实训目的2二实训内容2三制作过程31片头制作311CC风暴312制作影视特效4121合成素材制作4122主题元素合成4123添加文字与装饰413图片切换514粒子运动72影片内容的修改821雪花飘飞效果8...

物流管理专业实训报告

管理科学系实习报告学生姓名:所在专业:管理科学系物流管理专业所在班级:指导老师:职称/职务讲师二○年6月23日物流实习报告前言有一种职业,你没有经历过,就不知道其中的的专业;有一种职业,你没有体验过,你不知道其…

实训报告(43篇)