换了选择排序做的题
因为第二遍做遍历的时候 手残打成了从0开始。导致排序失败= =来回找不到错位在哪里,思维定式。没难度的题目做了三个小时也是要死要死的。感觉真是爽爆了
#include <iostream>
#include <string>
using namespace std;
int main()
{
int i,key,j;
double k;
const int num=8;
string temp;
string name[num]= {"zhao","qian","sun","li","zhou","wu","zheng","wang"};
double score[num]= {79,84,65,89,60,92,78,56};
//(1)按成绩排序并输出结果
for(i=0;i<(num-1);i++)
{
k=score[i]; //初始化
key=i;
temp=name[i];
for(j=i+1;j<num;j++) //选择最小
{
if(score[j]<k)//比较
{
key=j;
k=score[j];
temp=name[j];
}
}
if(key!=i)//确认交换
{
score[key]=score[i];
score[i]=k;
name[key]=name[i];
name[i]=temp;
}
}
for(int x=0;x<num;x++)//输出
{
cout<<name[x]<<":"<<" "<<score[x]<<endl;
}
//(2)按姓名排序并输出结果
for(i=0;i<(num-1);i++)
{
k=score[i]; //初始化
key=i;
temp=name[i];
for(j=i+1;j<num;j++) //选择最小
{
if(name[j]<temp)//比较
{
key=j;
k=score[j];
temp=name[j];
}
}
if(key!=i)//确认交换
{
score[key]=score[i];
score[i]=k;
name[key]=name[i];
name[i]=temp;
}
}
for(int p=0;p<num;p++)//输出
{
cout<<name[p]<<":"<<" "<<score[p]<<endl;
}
return 0;
}