C语言怎样比较两个int型数组中的数是不是一模一样?

int型数组不能用strcmp比较吧?求大神解答,我现在要比较两个int型数组中的数是不是一样的,不知道怎么比较,知道的告诉我以下吧,谢谢了

函数原型
int memcmp(const void *buf1, const void *buf2, unsigned int count);
功能:比较内存区域buf1和buf2的前count个字节。
所需头文件
#include <string.h>或#include<memory.h>
返回值
当buf1<buf2时,返回值<0
当buf1=buf2时,返回值=0
当buf1>buf2时,返回值>0

假设数组声明
int a[20];
int b[20];
// 中间为数组赋值过
if (!memcmp(a,b,sizeof(int)*20)) {
// 数组相同
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-01-08
/* i 代表1 ~ 9 数字,可以用你想要的数组代替 */
/*a[j] 你要验证是否存在1 ~ 9的数组*/
bool bRight = true;
int a[9] = {1,2,3,4,5,6,7,8,9};
int b[9] = {2,4,3,1,7,9,5,8,6};
for(int i=0;i<9;i++)
{
for(int j=0;j<9;j++)
{
if(a[i] != -1 && b[j] == a[i])
{
a[i] = -1; //将出现过的数字拉黑,防止相同值重复判断
break;
}
if(j == 8)
{
bRight = false;
cout << "没有数字<" <<a[i]<<">"<<endl;
}
}
}
if(bRight ) cout << "相同" <<endl;
else cout << "不相同" <<endl;
第2个回答  2014-01-08

一个个比较,差不多这样

int cmp()
{
    int i;
    for(i = 0;i < size;i++)
    {
        if(a[i] != b[i])
            return 1;
    }
}

        

追问

这样很麻烦的样子啊,要是有一个元素不相同就返回1啊?而且我的数组并不是已经排好大小顺序的呢。

其实我现在主要是想判断一个int型数组里是不是刚刚好是1~9这9个数字在里面,我就向定义一个数组a[9]={1,2,3,4,5,6,7,8,9},然后再跟我要判断的那个数组进行比较,可是我不知道怎么比较。请详细解答。(也可以提供另外一种方法给我判断那个数组中是否包含1~9这9个数字),谢谢

追答

不知道你要表达什么,,已经尽量揣测你的意思了

int a[size];
int b[cmpszie];  /*cmp array*/
for(i = 0;i < size;i++)
{
    for(j = 0 ;j < cmpsize;j++)
        if(a[i] == b[j])
           /**do something**/
}

第3个回答  2014-01-08
简单的加个循环判断就可以了追问

请详细点哈,其实我现在主要是想判断一个int型数组里是不是刚刚好是1~9这9个数字在里面,我就向定义一个数组a[9]={1,2,3,4,5,6,7,8,9},然后再跟我要判断的那个数组进行比较,可是我不知道怎么比较。请详细解答。(也可以提供另外一种方法给我判断那个数组中是否包含1~9这9个数字),谢谢

追答

for(int i = 0 ; i < 9 ;) {
if(a[i] == i+1 ){
i++;
}else b ;
}

相似回答