首页 > 其他分享 >笔试题

笔试题

时间:2024-10-24 20:23:42浏览次数:1  
标签:arr return int 笔试 mid ele str

不调用库函数的情况下实现一个strcpy函数。

void my_strcpy(char* dest, const char* src) {
    int i = 0;
    while (src[i] != '\0') {
        dest[i] = src[i];
        i++;
    }
    dest[i] = '\0'; // 添加字符串结束的空字符
}

/*
 * @Author: [email protected]
 * @Date: 2024-10-24
 * @LastEditors: None
 * @LastEditTime: None
 * @FilePath: 实现二分搜索算法.c
 * @Description: 
 * 
 * Copyright (c) 2024 by [email protected], All Rights Reserved. 
 */
#include <stdio.h>
//实现二分查找算法,ele表示要查找的目标元素,[p,q] 指定查找区域
int binary_search(int *arr,int p,int q,int ele) {
    int mid = 0;
    //如果[p,q] 不存在,返回 -1
    if (p > q) {
        return -1;
    }
    // 找到中间元素所在的位置
    mid = p + (q - p) / 2;
    //递归的出口
    if (ele == arr[mid]) {
        return mid;
    }
    //比较 ele 和 arr[mid] 的值,缩小 ele 可能存在的区域
    if (ele < arr[mid]) {
        //新的搜索区域为 [p,mid-1]
        return binary_search(arr, p, mid - 1, ele);
    }
    else {
        //新的搜索区域为 [mid+1,q]
        return binary_search(arr, mid + 1, q, ele);
    }
}
int main()
{
    int arr[10] = { 10,14,19,26,27,31,33,35,42,44 };
    //输出二叉查找元素 31 所在位置的下标
    printf("%d", binary_search(arr, 0, 9, 31));
    return 0;
}


/*
 * @Author: [email protected]
 * @Date: 2024-10-24
 * @LastEditors: None
 * @LastEditTime: None
 * @FilePath: test.c
 * @Description: 
 * 
 * Copyright (c) 2024 by [email protected], All Rights Reserved. 
 */

/*
    编写一个函数,作用是把一个char组成的字符串循环右移n个。比如原来是”abcdefghi”,
  如果n=2,移位后应该是”hiabcdefgh”。
*/

#include <stdio.h>
#include <string.h>

void rightRotate(char str[], int n)
 {
    int len = strlen(str);
    char temp[n];
    // 保存右移的后 n 个字符
    strncpy(temp, str + (len - n), n);
    // 后移原字符串的前 len-n 个字符
    memmove(str + n, str, len - n);
    // 将保存的 n 个字符复制到原字符串的开头
    memcpy(str, temp, n);
}

标签:arr,return,int,笔试,mid,ele,str
From: https://www.cnblogs.com/hhail08/p/18500386

相关文章