实习报告

题目:写一个统计程序产生各种成绩单和得分报表。

   

需求分析

(1)  用户从键盘上首先录入若干运动员的参赛项目和成绩得分等数据,再输入学校清单;

(2)  通过Dev-c++ 调试编译 命令提示符方式屏幕输出;

(3)  产生各学校的成绩单,内容包括各学校所取得的每项成绩的项目号、名次(成绩)、姓名和得分;产生团体总分报表,内容包括校号、男子团体总分、女子团体总分和团体总分;

(4)  测试数据:见实验报告末;

   

详细设计

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#define n 5//运动员编号

#define m 2//学校编号 

typedef struct project

{

int id;

char name[11];

char projectname[11];

char schoolname[13];

char sex[3];

int grade;

int score;

}Project;

typedef struct school

{

char schoolname[13];

int malescore;

int femalescore;

int sum;

}School;//团体总分报表

typedef struct projects

{

Project data;

struct projects *next;

}Projects;//实现链表的顺序存储 

typedef struct schools

{

School data[100];

int length;

}Schools;

void input(Projects *p)

{

Projects *p1=(Projects *)malloc(sizeof(Projects));

if(p->next == NULL) p1->data.id=1;

else p1->data.id=(p->next->data.id)+1;

printf("请输入运动员姓名:\n");

scanf("%s",p1->data.name);

printf("请输入项目名称:\n");

scanf("%s",p1->data.projectname);

printf("请输入学校名称:\n");

scanf("%s",p1->data.schoolname);

printf("请输入运动员性别(F/M):\n");

scanf("%s",p1->data.sex);

printf("请输入运动员名次:\n");

scanf("%d",&(p1->data.grade));

printf("请输入运动员成绩:\n");

scanf("%d",&(p1->data.score));

p1->next=p->next;

p->next=p1;

}

void inputSchools(Schools *s)

{

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

    {

       printf("请输入第%d个学校名:",i+1);

       scanf("%s",s->data[i].schoolname);

       //printf("%s",s->data[i].schoolname);

       s->data[i].femalescore=0;

       s->data[i].malescore=0;

       s->data[i].sum=0; 

       

    }

       s->length=m;

}

void math(Projects P,Schools *x)

{

     Projects *p1=P.next;int i;

     while(p1)

     {

     for(i=0;i<x->length;i++)

      {

                   

         if(!strcmp(p1->data.schoolname,x->data[i].schoolname))

         {

            if(!strcmp(p1->data.sex,"F"))x->data[i].femalescore+=p1->data.score;

            else x->data[i].malescore+=p1->data.score;

                x->data[i].sum+=x->data[i].femalescore+x->data[i].malescore;

         }    

      }p1=p1->next;          

    }

}

void output(Projects P,Schools *x)

{   

    Projects *p1=P.next;           

    for(int i=0;i<x->length;i++)

        {

            p1=P.next;//重置链表指针 

            printf("学校名称:%s\n",x->data[i].schoolname);

        while(p1)

         {

if(!strcmp(p1->data.schoolname,x->data[i].schoolname))

           {

printf("运动员姓名:%s",p1->data.name);

printf("项目名称:%s",p1->data.projectname);

printf("运动员名次:%d",p1->data.grade);

printf("运动员成绩:%d\n",p1->data.score);

           }p1=p1->next;

         } 

       printf("男子团体总分:%d ",x->data[i].malescore);

       printf("女子团体总分:%d ",x->data[i].femalescore);

       printf("学校总分:%d \n",x->data[i].sum);  

       }

   

        

}

int main(){

Projects P,*p1;Schools x;

P.next=NULL;//指针初始化 

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

 {

    printf("录入第%d个运动员的信息:\n",i+1);

input(&P);

 }//输入项目 

inputSchools(&x);//输入学校

math(P,&x);//计算

output(P,&x);//打印

system("PAUSE");

return 0;

}

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐