c++的一道程序题。

来源:百度知道 编辑:UC知道 时间:2024/05/10 13:46:34
问题是这样的:有5个选手,给选手们打分。分数越低的名次越靠前。
就是说分数最低的是第一名,最高分数的是最后一名。
以下是我自己编的程序:
#include<stdio.h>

void main()
{
int i,j,temp;
int nbr[5]={1,2,3,4,5};
int scr[5];
for(i=0;i<5;i++)
{
printf("请给%d号选手打分:",nbr[i]);
scanf("%d",&scr[i]);
}
for(j=0;j<5;j++)
{
for(i=0;i<j;i++)
{
if(scr[i]>scr[i+1])
{
temp=scr[i];
scr[i]=scr[i+1];
scr[i+1]=temp;
temp=nbr[i];
nbr[i]=nbr[i+1];
nbr[i+1]=temp;
}
}
}
for(i=1;i<6;i++)
{
printf("%d号选手的最后得分为%d,排名为%d\n",nbr[i-1],scr[i-1],i);
}
}

不知道为什么总是有问题。请高手指教!

#include<stdio.h>

void main()
{
int i,j,temp;
int nbr[5]={1,2,3,4,5};
int scr[5];
for(i=0;i<5;i++)
{
printf("请给%d号选手打分:",nbr[i]);
scanf("%d",&scr[i]);
}
for(j=4;j>=0;j--)
{
for(i=0;i<j;i++)
{
if(scr[i]>scr[i+1])
{
temp=scr[i];
scr[i]=scr[i+1];
scr[i+1]=temp;
temp=nbr[i];
nbr[i]=nbr[i+1];
nbr[i+1]=temp;
}
}
}
for(i=1;i<6;i++)
{
printf("%d号选手的最后得分为%d,排名为%d\n",nbr[i-1],scr[i-1],i);
}
}
改动循环地方,循环方法不是很好.
for(j=4;j>=0;j--)
{
for(i=0;i<j;i++)
这个地方