用计算机C语言编程,程序设计题:从键盘输入十个数,将他们进行降序排列。 求解答需要详细过程,谢谢!

如题所述

#include<stdio.h>
int main()
{int i,j,t,a[10];
 for(i=0;i<10;i++)    //输入10个整数
   scanf("%d",&a[i]);
 for(i=0;i<9;i++)    //降序冒泡排序
   for(j=0;j<9-i;j++)
     if(a[j]<a[j+1])
     {t=a[j];a[j]=a[j+1];a[j+1]=t;}   
 for(i=0;i<10;i++)    //输出
   printf("%d ",a[i]);
 printf("\n"); 
 return 0;
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-12-30
void _tmain(int argc, _TCHAR* argv[])
{
 char a[10];
 char i, j;
 char temp;
 for (i = 0; i < 10; i++)
 {
  scanf_s("%d", &a[i], 1);
  getchar();
 }
 for (i = 1; i < 10; i++)
 {
  for (j = 1; j < 10; j++)
  {
   if (a[j - 1] < a[j])
   {
   temp = a[j - 1];
   a[j - 1] = a[j];
   a[j] = temp;
   }
  }
 }
 for (i = 0; i < 10; i++)
 printf("%d", a[i]);
 while (1);

}
//直接可用,就是冒泡算法。

第2个回答  2017-12-30
#include<stdio.h>
int main()
{
    int a[10],i,j,tmp,n=10;
    //循环输入
    for(i=0;i<n;i++)
    {
        scanf("%d",&a[i]);
    }
    //冒泡排序
    for(i=0;i<n-1;i++)//外循环推动内循环,10个数循环9次就可以排序完
    {
        for(j=0;j<n-i-1;j++)    //内循环每次将最小值放大数组的最右边,j<n-i-1,减i是因为数组最右边有i个数已经是降序
        {
            if(a[j]<a[j+1])
            {
                tmp=a[j];
                a[j]=a[j+1];
                a[j+1]=tmp;
            }
        }
    }
    //循环输出
     for(i=0;i<10;i++)
    {
        printf("%d ",a[i]);
    }
}

冒泡排序看的累,可以百度看看别人是怎么讲解的,也可以在循环的冒泡排序的过程中将每次一的排序过程打印出来,看看中间的过程帮组理解

第3个回答  2017-12-30
你好,这是我自己亲自写的代码,经过调试成功了。有不明白的可以问我。
#include <stdio.h>
/*函声明区*/
void inputArr(int *, int);
void printArr(int *, int);
void Bubble_sort(int *, int);

void main()
{
/*数组初始化*/
int a[10] = { 0 };
printf("Please input 10 values:\n");
inputArr(a, 10);
Bubble_sort(a, 10);
printf("Please input the array after the sort:\n");
printArr(a, 10);
}
//输入10个数
void inputArr(int *arr,int n)
{
int i;
for (i = 0; i < n; i++)
{
scanf("%d", &arr[i]);
}
}

//冒泡排序
void Bubble_sort(int *array, int n)
{
for (int i = 0; i < n - 1; i++)
{
for (int j = 0; j < n-i; j++)
{
if (array[j] < array[j + 1])
{
int temp;
temp = array[j];
array[j] = array[j + 1];
array[j + 1] = temp;
}
}
}
}
//输出10个数
void printArr(int *arr, int n)
{
for (int i = 0; i < n; i++)
{
printf("%3d", arr[i]);
}
printf("\n");
}追答

第4个回答  2017-12-30
#include<stdio.h>
#include<stdlib.h>
void bubble_sort(int a[], int len)
{
int i, j, temp;
int exchange = 0;
for (i = 0; i<len - 1; i++)
{
exchange = 0;
for (j = len - 2; j >= i; j--)
{
if (a[j + 1]>a[j])
{
temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
exchange = 1;
}
}
if (exchange != 1)
return;
}
}
int main()
{
int i = 0;
int array[10];
for (i = 0; i < 10; i++)
{
printf("请输入第%d个数\n",i+1);
scanf("%d",&array[i]);
}
bubble_sort(array, 10);
printf("逆序排序后为\n");
for (i = 0; i < 10; i++)
{
printf("%d,",array[i]);
}
system("pause");
getchar();
return 0;
}

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网