c语言 9-5

1、线性查找法

复制代码
#include <stdio.h>

#define FAILED -1

int len(char x[])
{
    int len = 0;
    while(x[len])
        len++;
    return len;
}

int search(char x[], char key)
{
    int i = 0;
    while(1)
    {
        if(i == len(x))
            return FAILED;
        if(x[i] == key)
            return i;
        i++;
    }
}

int main(void)
{
    char str[128];
    printf("str: "); scanf("%s", str);
    printf("position: %d\n", search(str, 'c'));
    return 0;
}
复制代码

 

 

2、线性查找法

复制代码
#include <stdio.h>

#define FAILED -1

int len(char x[])
{
    int i = 0;
    while(1)
    {
        if(x[i] == '\0')
            return i;
        i++;
    }
}

int search(char x[], char key)
{
    int i = 0;
    while(1)
    {
        if(i == len(x))
            return FAILED;
        if(x[i] == key)
            return i;
        i++;
    }
}

int main(void)
{
    char str[128];
    printf("str: "); scanf("%s", str);
    printf("position: %d\n", search(str, 'c'));
    return 0;
}
复制代码

 

3、线性查找法

复制代码
#include <stdio.h>

#define FAILED -1

int length(char x[])
{
    int i = 0;
    while(1)
    {
        if(x[i] == '\0')
            return i;
        i++;
    }
}

int search(char x[], char key)
{
    int len, i;
    len = length(x);
    for(i = 0; i < len; i++)
    {
        if(x[i] == key)
            return i;
    }
    if(i == len)
        return FAILED;
}

int main(void)
{
    char str[128];
    printf("str: "); scanf("%s", str);
    
    printf("position: %d\n", search(str, 'c'));
    return 0;
}
复制代码

 

4、哨兵查找法

复制代码
#include <stdio.h>

#define FAILED -1

int length(char x[])
{
    int i = 0;
    while(1)
    {
        if(x[i] == '\0')
            return i;
        i++;
    }
}

int search(char x[], char key)
{
    int len = length(x);
    x[len] = key;
    int i = 0;
    while(1)
    {
        if(x[i] == key)
            break;
        i++;
    }
    return i < len ? i : FAILED;
}

int main(void)
{
    char str[128];
    printf("str: "); scanf("%s", str);
    printf("pos: %d\n", search(str, 'c'));
    return 0;
}
复制代码

 

5、简化

复制代码
#include <stdio.h>

#define FAILED -1

int search(char x[], char key)
{
    int i = 0;
    while(1)
    {
        if(x[i] == key)
            return i;
        if(x[i] == '\0')
            return FAILED;
        i++;
    }
}

int main(void)
{
    char str[128];
    printf("str:  "); scanf("%s", str);
    printf("pos:  %d\n", search(str, 'c'));
    return 0;
}
复制代码

 

posted @   小鲨鱼2018  阅读(49)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示