
编写C程序,查找在已知的两个从小到大有序的数组中出现的所有相同元素在第一个数组中的位置。
3个回答
展开全部
由于你没有说清楚是字符数组还是数值
我给你下面两个函数:
第一个是针对数组元素为数值型的,第二个是针对字符型的
#include<stdio.h>
#include<string.h>
#define M 10
void checkCom(int *a,int *b) //实现查找工能,并输出的函数
{
int i,j;
for(i=0;i<M;i++)
{
for(j=0;j<M;j++)
{
if(*(a+i)==*(b+j))
{
printf("%2d在第一个字符串中的%2d号位置\n",*(a+i),i);
}
}
}
}
void main()
{
int a[M],b[M],i;
printf("请输入第一个数组的内容(长度为%d):\n",M);
i=0;
do{
scanf("%d",&(a[i]));
i++;
}
while(i<M);
printf("请输入第二个数组的内容(长度为%d):\n",M);
i=0;
do{
scanf("%d",&(b[i]));
i++;
}
while(i<M);
checkCom(a,b);
}
第二个是针对字符串的
#include<stdio.h>
#include<string.h>
#define M 10
void checkCom(char *a,char *b)
{
int i,j;
strlen(a);
strlen(b);
for(i=0;i<strlen(a);i++)
{
for(j=0;j<strlen(b);j++)
{
if(*(a+i)==*(b+j))
{
printf("第二个字符串中的%2c字符出现在第一个字符串中的%2d号位置\n",*(a+i),i);
}
}
}
}
void main()
{
char a[M],b[M]; //
printf("请输入第一个数组的内容(长度小于%d):\n",M);
gets(a);
printf("请输入第二个数组的内容(长度小于%d):\n",M);
gets(b);
checkCom(a,b);
}
我给你下面两个函数:
第一个是针对数组元素为数值型的,第二个是针对字符型的
#include<stdio.h>
#include<string.h>
#define M 10
void checkCom(int *a,int *b) //实现查找工能,并输出的函数
{
int i,j;
for(i=0;i<M;i++)
{
for(j=0;j<M;j++)
{
if(*(a+i)==*(b+j))
{
printf("%2d在第一个字符串中的%2d号位置\n",*(a+i),i);
}
}
}
}
void main()
{
int a[M],b[M],i;
printf("请输入第一个数组的内容(长度为%d):\n",M);
i=0;
do{
scanf("%d",&(a[i]));
i++;
}
while(i<M);
printf("请输入第二个数组的内容(长度为%d):\n",M);
i=0;
do{
scanf("%d",&(b[i]));
i++;
}
while(i<M);
checkCom(a,b);
}
第二个是针对字符串的
#include<stdio.h>
#include<string.h>
#define M 10
void checkCom(char *a,char *b)
{
int i,j;
strlen(a);
strlen(b);
for(i=0;i<strlen(a);i++)
{
for(j=0;j<strlen(b);j++)
{
if(*(a+i)==*(b+j))
{
printf("第二个字符串中的%2c字符出现在第一个字符串中的%2d号位置\n",*(a+i),i);
}
}
}
}
void main()
{
char a[M],b[M]; //
printf("请输入第一个数组的内容(长度小于%d):\n",M);
gets(a);
printf("请输入第二个数组的内容(长度小于%d):\n",M);
gets(b);
checkCom(a,b);
}
展开全部
#include<stdio.h>
int search(int *p1,int *p2,int *p3,int n)
{
int count=0,num=0;
int *p1_end=p1+n,*p2_end=p2+n;
while(p1<p1_end&&p2<p2_end)
if(*p1<=*p2)
if(*p1==*p2)
{
*p3=count++;
p3++;
p1++;
p2++;
num++;
}
else
{
p1++;
count++;
}
else
{
p2++;
}
return num;
}
void main()
{
int a[5],b[5],c[5]={0};
int i,n=5;
for(i=0;i<n;i++)
{
printf("a[%d]:",i);
scanf("%d",&a[i]);
}
for(i=0;i<n;i++)
{
printf("b[%d]:",i);
scanf("%d",&b[i]);
}
n=search(a,b,c,n);
for(i=0;i<n;i++)
printf("%d\n",c[i]);
}
希望符合你的要求
int search(int *p1,int *p2,int *p3,int n)
{
int count=0,num=0;
int *p1_end=p1+n,*p2_end=p2+n;
while(p1<p1_end&&p2<p2_end)
if(*p1<=*p2)
if(*p1==*p2)
{
*p3=count++;
p3++;
p1++;
p2++;
num++;
}
else
{
p1++;
count++;
}
else
{
p2++;
}
return num;
}
void main()
{
int a[5],b[5],c[5]={0};
int i,n=5;
for(i=0;i<n;i++)
{
printf("a[%d]:",i);
scanf("%d",&a[i]);
}
for(i=0;i<n;i++)
{
printf("b[%d]:",i);
scanf("%d",&b[i]);
}
n=search(a,b,c,n);
for(i=0;i<n;i++)
printf("%d\n",c[i]);
}
希望符合你的要求
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
想学习编程? 到饭客网络看看啊
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询