#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct stu
{
char num[9];
int D_grade;
int C_grade;
int sum ;
};
void sort(struct stu a[],int n)
{
for (int i = 0; i <n; i++) //排序
{
for (int j = 0; j < n-i-1; j++)
{
if (a[j].sum < a[j+1].sum)
{
struct stu temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
}
}
}
for (int i = 0; i < n - 1; i++)
{
if (a[i].sum == a[i + 1].sum) //總分相同 德才分相同
{
if (a[i].D_grade == a[i + 1].D_grade)
{
if (strcmp(a[i].num, a[i + 1].num) > 0)
{
struct stu temp = a[i];
a[i] = a[i + 1];
a[i + 1] = temp;
}
}
if ( a[i].D_grade < a[i + 1].D_grade) //總分相同德分高
{
struct stu temp = a[i];
a[i] = a[i + 1];
a[i + 1] = temp;
}
}
}
for (int i = 0; i < n; i++)
{
printf("\n%s %d %d", a[i].num, a[i].D_grade, a[i].C_grade);
}
}
int main()
{
int N, L, H;
int k1 = 0,k2=0,k3=0,k4=0,flag=0;
scanf("%d %d %d",&N,&L,&H);
struct stu *stu1;
struct stu *s1,*s2,*s3,*s4;
stu1 = (struct stu*)malloc(sizeof(struct stu)*N);
s1 = (struct stu*)malloc(sizeof(struct stu)*N);
s2 = (struct stu*)malloc(sizeof(struct stu)*N);
s3 = (struct stu*)malloc(sizeof(struct stu)*N);
s4 = (struct stu*)malloc(sizeof(struct stu)*N);
for (int i=0;i<N;i++)
{
scanf("%s %d %d",&stu1[i].num,&stu1[i].D_grade,&stu1[i].C_grade);
}
for (int i=0; i < N; i++)
{
if (stu1[i].D_grade >= L && stu1[i].C_grade >= L)
{
if (stu1[i].D_grade >= H && stu1[i].C_grade >= H ) //第一類 德才全盡
{
stu1[i].sum = stu1[i].D_grade + stu1[i].C_grade;
s1[k1++] = stu1[i];
}
if (stu1[i].D_grade >= H && stu1[i].C_grade < H) //第二類 德勝才
{
stu1[i].sum = stu1[i].D_grade + stu1[i].C_grade;
s2[k2++] = stu1[i];
}
if (stu1[i].D_grade < H && stu1[i].C_grade < H && stu1[i].D_grade >= stu1[i].C_grade) //第三類 德才兼亡
{
stu1[i].sum = stu1[i].D_grade + stu1[i].C_grade;
s3[k3++] = stu1[i];
}
if( stu1[i].D_grade <stu1[i].C_grade && stu1[i].D_grade<H) //第四類 其他
{
stu1[i].sum = stu1[i].D_grade + stu1[i].C_grade;
s4[k4++] = stu1[i];
}
}
}
printf("%d", k1 + k2 + k3 + k4);
sort(s1,k1);
sort(s2, k2);
sort(s3, k3);
sort(s4, k4);
return 0;
}
uj5u.com熱心網友回復:
//scanf("%s %d %d",&stu1[i].num,&stu1[i].D_grade,&stu1[i].C_grade);
scanf("%s %d %d", stu1[i].num,&stu1[i].D_grade,&stu1[i].C_grade);供參考~
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/97362.html
標籤:C語言
上一篇:opencv的效率問題
下一篇:代碼輸入有問題怎么改
