c语言怎么输出成绩最大并要是第几个输入的?
先对输入的成绩排序,然后用另一个数组来获取成绩的下标,下面是源码
#include <stdio.h>
int main()
{
int i,j,n,t,k,a[20],b[20];
scanf("%d",&n);
for(i=0;i<n;i++){
scanf("%d",&a[i]);
b[i]=i;
}
for(i=0;i<n-1;i++){
for(j=0;j<n-1-i;j++){
if(a[j]>a[j+1]){
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
k=b[j];
b[j]=b[j+1];
b[j+1]=k;
}
}
}
for(i=0;i<n;i++){
printf("%d ",a[i]);
}
printf("\n");
for(i=0;i<n;i++){
printf("%d ",++b[i]);
}
}
要输出成绩最大并且是第几个输入的,可以通过定义一个变量来存储最大成绩和一个计数器来记录输入的个数。在每次输入成绩时,判断该成绩是否比当前最大成绩大,如果是,则更新最大成绩和最大成绩所在的输入位置。最后输出最大成绩和其所在的输入位置即可。具体实现可以使用循环和条件语句来实现,需要注意边界条件和变量的初始化。
c语言26字母快速排序原理?
快排的核心思想:
1.将每一个数都放置在一个正确的位置上,使得该数的左边的所有数都小于他,右边的所有数都大于他,当每个数都满足这个条件时,数列排序完成。
2. 因为对每一步的处理有相似性,所以可以用递归和分治方法实现。
3. 将一个数组通过产生important拆分成2个小数组段,同时对这两个数组进行排序,提高效率

