aerodynamics@ 2022-05-05 16:16 采纳率: 90.2%
浏览 29
已结题

请画出本程序的流程图


#include <stdio.h>
#include <stdlib.h>
#include <cstdlib>
#define n0 20          /*学校最大数目*/
#define m0 20          /*男子项目最大数目*/
#define w0 20          /*女子项目最大数目*/
typedef struct itemnode
{
int item[m0+w0+5][n0+1];
//item[1][0]-item[m0+w0][0]  存放项目编号
//item[0][1]-item[0][n]  存放学校编号
//item[1][]-item[m0][]  存放男子各项目成绩
//item[m0+1][]-item[m0+w0][]存放女子各项目成绩
//item[m0+w0+1][]存放男子各项目总成绩
//item[m0+w0+2][]存放女子各项目总成绩
//item[m0+w0+3][]存放学校各项目总成绩
//item[m0+w0+4][]存放学校按总分排序的名次
 
 
 
 
}itemnode;             /*存放信息*/
int main()
{
    int n,m,w;
    printf("              北京信息科技大学运动会分数统计系统            \n");
    printf("\t\t\t欢迎使用\t\t\t\t\n\n");
    printf("该系统实现的功能有:\n");
    printf("              1.可以输入各个项目的前三名或前五名的成绩;\n");
    printf("              2.能统计各学校总分;\n");
    printf("              3.可以按学校编号、学校总分、男女团体总分排序输出;\n");
    printf("              4.可以按学校编号查询取得前三或者前五名的学校。\n");
    printf("实现功能2、3、4的前提是先录入信息!\n");
printf("请先输入运动会主要信息\n");                 /*设计运动会主要数据个数*/
    printf("输入学校个数:");
scanf("%d",&n);
printf("输入男子项目个数:");
    scanf("%d",&m);
printf("输入女子项目个数:");
    scanf("%d",&w);
    int c;
    int i,j;
    struct itemnode a;
 
 
    for(i=1;i<n+1;i++)
{
   printf("请输入第%d个学校编号:",i);
   scanf("%d",&a.item[0][i]);
   printf("\n");
 
 
}
for(j=1;j<m+1;j++)
{
   printf("请输入第%d个男子项目编号:",j);
        scanf("%d",&a.item[j][0]);
        printf("\n");
    }
    for(j=m+1;j<m+w+1;j++)
    {
        printf("请输入第%d个女子项目编号:",j-m);
        scanf("%d",&a.item[j][0]);
        printf("\n");
    }
    for(i=1;i<n+1;i++)
    {
        for(j=1;j<m+1;j++)
       {
           printf("请输入第%d个学校第%d个男子项目成绩:",i,j);
           scanf("%d",&a.item[j][i]);
           printf("\n");
       }
       for(j=m+1;j<m+w+1;j++)
       {
           printf("请输入第%d个学校第%d个女子项目成绩:",i,j-m);
           scanf("%d",&a.item[j][i]);
           printf("\n");
       }
    }
 
 
    for(i=1;i<n+1;i++)
    {
        a.item[m+w+1][i]=0;
        a.item[m+w+2][i]=0;
        a.item[m+w+3][i]=0;
        a.item[m+w+4][i]=0;
    }
    //下面计算各学校、各学校男子、女子项目总分
   for(i=1;i<n+1;i++)
    {
        for(j=1;j<m+w+1;j++)
        {
            a.item[m+w+3][i]+=a.item[j][i];//学校项目总分
        }
    }
    for(i=1;i<n+1;i++)
    {
        for(j=1;j<m+1;j++)
        {
            a.item[m+w+1][i]+=a.item[j][i];//男子项目总分
        }
    }
    for(i=1;i<n+1;i++)
    {
        for(j=m+1;j<m+w+1;j++)
        {
            a.item[m+w+2][i]+=a.item[j][i];//女子项目总分
        }
    }
    printf("****************************************排序输出*************************************\n");
    //插入排序啦  很简单的
    int temp,temp1;
    int xu;
    for(i=2;i<n+1;i++)
    {
        temp=a.item[m+w+3][i];
        for(j=i-1;j>=1&&temp>a.item[m+w+3][j];j--)//寻找插入位置
        {
            a.item[m+w+3][j+1]=a.item[m+w+3][j];//交换总分列
            for(xu=0;xu<m+w+4;xu++)
            {
                if(xu!=m+w+3)//除了总分那一列不交换 其他的都交换  因为总分的那一列在上面交换
                {
                    temp1=a.item[xu][j+1];
                    a.item[xu][j+1]=a.item[xu][j];
                    a.item[xu][j]=temp1;
                }
            }
        }
        a.item[m+w+3][j+1]=temp;//小鱼于当前值的,插到当前值后面
    }
    //赋值名次
    for(i=1;i<n+1;i++)
    {
        a.item[m+w+4][i]=i;
    }
for(i=0;i<n+1;i++)
    {
        for(j=0;j<w+m+5;j++)
        {
            if(i==0)
            {
                if(j==0)
                {
                    printf("\t");
                }
                else if(j>=1&&j<m+1)
                {
                    printf("男子项目%d\t",a.item[j][i]);
                }
                else if(j>=m+1&&j<m+w+1)
                {
                    printf("女子项目%d\t",a.item[j][i]);
                }
                else if(j==m+w+1)
                {
                    printf("男子项目总成绩\t");
                }
                else if(j==m+w+2)
                {
                    printf("女子项目总成绩\t");
                }
                else if(j==m+w+3)
                {
                    printf("学校总成绩\t");
                }
                else if(j==m+w+4)
                {
                    printf(" 名次\t");
                }
            }
            else if(j==0)
            {
                if(i!=0)
                {
                    printf("学校%d\t",a.item[j][i]);
                }
            }
            else
            {
                printf("  %d\t\t",a.item[j][i]);
            }
 
 
        }
        printf("\n");
    }
    int s;
    printf("\t\t*******1.按学校总分排序输出*******\n");
    printf("\t\t*******2.按学校编号输出*******\n");
    printf("\t\t*******3.按男团总分排序输出*******\n");
    printf("\t\t*******4.按女团总分排序输出*******\n");
    printf("\n\n");
printf("请选择要实现输出功能的编号(1——4):");
scanf("%d",&s);
    switch(s)
{
case 1:
 
 
{
  for(i=0;i<n+1;i++)
    {
        for(j=0;j<w+m+5;j++)
        {
            if(i==0)
            {
                if(j==0)
                {
                    printf("\t");
                }
                else if(j>=1&&j<m+1)
                {
                    printf("男子项目%d\t",a.item[j][i]);
                }
                else if(j>=m+1&&j<m+w+1)
                {
                    printf("女子项目%d\t",a.item[j][i]);
                }
                else if(j==m+w+1)
                {
                    printf("男子项目总成绩\t");
                }
                else if(j==m+w+2)
                {
                    printf("女子项目总成绩\t");
                }
                else if(j==m+w+3)
                {
                    printf("学校总成绩\t");
                }
                else if(j==m+w+4)
                {
                    printf(" 名次\t");
                }
            }
            else if(j==0)
            {
                if(i!=0)
                {
                    printf("学校%d\t",a.item[j][i]);
                }
            }
            else
            {
                printf("  %d\t\t",a.item[j][i]);
            }
 
 
        }
        printf("\n");
    }
        }break;
    case 2:
{ //学校编号排序
   for(i=2;i<n+1;i++)
    {
        temp=a.item[0][i];
        for(j=i-1;j>=1&&temp<a.item[0][j];j--)//寻找插入位置
        {
            a.item[0][j+1]=a.item[0][j];//交换学校列
            for(xu=0;xu<m+w+5;xu++)
            {
                if(xu!=0)//除了学校那一列不交换 其他的都交换  因为学校的那一列在上面交换
                {
                    temp1=a.item[xu][j+1];
                    a.item[xu][j+1]=a.item[xu][j];
                    a.item[xu][j]=temp1;
                }
            }
        }
        a.item[0][j+1]=temp;//小鱼于当前值的,插到当前值后面
    }
     for(i=0;i<n+1;i++)
    {
        for(j=0;j<w+m+5;j++)
        {
            if(i==0)
            {
                if(j==0)
                {
                    printf("\t");
                }
                else if(j>=1&&j<m+1)
                {
                    printf("男子项目%d\t",a.item[j][i]);
                }
                else if(j>=m+1&&j<m+w+1)
                {
                    printf("女子项目%d\t",a.item[j][i]);
                }
                else if(j==m+w+1)
                {
                    printf("男子项目总成绩\t");
                }
                else if(j==m+w+2)
                {
                    printf("女子项目总成绩\t");
                }
                else if(j==m+w+3)
                {
                    printf("学校总成绩\t");
                }
                else if(j==m+w+4)
                {
                    printf(" 名次\t");
                }
            }
            else if(j==0)
            {
                if(i!=0)
                {
                    printf("学校%d\t",a.item[j][i]);
                }
            }
            else
            {
                printf("  %d\t\t",a.item[j][i]);
            }
 
 
        }
        printf("\n");
    }
};break;
    case 3:
{
    for(i=2;i<n+1;i++)
    {
        temp=a.item[m+w+1][i];
        for(j=i-1;j>=1&&temp>a.item[m+w+1][j];j--)//寻找插入位置
        {
            a.item[m+w+1][j+1]=a.item[m+w+1][j];//交换男子总分列
            for(xu=0;xu<m+w+5;xu++)
            {
                if(xu!=m+w+1)//除了男子总分那一列不交换 其他的都交换  因为男子总分的那一列在上面交换
                {
                    temp1=a.item[xu][j+1];
                    a.item[xu][j+1]=a.item[xu][j];
                    a.item[xu][j]=temp1;
                }
            }
        }
        a.item[m+w+1][j+1]=temp;//小鱼于当前值的,插到当前值后面
    }
     for(i=0;i<n+1;i++)
    {
        for(j=0;j<w+m+5;j++)
        {
            if(i==0)
            {
                if(j==0)
                {
                    printf("\t");
                }
                else if(j>=1&&j<m+1)
                {
                    printf("男子项目%d\t",a.item[j][i]);
                }
                else if(j>=m+1&&j<m+w+1)
                {
                    printf("女子项目%d\t",a.item[j][i]);
                }
                else if(j==m+w+1)
                {
                    printf("男子项目总成绩\t");
                }
                else if(j==m+w+2)
                {
                    printf("女子项目总成绩\t");
                }
                else if(j==m+w+3)
                {
                    printf("学校总成绩\t");
                }
                else if(j==m+w+4)
                {
                    printf(" 名次\t");
                }
            }
            else if(j==0)
            {
                if(i!=0)
                {
                    printf("学校%d\t",a.item[j][i]);
                }
            }
            else
            {
                printf("  %d\t\t",a.item[j][i]);
            }
 
 
        }
        printf("\n");
    }
   }break;
    case 4:
{
     for(i=2;i<n+1;i++)
    {
        temp=a.item[m+w+2][i];
        for(j=i-1;j>=1&&temp>a.item[m+w+2][j];j--)//寻找插入位置
        {
            a.item[m+w+2][j+1]=a.item[m+w+2][j];//交换女子总分列
            for(xu=0;xu<m+w+5;xu++)
            {
                if(xu!=m+w+2)//除了女子总分那一列不交换 其他的都交换  因为女子总分的那一列在上面交换
                {
                    temp1=a.item[xu][j+1];
                    a.item[xu][j+1]=a.item[xu][j];
                    a.item[xu][j]=temp1;
                }
            }
        }
        a.item[m+w+2][j+1]=temp;//小鱼于当前值的,插到当前值后面
    }
     for(i=0;i<n+1;i++)
    {
        for(j=0;j<w+m+5;j++)
        {
            if(i==0)
            {
                if(j==0)
                {
                    printf("\t");
                }
                else if(j>=1&&j<m+1)
                {
                    printf("男子项目%d\t",a.item[j][i]);
                }
                else if(j>=m+1&&j<m+w+1)
                {
                    printf("女子项目%d\t",a.item[j][i]);
                }
                else if(j==m+w+1)
                {
                    printf("男子项目总成绩\t");
                }
                else if(j==m+w+2)
                {
                    printf("女子项目总成绩\t");
                }
                else if(j==m+w+3)
                {
                    printf("学校总成绩\t");
                }
                else if(j==m+w+4)
                {
                    printf(" 名次\t");
                }
            }
            else if(j==0)
            {
                if(i!=0)
                {
                    printf("学校%d\t",a.item[j][i]);
                }
            }
            else
            {
                printf("  %d\t\t",a.item[j][i]);
            }
        }
        printf("\n");
    }
   }break;
    }
    //下面为查询模块
    printf("**************************************查询模块***********************************\n");
    int bianhao;
    printf("请输入要查询的学校编号:");
    scanf("%d",&bianhao);
    printf("\n");
    for(i=1;i<n+1;i++)
    {
        if(a.item[0][i]==bianhao)
        {
            printf("该学校的各项成绩及各项总分和名次如下:\n");
            for(j=0;j<m+w+5;j++)
            {
                if(j==0)
                {
                    printf("\t");
                }
                else if(j>=1&&j<m+1)
                {
                    printf("男子项目%d\t",a.item[j][0]);
                }
                else if(j>=m+1&&j<m+w+1)
                {
                    printf("女子项目%d\t",a.item[j][0]);
                }
                else if(j==m+w+1)
                {
                    printf("男子项目总成绩\t");
                }
                else if(j==m+w+2)
                {
                    printf("女子项目总成绩\t");
                }
                else if(j==m+w+3)
                {
                    printf("学校总成绩\t");
                }
                else if(j==m+w+4)
                {
                    printf(" 名次\t");
                }
            }
            printf("\n");
            for(j=0;j<w+m+5;j++)
            {
                if(j==0)
                {
                    printf("学校%d\t",a.item[0][i]);
                }
                else
                {
                    printf("  %d\t\t",a.item[j][i]);
                }
            }
        }
    }
    printf("\n");
    int bianhao1;
    printf("请输入要查询的项目编号:");
    scanf("%d",&bianhao1);
    printf("\n");
 
 
     for(i=2;i<n+1;i++)
    {
        temp=a.item[m+w+3][i];
        for(j=i-1;j>=1&&temp>a.item[m+w+3][j];j--)//寻找插入位置
        {
            a.item[m+w+3][j+1]=a.item[m+w+3][j];//交换总分列
            for(xu=0;xu<m+w+5;xu++)
            {
                if(xu!=m+w+3)//除了总分那一列不交换 其他的都交换  因为总分的那一列在上面交换
                {
                    temp1=a.item[xu][j+1];
                    a.item[xu][j+1]=a.item[xu][j];
                    a.item[xu][j]=temp1;
                }
            }
        }
        a.item[m+w+3][j+1]=temp;//小鱼于当前值的,插到当前值后面
    }
    int s2;
    printf("请输入要查询该项目名次的个数(3或5):");
    scanf("%d",&s2);
    switch(s2)
{
case 3:
{
            for(j=1;j<m+w+1;j++)
            {
                if(a.item[j][0]==bianhao1)
                {
                    for(i=1;i<4;i++)
                    {
                        printf("学校%d\t",a.item[0][i]);
                        printf("项目%d  成绩:%d\t",a.item[j][0],a.item[j][i]);
                        printf("\n");
                    }
                }
            }
        }break;
    case 5:
{
            for(j=1;j<m+w+1;j++)
            {
                if(a.item[j][0]==bianhao1)
                {
                    for(i=1;i<6;i++)
                    {
                        printf("学校%d\t",a.item[0][i]);
                        printf("项目%d  成绩:%d\t",a.item[j][0],a.item[j][i]);
                        printf("\n");
                    }
                }
            }
        }break;
    }
    return 0;
}
  • 写回答

2条回答 默认 最新

查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 5月20日
  • 已采纳回答 5月12日
  • 创建了问题 5月5日

悬赏问题

  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 下图接收小电路,谁知道原理
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测