题目记不到了,我传一个留个源码:
#include <stdio.h>
#include <string.h>
struct student{
char s[1000];
int n;
};
struct student a[10000];
void quicksort(int left,int right){
int i,j,k;
struct student temp;
if(left>=right)
return;
i=left;
j=right;
k=a[left].n;
while(j>i){
while(a[j].n>=k&&j>i){
if(a[j].n==k){
if(strcmp(a[j].s,a[left].s)<=0)
j--;else
break;}
else
j-- ;
}
while(a[i].n<=k&&i<j){
if(a[i].n==k){
if(strcmp(a[i].s,a[left].s)>=0)
i++;else
break;}
else
i++;}
temp=a[j];
a[j]=a[i];
a[i]=temp;
}
temp=a[j];
a[j]=a[left];
a[left]=temp;
quicksort(left,i-1);
quicksort(i+1,right);
}
int main(){
int num;
char o[1000];
scanf("%d",&num);
getchar();
for(int i=1;i<=num;i++){
gets(a[i].s);
char *u=a[i].s;
while(*u<'0'||*u>'9')
u++;
*(u-1)='\0';
a[i].n=0;
while(*u!='\0'){
a[i].n=(*u-'0')+a[i].n*10;
u++;
}}
quicksort(1,num);
for(int i=num;i>=1;i--)
{
puts(a[i].s);
printf("%d\n\n",a[i].n);
}
return 0;
}
//第二题:结构数组
#include <stdio.h>
#include <stdlib.h>
#include<string.h>
#include<math.h>
struct student
{
char name[20];
char number[30];
int score[5];
double average;
int total;
};
int main(void)
{
struct student stu[100];
int count;
int n;
scanf("%d", &n); getchar();
for (count = 0; count < n; count++)
{
int sum=0;
gets(stu[count].name);
gets(stu[count].number);
for (int i = 0; i < 5; i++)
{
scanf("%d", &stu[count].score[i]); getchar();
sum += stu[count].score[i];
stu[count].total = sum;
}
stu[count].average = (double)sum / 5;
}
for (count = 0; count < n; count++)
{
printf("Name:%s\n",stu[count].name);
printf("ID:%s\n",stu[count].number);
printf("Score:");
for (int i = 0; i < 5; i++)
{
printf("%d ", stu[count].score[i]);
}
printf("\n");
printf("average:%.2lf total:%d\n",stu[count].average,stu[count].total);
printf("\n");
}
system("pause");
return 0;
}