解题思路:
注意事项:
思路我觉得没问题,希望同学们可以帮我看看哪里有问题,提交不过是因为什么?
参考代码:
#include
#include
typedef struct
{
char name[35];
int score[100];
int num;
}Student; //学生信息成绩(数组表示几次的考试成绩),名字
char c[5]="DaDa"; //定义全局变量,表示name: DaDa
void sort1(int n,Student a[],int s)//函数排序,比较分数,分数大的排在前面
{
int i,j,k;
Student temp; //s是第s+1次的某位同学的成绩
for(i=0;i
{
k=i;
for(j=i+1;j
{
if(a[k].score[s]==a[j].score[s]&&strcmp(a[j].name,c)==0) //如果成绩和DaDa相同,达达名次靠前
{
k=j;
continue;
}
if(a[k].score[s]
{
k=j;
}
}
if(k!=i)
{
/*temp.score[s]=a[i].score[s];
a[i].score[s]=a[k].score[s];
a[k].score[s]=temp.score[s];*/
//这里要对结构体student 对象a数组进行排序
//不能只对score数据成员交换排序,这样会把别人的成绩变成你的
temp=a[i];
a[i]=a[k];
a[k]=temp;
}
}
}
int main()
{
int n,m,i,j,k,score=0;
char str[35];
Student a[105];
scanf("%d",&n);
for(i=0;i
{
scanf("%s",a[i].name);
//a[i].sum=0;
getchar();//吸收回车符
}
scanf("%d",&m);
for(j=0;j
{
for(i=0;i
{
scanf("%d",&score);
getchar();
scanf("%s",str);
for(k=0;k
{
if(strcmp(str,a[k].name)==0)
{
a[k].score[j]=score;
//a[i].sum+=a[i].score;
break;//找到啦就是这组数据已经输入到结构体数组里啦,可以进行下一组输入
}
}
}
}
for(i=0;i
{
sort1(n,a,i); //排序,i是第几次的成绩;
for(j=0;j
{
//printf("%d %s\n",a[j].score[i],a[j].name);
if(strcmp(a[j].name,c)==0) //排序后,找到DaDa的下标,+1就是名次啦
{
printf("%d\n",j+1);
//printf("%d\n",a[j].score[i]);
//break;
}
}
}
return 0;
}