C语言——烧脑输入和冒泡排序

该文章不适合小白看,适合有一定基础的人来练习基础,该代码包含对gets函数、键盘输入的缓冲区、指针和数组的理解,代码可能会很难看,但是难看的代码都看得得心应手何尝不是对自己基础的巩固?

#include<stdio.h>
#include<windows.h>
#include<math.h>

int PanDuan(char a){
	if(a==' ' || a=='\0'){
		if(a=='\0'){
			return 2;
		}else{
			return 1;
		}
	}else{
		return 0;
	}
}

int charToInt(char x){
	return x-'0';
}

int arrMaoPao(int* arr,int flag){
	int i=flag;
	for(i;i>0;i--){
		int*now=(arr+i),j=1;
		for(j;j<=i;j++){
			int*nows=now,ken=0;
			if (*nows<* (arr+i-j)){
				ken=*nows;
				*nows=* (arr+i-j);
				* (arr+i-j)=ken;
				*nows--;
			}
		}		
	}
	return 0;
}

int main()
{
	int i=0,j=0,h=0;
	char arr[200];
	int num[200];
	printf("输入一串正数,以空格分隔:\n");
	gets(arr);
	for(i;i<sizeof(arr)/sizeof(arr[0]);i++){
		if(PanDuan(arr[i])){

			int sum=0,flag=0,k=i;
			for(k=k-1;k>=0;k--){
				if(PanDuan(arr[k])==1){break;}
				else if(0==flag){
					sum+=charToInt(arr[k]);
					flag=flag+1;
				}else{
					sum+=(charToInt(arr[k]))*((int)pow(10.0,flag)); 
					flag++;
				}
			}
			num[j]=sum;
			if(PanDuan(arr[i])==2){break;}
			j++;	
		}
	}
	/*for(h;h<=j;h++){
		printf("%d\n",num[h]);
	}*/
	/*int num[200]={3,25,45,98,21,12,43,62,10,7},j=9;*/
	arrMaoPao(num,j);
	while(j>=0){
		printf("%d\n",num[j]);
		j--;
	}
	
	return 0;
}

该代码实现的功能是输入一组数字,以空格为间隔,进行冒泡排序。该文章只作为本人笔记,有问题和错误请指出,本人很菜。

运行成效如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值