qi-1596 2021-05-23 20:37 采纳率: 50%
浏览 55
已采纳

两个c语言指针问题求解

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;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥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打包时报错