📄 123.cpp
字号:
#include<stdio.h>//#include "stdafx.h"
#define IN 8 //项目数目
#define DN 5 //信息数目
#define SN 5 //学校数目
#define TN 5 //总分信息数目
struct Infor //定义存储各项目前几名信息结构体
{
int SchoolName;
int Score;
char Person;
float Result;
};
struct Item //定义存储项目结构体
{
char ItemName;
struct Infor detail[DN];
}item[IN];
struct Total //定义存储总分信息结构体
{
int SchoolName;
int Sum;
}total[TN];
void Enter_Infor(struct Item item[]) //定义输入函数
{
int i,j,k,name;
printf("请输入数据:\n");
printf("进行的比赛项目分别为:\n");
for(k=0;k<IN;k++)
{
scanf("%c",&item[k].ItemName);
}
printf("(从左至右依次为学校编号,项目积分,项目具体成绩,获奖人姓名)\n");
for(i=0;i<IN;i++)
{
printf("项目名称为:");
fflush(stdin);
scanf("%c",&item[k].ItemName); //输入项目名称
for(j=0;j<DN;j++)
{
printf("第%d名的信息为:",j+1);
scanf("%d,%d,%f,%c",&item[i].detail[j].SchoolName,&item[i].detail[j].Score, //输入具体信息
&item[i].detail[j].Result,&item[i].detail[j].Person);
}
}
}
void Count(struct Item item[]) //定义统计分数函数
{
int i,j,m=0,sum;
int name;
printf("输入要统计的学校的名称(退出请按0):\n");
fflush(stdin);
scanf("%d",&name);
while(name!=0)
{
sum=0;
for(i=0;i<IN;i++)
for(j=0;j<DN;j++)
if(item[i].detail[j].SchoolName==name)
sum+=item[i].detail[j].Score; //统计学校总分
total[m].SchoolName=name; //将统计结果传入结构体中保存
total[m].Sum=sum;
m++;
printf("该学校的总分为:\n");
printf("%d\n",sum); //输出总分
printf("输入要统计的学校的编号(退出请按0):\n");
fflush(stdin);
scanf("%d",&name);
}
}
void Print_Infor(struct Item item[]) //定义输出函数
{
int i,j;
printf("请浏览数据:\n");
printf(" 学校编号 项目积分 项目具体成绩 获奖人姓名\n");
for(i=0;i<IN;i++)
for(j=0;j<DN;j++)
printf(" %d %d %f %c\n",
item[i].detail[j].SchoolName,item[i].detail[j].Score,
item[i].detail[j].Result,item[i].detail[j].Person);
}
void Taxis(struct Item item[]) //定义排序函数
{
int x,i,j,num;
int k=0;
int school[SN];
printf("请输入排序的标准:\n");
printf("(1代表按学校编号排名;2代表按学校总分排序;3退出)\n");
scanf("%d",&num); //1代表按学校编号排名;2代表按学校总分排序;
while(num==1)
{
for(i=0;i<SN;i++)
school[i]=total[i].SchoolName;
for(i=0;i<SN;i++) //将学校编号传入数组进行排序
for(j=0;j<SN-i;j++)
if(school[j]<school[j+1])
{
x=school[j];
school[j]=school[j+1];
school[j+1]=x;
}
printf(" 学校编号 学校总分\n");
for(j=0;j<TN;j++)
for(i=0;i<TN;i++)
if(total[i].SchoolName==school[j])
printf(" %d %d\n",total[i].SchoolName,total[i].Sum); //回到结构体中输出排序结果
printf("(1代表按学校编号排名;2代表按学校总分排序;3退出)\n");
scanf("%d",&num);
}
while(num==2)
{
for(i=0;i<TN;i++)
school[i]=total[i].Sum;
for(i=0;i<SN;i++) //将学校编号传入数组进行排序
for(j=0;j<SN-i;j++)
if(school[j]<school[j+1])
{
x=school[j];
school[j]=school[j+1];
school[j+1]=x;
}
printf(" 学校编号 学校总分\n");
for(j=0;j<TN;j++)
for(i=0;i<TN;i++)
if(total[i].Sum==school[j])
printf(" %d %d\n",total[i].SchoolName,total[i].Sum); //回到结构体中输出排序结果
printf("(1代表按学校编号排名;2代表按学校总分排序;3退出)\n");
scanf("%d",&num);
}
}
void Serach(struct Item item[]) //定义查找函数
{
int num,i,j;
int schoolname;
printf("请输入查询标准:\n");
printf("(1代表按学校编号查询;2代表按项目编号查询前两名);3退出)\n");
scanf("%d",&num); //1代表按学校编号查询;2代表按项目编号查询前三名。
if(num==1)
{
do{
printf("请输入要查询学校的编号(0退出按学校编号查询):\n");
scanf("%d",&schoolname);
printf(" 学校编号 项目积分 项目具体成绩 获奖人姓名\n");
for(i=0;i<IN;i++)
for(j=0;j<DN;j++)
{
if(item[i].detail[j].SchoolName==schoolname) //输出查询结果
printf(" %d %d %f %c\n",
item[i].detail[j].SchoolName,item[i].detail[j].Score,
item[i].detail[j].Result,item[i].detail[j].Person);
}
printf("\n");
}while(schoolname!=0);
if(schoolname==0)
Serach(item);
}
else if(num==2)
{
char itemnum;
do{
printf("请输入要查询项目的编号(0退出按项目编号查询):\n");
fflush(stdin);
scanf("%c",&itemnum);
printf("该项目的前五名为:\n");
printf(" 学校编号 项目积分 项目具体成绩 获奖人姓名\n");
for(i=0;i<IN;i++)
{
if(item[i].ItemName==itemnum)
for(j=0;j<DN;j++) //输出查询结果
{
printf(" %d %d %f %c\n",
item[i].detail[j].SchoolName,item[i].detail[j].Score,
item[i].detail[j].Result,item[i].detail[j].Person);
}
}
}while(itemnum!='0');
if(itemnum=='0')
Serach(item);
}
else printf("完成\n");
}
void main(int argc, char* argv[]) //主函数
{
Enter_Infor(item);
printf("\n");
Print_Infor(item);
printf("\n");
Count(item);
printf("\n");
Taxis(item);
printf("\n");
Serach(item);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -