编写一个程序,从键盘随机输入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