70,036
社区成员
发帖
与我相关
我的任务
分享#include<stdio.h>
#include<stdlib.h>
struct student
{
int num;
char swt[10];
int c,oop,db;
//int avg;
float avg;
}s;
struct student input()
{
//struct student swt;
scanf("%d%s%d%d%d",&s.num,s.swt,&s.c,&s.oop,&s.db);
s.avg = (s.c+s.oop+s.db)/3.0;
return s;
}
void sort(int n,struct student wt[])
{
struct student temp;
int i,j,index;
for(i=0;i<n;i++)
{
index=i;
for(j=i+1;j<n;j++)
if(wt[j].avg>wt[index].avg)
//{
index = j;
//index=j;
//temp=wt[i];
//wt[i]=wt[index];
//wt[index]=temp;
//}
if (index != i) {
temp=wt[i];
wt[i]=wt[index];
wt[index]=temp;
}
//s=wt[i];
}
}
void output(int n,struct student *p)
{
int i;
for(i=1;i<=n;i++,p++)
{
//p=&s;
printf("%-10d%-8s%-10d%-10d%-10d%.1f\n",(*p).num,(*p).swt,(*p).c,(*p).oop,(*p).db,(*p).avg);
}
}
//void main()
int main()
{
int n,i;
struct student *p,s;
struct student swt[100];
printf("请输入学生人数:");
scanf("%d",&n);
//for(i=1;i<=n;i++)
for(i = 0; i < n; i++)
{
printf("第%d个学生:\n",i);
printf("\t\t学号 姓名 C语言 OOP 数据库\n");
swt[i] = input();
//p=&s;
}
//sort(n,&swt[i]);
sort(n, swt);
p = swt;
output(n,p);
system("pause");
}void output(int n, struct student *p)
{
int i;
for (i = 1; i <= n; i++, p++)
{
//p = &s;//-----------注释掉该行-------------
printf("%-10d%-8s%-10d%-10d%-10d%-10d", (*p).num, (*p).swt, (*p).c, (*p).oop, (*p).db, (*p).avg);
}
} for (i = 1; i <= n; i++)
{
printf("第%d个学生:\n", i);
printf("\t\t学号 姓名 C语言 OOP 数据库\n");
swt[i-1] = input();//----------修改--------------
p = swt;//----------------修改----------------
}