C语言编程,从键盘输入10个学生的成绩,由高到低排序输出成绩。

急用,谢谢!

你好,我们这里需要用到数组镶套使用for函数以及冒泡算法,具体的代码如下。

#include <iostream>

using namespace std;

int main()

{

int s [10], i, j, t;

cout << "输入10个数:";

for (i = 0; i < 10; i++)

{

cout << "请输入第" << i+1 << "名学生的成绩;" << endl;

cin >> s[i];

}

for (i = 0; i<10; i++)

{

for (j = 0; j<9 - i; j++)

if (s[j]<s[j + 1])

{

t = s[j + 1];

s[j + 1] = s[j];

s[j] = t;

}

}

cout << "成绩由高到低为;";

for (i = 0; i<10; i++)

cout << s[i]<<"\t" ;

}

以下为效果图

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2018-02-23
//如果只有成绩信息就可以用下面的代码//如果还需要加入学号,姓名之类的信息,可以用结构体然后对成绩排序即可#include"stdio.h"int main(){int d[10]={0},i,j,t;//数组d存放10个学生的成绩 for(i=0;i<10;i++)//输入10个成绩(空格分开)scanf("%d",&d[i]);
for(i=0;i<9;i++)//排序
for(j=i+1;j<10;j++)
if(d[i]<d[j])
{t=d[i],d[i]=d[j],d[j]=t;} for(i=0;i<10;i++)//输出10个成绩printf("%d ",d[i]); getch();return 0;}本回答被网友采纳
第2个回答  推荐于2018-07-13
#include<stdio.h>
void main()
{
int nScore[10]={0};
int i,j,nTemp;
for(i=0;i<10;i++)
{
scanf("%d",&nScore[i]);
}
/*冒泡法排序*/

for(i=0;i<10;i++)
{
for(j=0;j<10-i-1;j++)
{
if(nScore[j]<nScore[j+1]) /*两两比较,小的放后放,一次循环后最小数在最后*/
{
nTemp=nScore[j];
nScore[j]=nScore[j+1];
nScore[j+1]=nTemp;
}
}
}
printf("由大到小排列为:\n")
for(i=0;i<10;i++)
{
printf("%d ",nScore[i]);
}
printf("\n");
}本回答被网友采纳
第3个回答  推荐于2016-08-12
#include<stdio.h>
main()
{
int a[10],b[10], max=0,s;
for(int i=0;i<10;i++)
scanf("%d",&a[i]);
for(int i=0;i<10;i++)
{
for(int j=0;j<10;j++)
{
if(max<=a[j])
{
max=a[j];
s=j;
}
}
b[i]=max;
max=0;
a[s]=0;
}
for(int i=0;i<10;i++)
printf("%d ",b[i]);
printf("\n");
}//选择排序
第4个回答  2020-04-14
#include<stdio.h>
void
main()
{
int
nScore[10]={0};
int
i,j,nTemp;
for(i=0;i<10;i++)
{
scanf("%d",&nScore[i]);
}
/*冒泡法排序*/
for(i=0;i<10;i++)
{
for(j=0;j<10-i-1;j++)
{
if(nScore[j]<nScore[j+1])
/*两两比较,小的放后放,一次循环后最小数在最后*/
{
nTemp=nScore[j];
nScore[j]=nScore[j+1];
nScore[j+1]=nTemp;
}
}
}
printf("由大到小排列为:\n")
for(i=0;i<10;i++)
{
printf("%d
",nScore[i]);
}
printf("\n");
}