C语言实现选择,冒泡,顺序排序,整数转字符串,指向指针的指针和冒泡对二维数组

C语言实现选择,冒泡,顺序排序

选择排序

#include<stdio.h>
#define N 6
int main()
{
	int x[N]={5,0,1,6,4,3};
	int temp,i,j,min;
//	printf("请输入N个数字:");
//	for(i=0;i<N;i++)
//		scanf("%d",&x[i]); 
	for(i=0;i<N-1;i++)//控制趟数 
	{
		min=i;//每一趟都需要需要一个最小的先假设xi是最小的那个数 
		
		for(j=i+1;j<N;j++)
			if(x[min]>x[j])//找出最小的数 
				min=j;
		
			if(i!=min)//如果找到的最小的这数不是xi。就交换 
			{
				temp=x[i];
				x[i]=x[min]; 
				x[min]=temp;
			}	
	}
	printf("排序后的N个数字:");
	for(i=0;i<N;i++)
		printf("%5d",x[i]); 
return 0; 
}

冒泡排序

#include<stdio.h>
#define N 6
int main()
{
	int x[N]={2,7,6,5,0,9},i,j,temp;
//	printf("输入N个数据:");
//	for(i=0;i<N;i++)
//		scanf("%d/n",&x[i]);
	for(i=0;i<(N-1);i++)//这里的i专门用来记录趟数 
		for(j=0;j<(N-i);j++)//每次比较以后大的在后面就不需要管最后一个数 
		{
			if(x[j]>x[j+1])
			{
				temp=x[j];
				x[j]=x[j+1];
				x[j+1]=temp;
			}
		 } 
	printf("排序后的结果:");
	for(i=0;i<N;i++)
		printf("%5d",x[i]);
	return 0;
 } 

顺序排序

#include<stdio.h>
#define N 6
int main()
{
	int x[N]={1,6,0,5,4,3};
	int temp,i,j;
	for(i=0;i<(N-1);i++)//n个数字比较n-1次 
		for(j=i+1;j<N;j++)//第n个数和第n+1个数比较,
		//每次都比到最后一个数因为每次比较以后会把最小的数字仍在最前面 
		//所以用i来控制j的下移 ,并让第一个数和剩下的所有的数进行比较 
		{
			if(x[i]>x[j])
			{
				temp=x[i];
				x[i]=x[j];
				x[j]=temp;
			}
		 } 
	for(i=0;i<N;i++)
	printf("%5d",x[i]); 
	return 0;
 } 

整数转字符串

#include<stdio.h>
#include<string.h>
#include<math.h>
int main()
{
	int num,n;
	char *p,s[30];
	//char *p,*s;//---->transfer2
	char m[20]="-";
	void transfer(char *s,int n);
	//void transfer2(char *s,int n);
	void reverse(char *s);
	printf("请输入一个数字整数:");
	scanf("%d",&num);
	n=abs(num); 
	transfer(s,n);
	reverse(s);
	if(num<0)
		p=strcat(m,s);//如果是复数就把s追加到m[0]是一个负号的一个字符串中; 
	else
		p=s;
	printf("整数%d转换为字符串是: %s",num,p);
	return 0;
 } 
void transfer(char *s,int n)
{
	//printf("transfer");
	char *q;
	int  x;
	q=s;

	while(n>0)
	{
		x=n%10;
		*q=x+'0';
		q++;
		n=n/10;
	} 
 	*q='\0';
 	//printf("asfaf");
}

void transfer2(char *q,int n)
{
	//printf("transfer");
	char *q;
	int  x;

	while(n>0)
	{
		x=n%10;
		*q=x+'0';
		q++;
		n=n/10;
	} 
 	*q='\0';
 	//printf("asfaf");
}


void reverse(char *s)
{
	//printf("reverse");
	char *h,*k,t;
	for(h=s,k=s+strlen(s)-1;h<k;h++,k--)
	{
		t=*h;
		*h=*k;
		*k=t;
	}
}

 

指向指针的指针和冒泡对二维数组

#include<stdio.h>
#define N 4
#define M 3
int main()
{
	int a[M][N];
	int i,j,k,t;
	int **p,*pa[M];
	printf("请输入矩阵元素:\n");
	for(i=0;i<M;i++)
		for(j=0;j<N;/+)
			scanf("%d",&a[i][j]);
	for(i=0;i<M;i++)//记录数组的每一行的元素 
		pa[i]=a[i];
	p=pa;
	for(k=0;k<M;k++,p++)
		for(i=1;i<=N-1;i++)
			for(j=0;j<N-i;j++)
			if(*(*p+j)>*(*p+j+1))
			{
				t=*(*p+j);
				*(*p+j)=*(*p+j+1);
				*(*p+j+1)=t;
			}
		printf("排序后的矩阵是:\n");
		for(i=0;i<M;i++)
		{
			for(j=0;j<N;j++)
			{
				printf("%d\t",a[i][j]);
			}
			printf("\n");
		}
		
			
	
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值