#include<stdio.h>
#define NUM 3
struct student_score
{
char name[10];
int sum;
int rank;
}stu[3];
void fun(int p,int n)/选择排序/
{
int i,j,k,temp;
for(i=0;i<n;i++)
{ for(j=i+1;j<n;j++)
{ if((p+i)<(p+j))
{temp=(p+i);(p+i)=(p+j);*(p+j)=temp;}}
} }
int main()
{int i,a[NUM],j=0;
for(i=0;i<NUM;i++)
scanf("%s %d",&stu[i].name,&stu[i].sum);
for(i=0;i<NUM;i++)
a[i]=stu[i].sum;
fun(a,NUM);
while(a[j]!='\0')
{
for(i=0;i<NUM;i++)
if(stu[i].sum==a[j])
{stu[i].rank=j+1;j++;}
}
for(i=0;i<NUM;i++)
printf("%s %d %d\n",stu[i].name,stu[i].sum,stu[i].rank);
}
#include<stdio.h>
#define NUM 3
struct student_score
{
char name[10];
int sum;
int rank;
} stu[3];
void fun(int *p,int n)//应该为冒泡排序
{
int i,j,k,temp;
for(i=0; i<n; i++)
{
for(j=i+1; j<n; j++)
{
if(*(p+i)<*(p+j))
{
temp=*(p+j);
*(p+j)=*(p+i);
*(p+i)=temp;
}
}
}
}
int main()
{ int i,a[NUM],j=0;
for(i=0; i<NUM; i++)
scanf("%s%d",stu[i].name,&stu[i].sum);
//scanf空格去掉,输入字符串不用&
for(i=0; i<NUM; i++)
a[i]=stu[i].sum;
fun(a,NUM);
while(j<NUM)
{
for(i=0; i<NUM; i++)
if(stu[i].sum==a[j])
{
stu[i].rank=j+1;
}
j++;//j++放for循环外面
}
for(i=0; i<NUM; i++)
printf("%s %d %d\n",stu[i].name,stu[i].sum,stu[i].rank);
}
#include<stdio.h>
#include<bits/stdc++.h>
#define NUM 3
using namespace std;
struct student_score
{
char name[10];
int sum;
int rank;
}stu[3];
void fun(int p[],int n)//参数错了 是数组的第一个元素的地址,类似指针操作
{
int i,j,k,temp;
for(i=0;i<n;i++)
{
for(j=i+1;j<n;j++)
{
if(*(p+i)<*(p+j)){temp=*(p+i);*(p+i)=*(p+j);*(p+j)=temp;}
}
}
}
int main()
{int i,a[NUM],j=0;
for(i=0;i<NUM;i++)
scanf("%s %d",&stu[i].name,&stu[i].sum);
for(i=0;i<NUM;i++)
a[i]=stu[i].sum;
fun(a,NUM);
//for(int i=0;i<NUM;i++){
// cout<<a[i];
//}
while(j<3)
{
for(i=0;i<NUM;i++)
if(stu[i].sum==a[j])
{stu[i].rank=j+1;j++;}
}
for(i=0;i<NUM;i++)
printf("%s %d %d\n",stu[i].name,stu[i].sum,stu[i].rank);
}
void fun(int p,int n)改成void fun(int p[], int n)
函数的参数错了
void fun(int p,int n)改成void fun(int p[], int n)
函数的参数写错了void fun(int p,int n)改成void fun(int p[], int n)