‘壹’ c语言编程 将a[10]数组中10个数分别按升序和降序排列的程序。
int a[10];
int i, j, k;
int t;
... (输入10个数字到a中,略过)
for (i=0; i<9; i++) {
k = i;
for (j=i+1; j<10; j++) {
if (a[k] < a[j]) // 现在这样是降序排列,将<改成>,就变成升序排列
k = j;
}
if (k != i) {
t = a[k];
a[k] = a[i];
a[i] = t;
}
}
‘贰’ c语言数组的排序
可以采用冒泡排序的方法。以下给题主一个对既定数组进行升序、降序排序的代码
#include<stdio.h>
#include<time.h>
#defineelemTypeint/*元素类型*/
#defineLEN100/*数组长度上限*/
#defineASC0/*升序*/
#defineDESC1/*降序*/
/*冒泡排序*/
/*参数说明:*/
/*elemTypearr[]:排序目标数组*/
/*intlen:元素个数*/
/*intorder:排序方式;升序(由小到大):ASC;降序(由大到小):DESC*/
voidbubbleSort(elemTypearr[],intlen,intorder){
inti,j,temp;
for(i=0;i<len-1;i++)
for(j=0;j<len-1-i;j++){
if(order==ASC){/*升序*/
if(arr[j]>arr[j+1]){
temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
elseif(order==DESC){/*降序*/
if(arr[j]<arr[j+1]){
temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
}
/*打印数组*/
voidprintArr(elemTypearr[],intlen){
inti;
for(i=0;i<len;i++)
printf("%d ",arr[i]);
putchar(' ');
}
intmain(void){
elemTypearr[LEN]={3,5,1,7,2,9,6,8,10,4};
intlen;
len=10;
puts("初始数组:");
printArr(arr,len);
putchar(' ');
puts("升序排列:");
bubbleSort(arr,len,ASC);/*升序冒泡排序*/
printArr(arr,len);
putchar(' ');
puts("降序排列:");
bubbleSort(arr,len,DESC);/*降序冒泡排序*/
printArr(arr,len);
putchar(' ');
getch();/*屏幕暂留*/
return0;
}
运行结果
‘叁’ c语言的两种排序
1、选择排序法
要求输入10个整数,从大到小排序输出
输入:2 0 3 -4 8 9 5 1 7 6
输出:9 8 7 6 5 3 2 1 0 -4
代码:
#include<stdio.h>
int main(int argc,const char*argv[]){
int num[10],i,j,k,l,temp;
//用一个数组保存输入的数据
for(i=0;i<=9;i++)
{
scanf("%d",&num<i>);
}
//用两个for嵌套循环来进行数据大小比较进行排序
for(j=0;j<9;j++)
{
for(k=j+1;k<=9;k++)
{
if(num[j]<num[k])//num[j]<num[k]
{
temp=num[j];
num[j]=num[k];
num[k]=temp;
}
}
}
//用一个for循环来输出数组中排序好的数据
for(l=0;l<=9;l++)
{
printf("%d",num[l]);
}
return 0;
}
2、冒泡排序法
要求输入10个整数,从大到小排序输出
输入:2 0 3-4 8 9 5 1 7 6
输出:9 8 7 6 5 3 2 1 0-4
代码:
#include<stdio.h>
int main(int argc,const char*argv[]){
//用一个数组来存数据
int num[10],i,j,k,l,temp;
//用for来把数据一个一个读取进来
for(i=0;i<=9;i++)
{
scanf("%d",&num<i>);
}
//用两次层for循环来比较数据,进行冒泡
for(j=0;j<9;j++)
{
for(k=0;k<9-j;k++)
{
if(num[k]<num[k+1])//num[k]<num[k+1]
{
temp=num[k];
num[k]=num[k+1];
num[k+1]=temp;
}
}
}
//用一个for循环来输出数组中排序好的数据
for(l=0;l<=9;l++)
{
printf("%d",num[l]);
}
return 0;
}
(3)c语言升序或降序扩展阅读:
return 0代表程序正常退出。return是C++预定义的语句,它提供了终止函数执行的一种方式。当return语句提供了一个值时,这个值就成为函数的返回值。
return语句用来结束循环,或返回一个函数的值。
1、return 0,说明程序正常退出,返回到主程序继续往下执行。
2、return 1,说明程序异常退出,返回主调函数来处理,继续往下执行。return 0或return 1对程序执行的顺序没有影响,只是大家习惯于使用return(0)退出子程序而已。
‘肆’ c语言中排序方法
1、冒泡排序(最常用)
冒泡排序是最简单的排序方法:原理是:从左到右,相邻元素进行比较。每次比较一轮,就会找到序列中最大的一个或最小的一个。这个数就会从序列的最右边冒出来。(注意每一轮都是从a[0]开始比较的)
以从小到大排序为例,第一轮比较后,所有数中最大的那个数就会浮到最右边;第二轮比较后,所有数中第二大的那个数就会浮到倒数第二个位置……就这样一轮一轮地比较,最后实现从小到大排序。
2、鸡尾酒排序
鸡尾酒排序又称双向冒泡排序、鸡尾酒搅拌排序、搅拌排序、涟漪排序、来回排序或快乐小时排序, 是冒泡排序的一种变形。该算法与冒泡排序的不同处在于排序时是以双向在序列中进行排序。
原理:数组中的数字本是无规律的排放,先找到最小的数字,把他放到第一位,然后找到最大的数字放到最后一位。然后再找到第二小的数字放到第二位,再找到第二大的数字放到倒数第二位。以此类推,直到完成排序。
3、选择排序
思路是设有10个元素a[1]-a[10],将a[1]与a[2]-a[10]比较,若a[1]比a[2]-a[10]都小,则不进行交换。若a[2]-a[10]中有一个以上比a[1]小,则将其中最大的一个与a[1]交换,此时a[1]就存放了10个数中最小的一个。同理,第二轮拿a[2]与a[3]-a[10]比较,a[2]存放a[2]-a[10]中最小的数,以此类推。
4、插入排序
插入排序是在一个已经有序的小序列的基础上,一次插入一个元素*
一般来说,插入排序都采用in-place在数组上实现。
具体算法描述如下:
⒈ 从第一个元素开始,该元素可以认为已经被排序
⒉ 取出下一个元素,在已经排序的元素序列中从后向前扫描
⒊ 如果该元素(已排序)大于新元素,将该元素移到下一位置
⒋ 重复步骤3,直到找到已排序的元素小于或者等于新元素的位置
⒌ 将新元素插入到下一位置中
⒍ 重复步骤2~5
‘伍’ 用C语言编写一函数,函数实现以下数字的排序[升序和降序]
升序:
#include "stdio.h"
main()
{
int a[4]={1,4,2,6};
int i,j,num;
for (i=1;i<4;i++)
{
for (j=0;j<4-i;j++)
{if (a[j]>a[j+1])
{num=a[j];a[j]=a[j+1];a[j+1]=num;}
}
}
for (i=0;i<4;i++)
printf (" %d ",a[i]);
}
降序:
#include "stdio.h"
main()
{
int a[4]={1,4,2,6};
int i,j,num;
for (i=1;i<4;i++)
{
for (j=0;j<4-i;j++)
{if (a[j]<a[j+1])
{num=a[j];a[j]=a[j+1];a[j+1]=num;}
}
}
for (i=0;i<4;i++)
printf (" %d ",a[i]);
}
升序和降序的区别只是IF语句里面的比较符号变化,升序为〉,然后互换。降序为〈,然后前后两个数组元素呼唤。
‘陆’ c语言,,输入若干个整数,如何让他们安升序或降序排列,用数组做
#include<stdio.h>
#define N 10
void main()
{ int a[N],i,j,k;
for ( i=0;i<N;i++ ) scanf("%d",&a[i]);
for ( i=0;i<N-1;i++ )
for ( j=i+1;j<N;j++ )
if ( a[i]<a[j] ) //降序,如改成 a[i]>a[j]则为升序
{ k=a[i]; a[i]=a[j]; a[j]=k; }
for ( i=0;i<N;i++ ) printf("%d ",a[i]);
printf("\n");
}
‘柒’ C语言的升序和降序
#include<stdio.h>
void main()
{
int a[5]={};
int i,j;
int temp=0;
for(i=0;i<5;i++)
{
printf("请输入第%d个整数\n",i+1);
scanf("%d",&a[i]);
}
for(i=1;i<5;i++)
{
for(j=0;j<5-i;j++)
{
if(a[j]<a[j+1])....................//把大于号改成小于号
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
for(i=0;i<5;i++)
{
printf("排序后的整数:%d\t",a[i]);
}
}
if(a[j]<a[j+1])....................//把大于号改成小于号
‘捌’ 急!!!!!!!!C语言 运用函数进行升序降序排列
在scanf("%c\n",&style);前加 char c; scanf("%c",&c);
原因:前面输入数字时有输入回车 scanf把这个回车赋给了style 所以 要把先那个回车吃了
‘玖’ c语言 用一个函数实现用冒泡法对十个整数升序和降序排列 麻烦写全些
#include<stdio.h>
voidsort1(inta[],intn)
{inti,j,t;
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;}
}
voidsort2(inta[],intn)
{inti,j,t;
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;}
}
intmain()
{inti,a[10];
for(i=0;i<10;i++)
scanf("%d",&a[i]);
printf("
");
sort1(a,10);
for(i=0;i<10;i++)
printf("%d",a[i]);
printf("
");
sort2(a,10);
for(i=0;i<10;i++)
printf("%d",a[i]);
printf("
");
return0;
}