差别
这里会显示出您选择的修订版和当前版本之间的差别。
两侧同时换到之前的修订记录 前一修订版 后一修订版 | 前一修订版 | ||
aa [2024/12/02 18:28] – doge24190 | aa [2025/04/15 01:32] (当前版本) – doge24190 | ||
---|---|---|---|
行 7: | 行 7: | ||
点击下载 | 点击下载 | ||
- | 以下是根据题目要求设计的两个C语言程序: | + | {{tag>存档}} |
- | + | ||
- | (1) insert函数 | + | |
- | + | ||
- | 设计一个char* insert(char* s1, char* s2, int n)函数,在字符串s1的第n个位置插入字符串s2: | + | |
- | + | ||
- | #include < | + | |
- | #include < | + | |
- | #include < | + | |
- | + | ||
- | char* insert(char* s1, char* s2, int n) { | + | |
- | int len1 = strlen(s1); | + | |
- | int len2 = strlen(s2); | + | |
- | char* result = (char*)malloc(len1 + len2 + 1); // 分配新的内存 | + | |
- | + | ||
- | if (n > len1) n = len1; // 防止n超出范围 | + | |
- | + | ||
- | // 拷贝s1前n个字符 | + | |
- | strncpy(result, | + | |
- | result[n] = ' | + | |
- | + | ||
- | // 拼接s2 | + | |
- | strcat(result, | + | |
- | + | ||
- | // 拼接s1剩余部分 | + | |
- | strcat(result, | + | |
- | + | ||
- | return result; | + | |
- | } | + | |
- | + | ||
- | int main() | + | |
- | char s1[100], s2[100]; | + | |
- | int n; | + | |
- | + | ||
- | printf(" | + | |
- | scanf(" | + | |
- | printf(" | + | |
- | scanf(" | + | |
- | printf(" | + | |
- | scanf(" | + | |
- | + | ||
- | char* result = insert(s1, s2, n); | + | |
- | printf(" | + | |
- | + | ||
- | free(result); | + | |
- | return 0; | + | |
- | } | + | |
- | + | ||
- | (2) 改写strcpy函数 | + | |
- | + | ||
- | 利用指针实现char* strcpy(char* s1, char* s2)的功能: | + | |
- | + | ||
- | #include <stdio.h> | + | |
- | + | ||
- | char* strcpy_custom(char* s1, char* s2) { | + | |
- | char* p = s1; // 保存起始地址 | + | |
- | while ((*s1++ = *s2++) != ' | + | |
- | return p; | + | |
- | } | + | |
- | + | ||
- | int main() { | + | |
- | char s1[100], s2[100]; | + | |
- | + | ||
- | printf(" | + | |
- | scanf(" | + | |
- | + | ||
- | strcpy_custom(s1, | + | |
- | printf(" | + | |
- | + | ||
- | return 0; | + | |
- | } | + | |
- | + | ||
- | 以上代码分别完成了两个任务,运行后输入测试数据即可查看结果。 | + |