问:
想问一下这个c语言的题怎么做?
答:
这道C语言编程题如下:
请编写一个函数combine(com1, com2),该函数接收两个字符串com1和com2作为参数,将com2中的字符按顺序一个一个插入到com1中,实现两个字符串的组合。例如:
combine("abc","def")
返回值:"adbecf"
combine("dog","house")
返回值:"dhgoouse"
这个函数可以这样实现:
void combine(char com1[], char com2[]) {
int len1 = strlen(com1);
int len2 = strlen(com2);
int i = len1 - 1;
int j = len2 - 1;
int k = len1 + len2 - 1;
while(i >= 0 && j >= 0) {
com1[k--] = com1[i--];
com1[k--] = com2[j--];
}
while(j >= 0) {
com1[k--] = com2[j--];
}
}
说明如下:
1. 计算com1和com2的长度len1和len2
2. 初始化i、j、k分别指向com1、com2和com1的最后一个字符
3. 当com1和com2都还有字符没处理时,交替从com1和com2取字符并放到com1的最后
4. 如果com2先处理完,则继续从com2取字符放到com1最后
5. 实现将com2中的字符一个一个插入到com1的最后,完成两个字符串的组合
这个函数时间复杂度O(n),空间复杂度O(1)。Hope this helps! 如果你对这个题目或C语言有任何其他疑问,欢迎提出,我会尽量详细解答。