15,440
社区成员
发帖
与我相关
我的任务
分享
#include<iostream>
#include<math.h>
#include<malloc.h>
#include<string.h>
//#include "finished.h"
#include <iomanip>
#include <ctype.h>
using namespace std;
struct Student
{
char name[30];
int grade;
};
Student Stu[30];
int main()
{
int i,j;
struct Student tmp;
for (i = 0; i < 8; i++)
cin >> Stu[i].name >> Stu[i].grade;
for (i = 0; i < 7; i++)
{
for (j = i + 1; j <8; j++)
{
if (Stu[i].grade < Stu[j].grade)
{
tmp = Stu[i];
Stu[i] = Stu[j];
Stu[j] = tmp;
/*
char temp1[30];
strcpy(temp1, Stu[i].name);
strcpy(Stu[i].name, Stu[j].name);
strcpy(Stu[j].name, temp1);
int temp;
temp = Stu[i].grade;
Stu[i].grade = Stu[j].grade;
Stu[j].grade = temp;
*/
}
}
}
for (i = 0; i < 7; i++)
{
for (j = i + 1; j <8; j++)
{
if ((Stu[i].grade == Stu[j].grade) && strcmp(Stu[i].name, Stu[j].name) == 1)
{
tmp = Stu[i];
Stu[i] = Stu[j];
Stu[j] = tmp;
/*
char temp1[30];
strcpy(temp1, Stu[i].name);
strcpy(Stu[i].name, Stu[j].name);
strcpy(Stu[j].name, temp1);
int temp;
temp = Stu[i].grade;
Stu[i].grade = Stu[j].grade;
Stu[j].grade = temp;
*/
}
}
}
cout<<endl;
for (i = 0; i < 8; i++)
cout<< Stu[i].name<<" "<< Stu[i].grade<<endl;
//char str[300];
// cin.getline(str, 300);
//strlwr(str);
/* cout << char(tolower('A')) << endl;*/
/*cout << right << fixed;
cout.precision(2);
cout<<"("<<x[n]<<" "<<y[n]<<" "<<z[n]<<") "<<min_d<<endl;*/
return 0;
}
结构体赋值没必要每个成员都交换,直接定义一个结构体中间变量即可。