用计算机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;
}

...将他们进行降序排列。 求解答需要详细过程,谢谢!
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;...

用C语言编写,输入10个数按降序排列
double temp = 0;double a[10] = { 0 };\/\/定义三个变量和一个长度为10的数组;printf("请输入十个数:\\n");\/\/显示“请输入十个数”for (i = 0; i < 10; i++){ scanf("%lf", &a[i]);\/\/从键盘上输入十个数送到数组;} for (i = 1; i < 10; i++)\/\/for循环,进行...

从键盘输入10个整数,编写程序用选择排序法对这十个数降序排列,要求主函 ...
include<stdio.h> int main(){int i,j,k,t,a[10];for(i=0;i<10;i++)\/\/输入10个整数 scanf("%d",&a[i]);for(i=0;i<9;i++)\/\/排序10个数,需要9轮 {k=i;\/\/当前最小值的编号 for(j=i+1;j<10;j++)\/\/扫描后续所有元素 if(a[j]<a[k])k=j;\/\/如后面的元素更小,...

C语言问题:从键盘输入十个整数,用选择排序法对输入的数据从小到大的顺序...
include<stdio.h> void SelectSort(int a[],int n){ int i,j,temp,min;for(i=0;i<n-1;i++){ min=i;for(j=i+1;j<n;j++)\/\/找到最小元素的位置 while(a[j]<a[min])min=j;if(min!=i){ temp=a[min];\/\/元素的交换 a[min]=a[i];a[i]=temp;} } } void main(){ ...

C语言编程把含有十个整数的数组元素按逆序排列并输出。求专业人员解答...
- i]; x[len - 1 - i] = tem; }}int main(){ int a[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}, i; reverse(a, 10); for (i = 0; i < 10; i++) printf("%d ", a[i]); printf("\\n"); return 0;} ...

用c语言编写一个程序,输入10个数求平均值。
C语言:编写一个程序,从键盘输入10个学生成绩,求平均成绩。1、虽然main函数可以作为结构体或者类的成员函数,但相应地会失去作为程序出入口的功能。 C++中全局main函数的书写格式与C语言完全相同,功能也完全相同,且同一C++程序同样只能有一个全局main函数。2、循环语句中进行10个数的累加在sum里面,然后...

C语言,输入10个数怎样输出10个数中最大值,最小值(大一计算机)
int loop = 10;int min, max, value;do { printf("输入整数:");scanf("%d", &value);if (loop==10) { max = min = value; loop--; continue;} else { if (value > max) max = value;if (value < min) min = value;loop--;} } while (loop!=0);printf("输入的10个数...

C语言从键盘输入任意的10个整数,从中找出最大值和最小值并输出_百度知...
代码:include<stdio.h> int main(){ int arr[10]={0};int i=0;int max=0;int min=0;printf("请输入10个整数:");for(i=0;i<sizeof(arr)\/sizeof(arr[0]);i++){ scanf("%d",&arr);} max=arr[0];for(i=0;i<sizeof(arr)\/sizeof(arr[0]);i++){ if(max<arr){ max...

...姓名,3门课的成绩,从键盘输入10个学生数据,
printf("请输入10名学生的学号、姓名、及三门成绩:");for(i=0;i<10;i++)scanf("%d,%s,%d,%d,%d",&person[i]->number,person[i]->name,&person->score[0],&person->score[1],&person->score[2]);for(i=0,i<10;i++)person->score[3]=(person->score[0]+person->score[1]...

用C语言编一个程序,要求输入10个人的成绩,最后按照从总分高到底的顺序输...
\/\/for (i=1;i<10;i++) 应该从0开始 for(i=0;i<10;i++){ \/\/ for (j=i+1;j<11;j++); \/\/\/楼主的排序问题没有考虑a[i][j]其第一个[]范围为0~10 for(j=j+1;j<10;j++);if (a[j][4]<a[i][4]){ for(l=0;l<5;l++){ k=a[j][l];a[j][l]=a...

相似回答