编写一个程序,从键盘随机输入10个整数值,先用打擂台算法求出最大值和最大值编号后,再用冒泡法排序

编写一个程序,从键盘随机输入10个整数值,存储在数组中,求成绩最高者的序号和成绩值,并输出。用冒泡法将输入的10个值实现从大到小(或者从小到大)的排序,并输出排序结果。(注:不能排序后直接输出最大值,因为这样无法知道原来的序号,先用打擂台算法求出最大值和最大值编号后,再用冒泡法排序)

/*从键盘输入10个学生的成绩存储在数组中,求成绩最高者的序号和成绩*/
#include <stdio.h>
int main(){
	int i,n=1,j,t,max=0,grade[10];
	printf("请输入成绩:\n");
	for(i=0;i<10;i++){
		scanf("%d",&grade[i]);
	}
	for(i=0;i<10;i++){
		if(max<grade[i]){
			max=grade[i];
			n=i+1;
		}
	}
	printf("max=%d,num=%d\n",max,n);
	for(i=0;i<10;i++){
        for(j=0;j<9;j++){
            if(grade[j]>grade[j+1]){
                t=grade[j];
                grade[j]=grade[j+1];
                grade[j+1]=t;
            }
        }
	}
	for(i=0;i<10;i++){
        printf("%d ",grade[i]);
	}
}
//6 7 8 9 10 1 2 3 4 5

 

先遍历数组,求出最大值,在冒泡排序
 

int getmax(int a[],int n)
{
    int idx = 0;
    for(int i=1;i<n;i++)
    {
        if(a[i] > a[idx])
            idx = i;
    }
    return i;
}

void sort(int a[],int n)
{
    int i,j,t;
    for(i=0;i<n-1;i++)
        for(j=0;j<n-i-1;j++)
        {
            if(a[j] < a[j+1])
            {
                t = a[j];
                a[j] = a[j+1];
                a[j+1] = t;
            }
        }
}

void main()
{
    int a[10],i;
    for(i=0;i<10;i++)
        scanf("%d",&a[i]);
    int idx = getmax(a,10);
    printf("最大值为第%d个,最大值是:%d\n",idx,a[idx]);
    sort(a,n);
    for(i=0;i<n;i++)
        printf("%d ",a[i]);
}

 

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^