解题思路:
注意事项:
思路我觉得没问题,希望同学们可以帮我看看哪里有问题,提交不过是因为什么?
参考代码:
#include<stdio.h>
#include<string.h>
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<n-1;i++)
{
k=i;
for(j=i+1;j<n;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]<a[j].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<n;i++)
{
scanf("%s",a[i].name);
//a[i].sum=0;
getchar(); //吸收回车符
}
scanf("%d",&m);
for(j=0;j<m;j++) //m次考试
{
for(i=0;i<n;i++) // 输入成绩与名字去k=0循环中寻找匹配的人,将成绩输入到该同学的成绩单里
{
scanf("%d",&score);
getchar();
scanf("%s",str);
for(k=0;k<n;k++)
{
if(strcmp(str,a[k].name)==0)
{
a[k].score[j]=score;
//a[i].sum+=a[i].score;
break; //找到啦就是这组数据已经输入到结构体数组里啦,可以进行下一组输入
}
}
}
}
for(i=0;i<m;i++)
{
sort1(n,a,i); //排序,i是第几次的成绩;
for(j=0;j<n;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;
}
0.0分
0 人评分
C语言训练-求s=a+aa+aaa+aaaa+aa...a的值 (C语言代码)浏览:1084 |
C语言训练-自由落体问题 (C语言代码)浏览:1775 |
C语言程序设计教程(第三版)课后习题4.9 (C语言代码)浏览:1555 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:485 |
C语言程序设计教程(第三版)课后习题8.2 (C语言代码)浏览:5275 |
蛇行矩阵 (C语言代码)浏览:607 |
C语言程序设计教程(第三版)课后习题9.3 (C语言代码)浏览:750 |
前10名 (C语言代码)浏览:773 |
C语言程序设计教程(第三版)课后习题12.1 (C语言代码)浏览:689 |
C语言程序设计教程(第三版)课后习题10.7 (用指针求解)浏览:1542 |