C语言 两个数组中同时存在的数
wangyanhpa:
#include "stdio.h"
int main()
{
int a【10】,b【10】,c【10】,i,j,k=0;
int count=0,n,t,flag=0,m;
for(i=0;i<10;i++)
scanf("%d",&a【i】);
for(i=0;i<10;i++)
scanf("%d",&b【i】);
for(i=0;i<10;i++)
{
n=a【i】;
for(j=0;j<10;j++)
{
if (n==b【j】)
{
for(m=0;m<k;m++)
{
flag=0;
if (n==c【m】)
{
flag=1;
break;
}
}
if (flag==0)
{
c【k】=n;
k++;
count++;
}
}
}
}
if(count>0)
{
//sort
for(i=0;i<k-1;i++)
for(j=0;j<k-1-i;j++)
if(c【j】<c【j+1】)
{
t=c【j】;
c【j】=c【j+1】;
c【j+1】=t;
}
for(i=0;i<k;i++)
printf("%d ",c【i】);
}
else
printf("count=0\n");
return 0;
}
【回复】老师,可以直接不写n等于a【i】,直接判断a【i】==b【j】吗?wangyanhpa:
int main()
{
int i,j,a【10】,b【10】,c【10】,k=0,count=0,n,flag=0;
input(a);
input(b);
for (i=0;i<10;i++)
{
n=a【i】;
for(j=0;j<10;j++)
{
if (n==b【j】)
{
flag=find(n,c,k);
if (flag==0)
{
c【k】=n;
k++;
count++;
break;
}
}
}
}
if (count>0)
{
//sort
sort(c,k);
output(c,k);
}
else
printf("count=0\n");
return 0;
}wangyanhpa:
考虑如何改成函数实现?
参考代码如下:
#include "stdio.h"
//输入10个整数到数组arr中
void input(int arr【10】)
{
int i;
for(i=0;i<10;i++)
scanf("%d",&arr【i】);
}
//输出数组arr,arr中有n个整数元素
void output(int arr【】,int n)
{
int i;
for(i=0;i<n;i++)
printf("%d ",arr【i】);
}
//查找整数zhao是否在数组arr中,arr中有n个整数元素
//找到返回1,没找到返回0
int find(int zhao,int arr【】,int n)
{
int i,flag=0;
for(i=0;i<n;i++)
{
if(zhao==arr【i】)
{
flag=1;
return flag;
}
}
return flag;
}
//对数组arr冒泡排序,arr中有n个整数元素
void sort(int arr【】,int n)
{
int i,j,t;
for(i=0;i<n-1;i++)
for(j=0;j<n-1-i;j++)
if (arr【j】<arr【j+1】)
{
t=arr【j】;
arr【j】=arr【j+1】;
arr【j+1】=t;
}
}wangyanhpa:
flag=0;合理的方式应该放到
for(m=0;m<k;m++) 前一行