C 整数排序
来源:互联网 发布:seo待遇 编辑:程序博客网 时间:2024/05/22 11:36
1. fgets处理单行输入
2. 分割字符串, 将数字字符串放到指针数组中
3. 处理字符串前缀zeros, stripping it
4. 字符串数字比较大小
5. 字符串selection sort
#include <stdio.h> #include <string.h> #define MAX_SIZE 5000 int cmpnumstr(char * str1, char * str2) { int len1 = 0; int len2 = 0; len1 = strlen(str1); len2 = strlen(str2); if(len1 > len2) { return 1; } else if(len1 < len2) { return -1; } else { return strncmp(str1, str2, len1) ; } } void sort(char **array, int n) { char *temp = 0; int i,j,k; for(i=0;i<n-1;i++) { k=i; for(j=i+1;j<n;j++) { if(cmpnumstr(array[k],array[j])<0) k=j; } if(k!=i) { temp=array[i]; array[i]=array[k]; array[k]=temp; } } } int main() { char buf[MAX_SIZE]; int i = 0; int j = 0; int k = 0; int zero = 0; int pzero = 0; int num = 0; int il = 0; char *p[MAX_SIZE]; fgets(buf,MAX_SIZE,stdin); il = strlen(buf); //buf[il-1]=0; //trailing \n if(il >4097) { return 0; } for(i=0; i<il;i++) { if(buf[i]<'0' || buf[i]>'9') { buf[i] = 0; } } if(buf[0] == '0' && buf[1] != 0) { buf[0] = 0; } for(i=0; i<il-1;i++) { if(buf[i] == 0) { if(buf[i+1] == '0' && buf[i+2] != 0) { buf[i+1] = 0; } } } j = 0; zero = 1; for(i=0; i<il; i++) { if(buf[i] == 0) { zero = 1; } else { if(zero == 1) { //strip prefix zeros p[j++] = buf+i; zero = 0; } } } num = j; sort(p, num); for(k=0; k<num-1;k++) { printf("%s ", p[k]); } printf("%s\n", p[k]); return 0; }
0 0
- C 整数排序
- 【C++】实现整数排序
- C语言习题 整数排序
- Problem C: C语言习题 整数排序
- Problem C: C语言习题 整数排序
- Problem C: C语言习题 整数排序
- Problem C: C语言习题 整数排序
- 【C++】N 个整数的排序。
- C语言 输入整数数组 冒泡排序
- 题目1117:整数奇偶排序 C++/Java
- YTU 2427: C语言习题 整数排序
- YTU C语言习题 整数排序
- C/C++复习:整数排序(2)
- oj2427: C语言习题 整数排序
- 整数排序
- 整数排序
- 整数排序
- 整数排序
- 语言是思维的物质外壳
- android 一些系统自带的通知,服务,活动和数据
- ViewPager显示广告图片超简易使用方法
- android中ping命令的实现
- vim多标签和多窗口
- C 整数排序
- Assertion failed: Unable to setup database devices
- Java各种数据库连接
- 虚拟机Vmware下 linux上网设置
- Linux如何运行于8位AVR微控制器?
- 使用ZendFramework创建工程
- #ifdef 和 #if defined 的区别
- ScrollView中用ListView的事件冲突
- grep 命令变色