1.写一个函数int find( char *s1, char*s2), 函数find 的功能是查找串s1 中是否包含指定的词(s2 指向),如果存在则返回第1次出现的位置,否则返回-1。约定串中的词由1个或1个以上的空格符分隔。 2.定义函数void Merge(int a[], int n, int b[], intm), 参数a、b为一维数组,数组中的数据为升序排列,n和m分别为它们的元素个数。函数的功能为:将数组a和b合并为一个数组,合并后的结果存放于数组a中,要求合并后的数组a仍旧为升序排列。请编程实现,并编写main 函数对其测试。
2条回答 默认 最新
- qfl_sdu 2021-05-23 22:06关注
代码如下,如有帮助,请采纳一下,谢谢。
#include <stdio.h> #include <string> int find(char* s1,char*s2) { int len1 = strlen(s1); int len2 = strlen(s2); for (int i = 0; i < len1 - len2; i++) { bool b = true; for (int j = 0; j < len2;j++) { if(s1[i+j] != s2[j]) { b = false; break; } } if (b) { return i; } } return -1; } void Merge(int a[], int n, int b[], int m) { int* buf = new int[m+n]; int i = 0; int j = 0; int index = 0; while (i < n || j < m) { if (i < n && j < m) { if (a[i] < b[j]) { buf[index] = a[i]; index++; i++; }else { buf[index] = b[j]; index++; j++; } }else if (i == n && j < m) { buf[index] = b[j]; index++; j++; }else { buf[index] = a[i]; index++; i++; } } for (int t = 0; t < m+n; t++) { a[t] = buf[t]; } delete[] buf; buf = 0; } int main() { char* s1 = "abcd efgbc hijklbcmnbc ha"; char* s2 = "bc"; int index = find(s1,s2); printf("%s在%s中的索引:%d\n",s2,s1,index); int a[100] = {1,12,33,44,55,66,88}; int b[4] = {2,45,99,100}; printf("合并前a:"); for (int i = 0; i <7; i++) { printf("%d ",a[i]); } printf("\n合并前b:"); for (int i = 0; i <4; i++) { printf("%d ",b[i]); } printf("\n合并后a:"); Merge(a,7,b,4); for (int i = 0; i <11; i++) { printf("%d ",a[i]); } getchar(); getchar(); return 0; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥20 请问有人知道怎么用工艺库里面的sdb文件通过virtuoso导出来library里面每个cell的symbol吗?
- ¥20 海思 nnie 编译 报错
- ¥50 决策面并仿真,要求有仿真结果图
- ¥15 springboot接入微信支付SDK
- ¥50 大区域的遥感影像匹配 怎么做啊
- ¥15 求解答:pytorch跑yolov8神经网络受挫
- ¥20 Js代码报错问题不知道怎么解决
- ¥15 gojs 点击按钮node的position位置进行改变,再次点击回到原来的位置
- ¥20 halcon 图像拼接
- ¥15 webstorm上开发的vue3+vite5+typeScript打包时报错