笔试题目1-数字字符串排序
2013-10-10 14:20
369 查看
#include <iostream>
#include <stdio.h>
#include <cstring>
#include <string>
using namespace std;
int strToInt(char*pBegin,char*pEnd);
int* str2num(char* str);
void paixu(int *ptr);
int strToInt(char*pBegin,char*pEnd)
{
char* p = pBegin;
int sum = 0;
int neg = 1;
if(*p == '+')
{
++p;
}
else if(*p =='-')
{
neg = -1;
++p;
}
else if(p > pEnd)
{
return -1;
}
do
{
if(*p<'0' || *p >'9')
{
return -1;
}
sum = sum*10 +*p-'0';
}while(p++ != pEnd);
sum *= neg;
return sum;
}
int* str2num( char* str)
{
if(str == NULL)
return NULL;
int numData = 0;
char* pBegin = str;
char* pEnd = str;
printf("2");
while(*pEnd !='\0')
{
if(*pEnd ==',')
++numData;
++pEnd;
}
printf("numData is:%d\n",numData);
pEnd =str;
int arr[numData];
int i = 0;
numData++;
printf("4");
while(*pBegin !='\0')
{
if(*pBegin ==',')
{
pBegin++;
pEnd++;
}
else if(*pEnd ==','|| *pEnd =='\0')
{
int num = strToInt(pBegin,--pEnd);
if(i!=numData)
{
arr[i] = num;
++i;
}
printf("num is: %d\n",num);
pBegin = ++pEnd;
}
else
{
pEnd++;
}
}
arr[i]='\0';
int* intPtr = arr;
printf("5");
int j;
//for(j=0;j<i;j++)
while(*intPtr !='\0')
printf("arr数组元素为:%d\t",*intPtr++);
printf("\n");
intPtr = arr;
return intPtr;
}
void paixu(int* ptr)
{
while(*ptr !='\0')
printf("ptr is:%d\n",*ptr++);
int i,j,min,temp;
int len = 0;
int* p = ptr;
do
{
printf("bupt数组元素为:%d\t",*p);
++p;
len++;
} while(*p !='\0');
printf("len is:%d\n",len);
for(i=0;i<len;i++)
{
min = i;
for(j=i+1;j<len;j++)
{
if(ptr[j]<ptr[min])
min = j;
}
if(i!=min)
{
temp = ptr[min];
ptr[min] = ptr[i];
ptr[i] = temp;
}
}
for(i=0;i<len;i++)
printf("数组为:%d\t",ptr[i]);
}
int main()
{
printf("main");
char* str =(char*)"22,11,5,10,99";
int* ptr = NULL;
int len = 0,i,j,min,temp;
ptr = str2num(str);
int* q = ptr;
while(*q !='\0')
{
printf("ptr is:%d\n",*q++);
len++;
}
//调用排序
for(i=0;i<len;i++)
{
min = i;
for(j=i+1;j<len;j++)
{
if(ptr[j]<ptr[min])
min = j;
}
if(i!=min)
{
temp = ptr[min];
ptr[min] = ptr[i];
ptr[i] = temp;
}
}
for(i=0;i<len;i++)
printf("数组为:%d\t",ptr[i]);
return 0;
}
#include <stdio.h>
#include <cstring>
#include <string>
using namespace std;
int strToInt(char*pBegin,char*pEnd);
int* str2num(char* str);
void paixu(int *ptr);
int strToInt(char*pBegin,char*pEnd)
{
char* p = pBegin;
int sum = 0;
int neg = 1;
if(*p == '+')
{
++p;
}
else if(*p =='-')
{
neg = -1;
++p;
}
else if(p > pEnd)
{
return -1;
}
do
{
if(*p<'0' || *p >'9')
{
return -1;
}
sum = sum*10 +*p-'0';
}while(p++ != pEnd);
sum *= neg;
return sum;
}
int* str2num( char* str)
{
if(str == NULL)
return NULL;
int numData = 0;
char* pBegin = str;
char* pEnd = str;
printf("2");
while(*pEnd !='\0')
{
if(*pEnd ==',')
++numData;
++pEnd;
}
printf("numData is:%d\n",numData);
pEnd =str;
int arr[numData];
int i = 0;
numData++;
printf("4");
while(*pBegin !='\0')
{
if(*pBegin ==',')
{
pBegin++;
pEnd++;
}
else if(*pEnd ==','|| *pEnd =='\0')
{
int num = strToInt(pBegin,--pEnd);
if(i!=numData)
{
arr[i] = num;
++i;
}
printf("num is: %d\n",num);
pBegin = ++pEnd;
}
else
{
pEnd++;
}
}
arr[i]='\0';
int* intPtr = arr;
printf("5");
int j;
//for(j=0;j<i;j++)
while(*intPtr !='\0')
printf("arr数组元素为:%d\t",*intPtr++);
printf("\n");
intPtr = arr;
return intPtr;
}
void paixu(int* ptr)
{
while(*ptr !='\0')
printf("ptr is:%d\n",*ptr++);
int i,j,min,temp;
int len = 0;
int* p = ptr;
do
{
printf("bupt数组元素为:%d\t",*p);
++p;
len++;
} while(*p !='\0');
printf("len is:%d\n",len);
for(i=0;i<len;i++)
{
min = i;
for(j=i+1;j<len;j++)
{
if(ptr[j]<ptr[min])
min = j;
}
if(i!=min)
{
temp = ptr[min];
ptr[min] = ptr[i];
ptr[i] = temp;
}
}
for(i=0;i<len;i++)
printf("数组为:%d\t",ptr[i]);
}
int main()
{
printf("main");
char* str =(char*)"22,11,5,10,99";
int* ptr = NULL;
int len = 0,i,j,min,temp;
ptr = str2num(str);
int* q = ptr;
while(*q !='\0')
{
printf("ptr is:%d\n",*q++);
len++;
}
//调用排序
for(i=0;i<len;i++)
{
min = i;
for(j=i+1;j<len;j++)
{
if(ptr[j]<ptr[min])
min = j;
}
if(i!=min)
{
temp = ptr[min];
ptr[min] = ptr[i];
ptr[i] = temp;
}
}
for(i=0;i<len;i++)
printf("数组为:%d\t",ptr[i]);
return 0;
}
相关文章推荐
- 前端笔试题目练习笔记:统计数组中不同的数字出现的概率并排序
- (笔试中的题目)一个已经排序好的数组找到两个数字相加等于一个给定的数
- 金山笔试题-字符串排序 :" 写一个函数,实现对给定的字符串(字符串里面包括:英文字母,数字,符号)的处理"
- 剑指offer-算法题练习:part13 数字字母重排序-笔试题
- 笔试题——编写java程序:输入一个字符串,判断有几个英文字母,有几个数字,有几个其它的字符
- 2012华为编程比赛之字符串数字字符排序
- 【九度】题目1349:数字在排序数组中出现的次数
- 关于mysql对字符串的数字的排序
- 题目1054:字符串内排序
- 华为12年编程大赛:将字符串中的数字进行排序
- 题目1066:字符串排序
- JAVA-从题目看算法,将输入字符串进行排序并输出
- NSDictionary NSMutableDictionary NSSet 还有数组中字符串比较排序,数组中国数字从大到小排序
- <笔试><面试>编写一个排序函数,实现,既可以排序整形数组,又可以排序字符串。
- 题目:删除排序数组中的重复数字 II
- mysql中按照字符串中数字顺序排序
- 解决oracle语句中 含数字的字符串按数字排序问题
- 九度OJ 题目1135:字符串排序
- 【笔试】49、数字在排序数组中出现的次数
- 题目1066:字符串排序