eve for mac:C语言写出 ,输入4个整数,要求按由大到小的顺序输出?
来源:百度文库 编辑:查人人中国名人网 时间:2024/05/05 18:37:44
你可以利用 C 标准库 stdlib.h 里的 qsort( ) 完成任何类型的数组的快速排序:
#include<stdio.h>
#include<stdlib.h>
int compare( const int *a, const int *b ) { return *b - *a; }
int main( ) {
int ia[ 4 ],
width = sizeof *ia,
num = sizeof ia / width,
j;
puts( "Enter four integers to be sorted in descending order:" );
for( j = 0; j < num; ++j )
scanf( "%d", &ia[ j ] );
qsort( ia, num, width, compare );
for( j = 0; j < num; ++j )
printf( "%d ", ia[ j ] );
}
调用 qsort( ) 只需要传入四个参数:
1)数组指针:指向要排序的数组
2)数组的元素个数
3)数组的元素字节长度
4)函数指针:指向我们定义的一个比较两个元素大小的函数
若是要 qsort( ) 做由小到大的排序,我们定义的函数的返回值和相应的条件必须是:
返回值 条件
====== =====
< 0 *a < *b
0 *a == *b
> 0 *a > *b
要达到以上的要求其实就只需写 “*a - *b” 。
而若是要 qsort( ) 做由大到小的排序,把 *a 和 *b 的位置换一换就行了。
4个整数的排序,有使用单个变量和使用数组二种方法实现。
使用单个变量的方法:
#include<stdio.h>
int main()
{int a,b,c,d,t;
scanf("%d%d%d%d",&a,&b,&c,&d);
if(a>b){t=a;a=b;b=t;}
if(a>c){t=a;a=c;c=t;}
if(a>d){t=a;a=d;d=t;}
if(b>c){t=b;b=c;c=t;}
if(b>d){t=b;b=d;d=t;}
if(c>d){t=c;c=d;d=t;}
printf("%d %d %d %d\n",a,b,c,d);
return 0;
}
使用数组和循环的方法:
#include<stdio.h>
int main()
{int a[4],i,j,t;
for(i=0;i<4;i++) //读入4个数据
scanf("%d",&a[i]);
for(i=0;i<3;i++) //冒泡排序
for(j=0;j<3-i;j++)
if(a[j]>a[j+1])
{t=a[j];a[j]=a[j+1];a[j+1]=t;}
for(i=0;i<4;i++) //输出4个数据
printf("%d ",a[i]);
printf("\n");
return 0;
}
用冒跑法写:
main()
{ int a[4];
int i,j,t;
printf("input 4 numbers:\n"); /*提示输入数据*/
for(i=1;i<5;i++)
scanf("%d",&a[i]); /*输入四个整数*/
for(i=1;i<4;i++)
for(j=0;j<4;j++)
if(i>j)
{ t=i;i=j;j=t;}
for(i=1;i<=4;i++)
printf("%d",a[i]); /*输出从小到大的四个数*/
}
#include "stdafx.h"
void MySort(int* pData,int Count)
{
int iTemp;
for(int i=1;i<Count;i++) {
for (int j=Count-1;j>=i;j--){
if(pData[j]<pData[j-1]){
iTemp = pData[j-1];
pData[j-1] = pData[j];
pData[j] = iTemp;
}
}/*end for*/
}/*endfor*/
}
void main(){
int n[4];
int i;
for( i=0; i<4; i++) scanf("%d",&n[i]);
MySort(n,4);
for(i=3; i>=0; i--) printf("%d\t",n[i]);
}