Chinaunix首页 | 论坛 | 博客
  • 博客访问: 439077
  • 博文数量: 71
  • 博客积分: 26
  • 博客等级: 民兵
  • 技术积分: 1246
  • 用 户 组: 普通用户
  • 注册时间: 2012-07-23 14:46
个人简介

linux --- 一切皆文件

文章分类

全部博文(71)

文章存档

2021年(1)

2019年(2)

2018年(4)

2017年(7)

2016年(11)

2015年(1)

2014年(2)

2013年(33)

2012年(10)

分类: C/C++

2013-05-19 22:24:16

1:折半查找


int binsearch(int x,int v[],int n)
{
    int low,high,mid;
    
    low = 0;
    high = n -1;
    mid = (low + high)/2;

    while(low <= high && x != v[mid]){
        if(x > v[mid]){
            low = mid +1;
        }else{
            high = mid -1;
        }
        mid = (lov + high)/2;
    }

    if(x == v[mid]){
        return mid;
    }else
        return -1;
}

2:编写atoi()函数


int myatoi(char s[])
{
    int i,sig = 1,n;

    for(i = 0;isspace(s[i]);i ++)
        ;

    sig = (s[i] == '-') ? -1 :1;

    if(s[i] == '+' || s[i] == '-')
        i ++;

    for(n = 0;isdigit(s[i]);i ++){
        n = n * 10 + (s[i] - '0') ;
    }

    return sig * n;
}

3:编写itoa()功能函数(另一种方法:用栈)

#include

#define MAXLEN 32

void itoa(int num,char s[]);    
void reverse(char s[]);        //翻转字符串

int main(void)
{
    int i = 98762;
    char s[MAXLEN];

    itoa(i,s);
    printf("%s",s);
    
    return 0;
}


void itoa(int num,char s[])
{
    int i,sig;

    if(num < 0)    
        sig = num;
    i = 0;
    do{    
        s[i++] = abs(num % 10) + '0';
    }while((num = num / 10) != 0);


    if(sig < 0)
        s[i++] = '-';
    s[i] = '\0';

    reverse(s);
}

/*
    将逆序的字符串进行翻转
*/
void reverse(char s[])
{
    int i = 0;
    while(s[i] != '\0'){
        i ++;
    }
    i --;

    int low = 0;
    char tmp;
    while(low <= i){
        tmp = s[low];
        s[low] = s[i];
        s[i] = tmp;
        low ++; i --;
    }
}


阅读(1287) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~