2024.7.12 作业

1、自定义函数(my_strlen)实现strlen函数的功能

代码:

#include <stdio.h>
int my_strlen(const char *arr)
{
    static int i = 0;
    if (*(arr + i) == '\0')
    {
        return i;
    }
    else
    {
        i++;
        my_strlen(arr);
    }
}
int main(int argc, char const *argv[])
{
    char arr[20] = "";
    int num = 0;
    printf("请输入一个字符串:");
    gets(arr);
    num = my_strlen(arr);
    printf("该字符串的长度为:%d\n", num);
    return 0;
}

结果:

e1508e6ac7bd48df96fc907b74283fed.png

2、自定义函数(my_strcpy)实现strcpy函数的功能

代码:

#include <stdio.h>
void my_strcpy(char *arr[], const char *brr[])
{
    *arr=*brr;
}
int main(int argc, char const *argv[])
{
    char arr[20] = "";
    char brr[20] = "";
    printf("请输入一个字符串:");
    gets(brr);
    my_strcpy(arr, brr);
    printf("复制后数组的结果是:%s\n", arr);
    return 0;
}

结果:

7ac0bd9c17344bdfbe0be8fe6ebb26c4.png

3、自定义函数(my_strcmp)实现strcmo函数的功能

代码:

#include <stdio.h>
int my_strcmp(char *str1, char *str2)
{
    if (str1 != NULL && str2 != NULL)
    {
        while (*str1++ != '\0' && *str2++ != '\0')
        {
            if (*str1 > *str2)
                return 1;
            else if (*str1 < *str2)
                return -1;
            else
                continue;
        }
        //如果两个都为空,直接返回0
        if ((*str1 == '\0') && (*str2 == '\0'))
            return 0;
        //如果前一个为空后一个不为空,s1<s2,返回-1
        else if ((*str1 == '\0') && (*str2 != '\0'))
            return -1;
        //前一个不为空后一个为空,s1>s2,返回1
        else if ((*str1 != '\0') && (*str2 == '\0'))
            return 1;
        //只剩下s1=s2的情况
        else
            return 0;
    }
}
int main(int argc, char const *argv[])
{
    char arr[20] = "";
    char brr[20] = "";
    printf("请输入第一个字符串:");
    scanf("%s", &arr);
    printf("请输入第二个字符串:");
    scanf("%s", &brr);
    int n = 0;
    n = my_strcmp(arr, brr);
    switch (n)
    {
    case 1:
        printf("1比2大\n");
        break;
    case 0:
        printf("一样大\n");
        break;
    case -1:
        printf("1比2小\n");
        break;
    default:
        printf("error\n");
    }
    return 0;
}

结果:

4、自定义函数(my_strcat)实现strcat函数的功能

代码:

#include <stdio.h>
char *my_strcat(char *str1, const char *str2)
{
    while (*str1 != '\0')
    {
        str1++;
    }
    while (*str2 != '\0')
    {
        *str1++ = *str2++;
    }
    *str1 = '\0';
}
int main(int argc, char const *argv[])
{
    char arr[20] = "";
    char brr[20] = "";
    printf("请输入第一个字符串:");
    scanf("%s", &arr);
    printf("请输入第二个字符串:");
    scanf("%s", &brr);
    my_strcat(arr, brr);
    printf("%s\n", arr);
    return 0;
}

结果:

5、自定义函数(my strstr)实现求src字符串中是否包含子串dest字符串

代码:

#include <stdio.h>
char *my_strstr(const char *arr, const char *brr)
{
    // 初始化三个字符指针
    char *s1 = NULL;
    char *s2 = NULL;
    char *stu = (char *)arr;

    // 如果brr为空字符串,则返回p1的首地址
    if (*brr == '\0')
    {
        return (char *)arr;
    }
    // 遍历字符串arr
    while (*stu)
    {
        // 将s1和s2分别指向stu和brr的当前字符,开始新一轮的比较
        s1 = stu;
        s2 = (char *)brr;
        // 内部循环,逐个比较s1和s2指向的字符,如果相同则继续比较下一个字符
        while (*s1 && *s2 && (*s1 == *s2))
        { // '\0'的ASCII码值是0,视为假
            s1++;
            s2++;
        }
        // 如果s2已经指向结束符'\0',则说明在stu开始的位置找到了子串brr,返回stu
        if (*s2 == '\0')
        {
            return stu; // 找到子串p2
        }
        // 如果s1已经指向结束符'\0',说明当前stu所在子串长度不足以匹配brr,终止本次查找
        if (*s1 == '\0')
        {
            return NULL;
        }
        // 移动stu指针,使其指向下一个可能的子串起始位置
        *stu++;
    }
    // 遍历结束后仍未找到子串brr,则返回NULL
    return NULL; // 没找到
}
int main(int argc, char const *argv[])
{
    char arr[20] = "";
    char brr[20] = "";
    printf("请输入第一个字符串:");
    scanf("%s", &arr);
    printf("请输入第二个字符串:");
    scanf("%s", &brr);
    const char *ret = my_strstr(arr, brr);
    // 根据返回值判断查找结果
    if (ret == NULL)
    {
        printf("no\n");
    }
    else
    {
        printf("yes\n");
    }
    return 0;
}

结果:

相关推荐

  1. 作业..........

    2024-07-13 15:34:04       50 阅读
  2. 20240203作业

    2024-07-13 15:34:04       39 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-13 15:34:04       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-13 15:34:04       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-13 15:34:04       58 阅读
  4. Python语言-面向对象

    2024-07-13 15:34:04       69 阅读

热门阅读

  1. 红帽虚拟化REST API指导文档

    2024-07-13 15:34:04       22 阅读
  2. 层次分析法:matlab代码实现

    2024-07-13 15:34:04       20 阅读
  3. Tg机器人开发:实现自动化图片审核功能

    2024-07-13 15:34:04       19 阅读
  4. Mojo AI编程语言(三)数据结构:高效数据处理

    2024-07-13 15:34:04       23 阅读
  5. postgresql创建只读权限的用户

    2024-07-13 15:34:04       18 阅读
  6. Oracle数据文件扩容

    2024-07-13 15:34:04       23 阅读
  7. vue3的服务端渲染实战项目(1)共12节

    2024-07-13 15:34:04       24 阅读
  8. ubuntu 24.04 安装telnet服务

    2024-07-13 15:34:04       22 阅读
  9. 【Docker Install SQL Server】

    2024-07-13 15:34:04       19 阅读