编写一个程序,其中包括一个函数,
该函数将比较两个相同大小的数组中的值。
如果两个数组中的元素相同,则函数返回1,否则返回0。
在函数中声明两个数组,每个有五个元素。
通过使用该函数进行比较,并显示结果。
#include<stdio.h>
int main()
{
int a[5],b[5],i,j,x,y;
printf("输入数组a的元素:\n");
for(i=0;i<5;i++)
scanf("%d",&a[i]);
printf("输入数组b的元素:\n");
for(i=0;i<5;i++)
scanf("%d",&b[i]);
printf("%d,%d",a[i],b[i]);
for(j=0;j<5;j++)
{
if(a[j]>b[j])
{
if(a[j]<b[j])
x=0;
}
printf("%d",x);
if(a[j]==b[j])
{
y=1;
}
printf("%d",y);
}
你题目的解答代码如下:
#include <stdio.h>
int main()
{
int a[5], b[5], i, j, x, y;
printf("输入数组a的元素:\n");
for (i = 0; i < 5; i++)
scanf("%d", &a[i]);
printf("输入数组b的元素:\n");
for (i = 0; i < 5; i++)
scanf("%d", &b[i]);
y = 1;
for (j = 0; j < 5; j++)
{
if (a[j] != b[j])
y = 0;
}
printf("%d", y);
}
如有帮助,望采纳!谢谢!
如果a和b中元素的顺序可以不一样的话,先对数组排序,然后逐个元素对比就是了,只要有不等的就返回0,全部相等就返回1
如果要求a和b中的元素的顺序完全一致的话,就不用排序,直接用for循环逐个对比就可以了。
代码修改如下:
#include <stdio.h>
int comp(int a[],int b[],int n)
{
int i,j,t;
//a排序
for (i=0;i<n-1;i++)
{
for (j=0;j<n-1-i;j++)
{
if(a[j]>a[j+1])
{
t = a[j];
a[j] = a[j+1];
a[j+1] = t;
}
}
}
//b排序
for (i=0;i<n-1;i++)
{
for (j=0;j<n-1-i;j++)
{
if(b[j]>b[j+1])
{
t = b[j];
b[j] = b[j+1];
b[j+1] = t;
}
}
}
//判断是否相等
for(i=0;i<n;i++)
{
if(a[i] != b[i])
return 0;
}
return 1;
}
int main()
{
int a[5],b[5],i,y;
printf("输入数组a的元素:\n");
for(i=0;i<5;i++)
scanf("%d",&a[i]);
printf("输入数组b的元素:\n");
for(i=0;i<5;i++)
scanf("%d",&b[i]);
y = comp(a,b,5);
printf("%d",y);
return 0;
}
#include<stdio.h>
int compare(int* a, int *b){
int i,j;
int flag;
for(i=0;i<5;i++){
flag = 1;
for(j = 0;j<5;j++){
if (a[i] == b[j])
{
flag = 0;
}
}
if (flag == 1)
{
return 0;
}
}
return 1;
}
int main()
{
int a[5],b[5],i;
printf("输入数组a的元素:\n");
for(i=0;i<5;i++)
scanf("%d",&a[i]);
printf("输入数组b的元素:\n");
for(i=0;i<5;i++)
scanf("%d",&b[i]);
int ret = compare(a,b);
printf("两个数组中的元素%s\n", ret == 1 ? "相同":"不相同");
return 0;
}