将冒泡排序封装成函数并调用

程序运行结果:

程序是用来给数字排序,您想输入几个整数?
4
您想正序排列还是倒序排列:(升序输入0,降序输入1
)7
错误的排序方式!
linux@ubuntu:~/hqyj/base_c/day10$ ./a.out
程序是用来给数字排序,您想输入几个整数?
5
您想正序排列还是倒序排列:(升序输入0,降序输入1
)0
请输入5个数字
5
1
9
3
8
排序前=5  1  9  3  8  
你已经调用函数!
排序后=1  3  5  8  9 

代码:

#include<stdio.h>
#if 1
int  px(int x,int y,int *p){//x传数组中有几个有效元素,y决定升序降序
	int a = 0;//*p传递数组的地址
	int b = 0;
	int c = 0;
	printf("你已经调用函数!\n");
	if(y== 0){
		for(;c<x-1;c++){
			for(a=0;a<x-1-c;a++){
				if(*(p+a)>*(p+a+1))	{
					b = *(p+a);
					*(p+a) = *(p+a+1);
					*(p+a+1) = b;
				}
			}
		}
	}else {
		for(;c<x-1;c++){
			for(a=0;a<x-1-c;a++){
				if(*(p+a)<*(p+a+1))	{
					b = *(p+a);
					*(p+a) = *(p+a+1);
					*(p+a+1) = b;
				}
			}

		}


	}
}
#endif

void  main(int argc, const char *argv[])
{
	int s[10]={0};
	int a = 0;
	int flag = 0;
	printf("程序是用来给数字排序,您想输入几个整数?\n");
	scanf("%d",&a);
	if(a>=10){
		printf("整数太多了,最大为10.\n");
		return ;
	}
	printf("您想正序排列还是倒序排列:(升序输入0,降序输入1\n)");
	scanf("%d",&flag);
	if(flag!=0 && flag!= 1){
		printf("错误的排序方式!\n");
		return ;
	}
	printf("请输入%d个数字\n",a);
	int i = 0;
	for(;i<a;i++){
		scanf("%d",&s[i]);
	}
	printf("排序前=");
	i = 0;
	for(;i<a;i++){
		printf("%d  ",s[i]);
	}
	printf("\n");
	px(a,flag,s);
	printf("排序后=");
	i = 0;
	for(;i<a;i++){
		printf("%d  ",s[i]);
	}
	printf("\n");
	return ;
}

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值