當前位置:首頁 » 編程語言 » c語言二維數組比較
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言二維數組比較

發布時間: 2022-10-06 00:21:54

c語言二維數組的比較。。。

a[NR][NC]={...}
b[rb][NC] = {..}
假定 NR,NC,rb 已知,數據已輸入。
處理程序例子如下:

#include <stdio.h>
main(){
int a[4][5]= { {1,2,3,4,5}, {6,7,8,9,10}, {11,12,13,14,15} ,{16,17,18,19,20}};
int b[2][5]= { {6,7,8,9,10,} ,{11,12,13,14,15} };
int row[4]; // 存放各行是否要刪信息。1要,0不要。
int NR=4,NC=5,rb=2;
int i,j,k,flag;

for (i=0;i<NR;i++) row[i]=0; //初始化0
for (j=0;j<NR;j++){
if (row[j]==0)
for (k=0;k<rb;k++){
flag = 0;
for (i=0;i<NC;i++){
if (a[j][i]==b[k][i]) flag++; // 統計此行中有幾個數相等
}
if (flag == NC) row[j]=1; // 滿足此條件的行要刪
}
}

// for (i=0;i<NR;i++) printf("%d ",row[i]);printf("\n");

for (j=0;j<NR;j++){
if (row[j]==0) {
for (i=0;i<NC;i++) printf("%d ",a[j][i]);
printf("\n");
}

}
}

⑵ c語言中怎樣比較兩個二維數組相同

#include<string.h>
strcmp(char *s1,char *s2)
把你的2個二維數組寫進去就可以了; 如果strcmp的返回值等於0說明相等

⑶ c語言二維數組與一維數組比較有相同的刪掉一行,也可以賦值給另一個二維數組。

可以採用兩種方式:

1 按元素賦值:

遍歷一維數組,並將每個元素賦值到二維數組的對應元素上。

或者遍歷二維數組,將每個元素賦值為一維數組對應值上。

優點為操作靈活,可以按照需要任意賦值。

2 當一維數組和二維數組類型相同,而且賦值順序與一維數組中的存儲順序完全相同時,可以用memcpy的方式,直接一次性賦值。

如一維數組為a,二維數組為b,基礎類型為TYPE,需賦值元素個數為n,可以調用

memcpy(b,a,sizeof(TYPE)*n);

該方法有點為操作簡單,執行效率高。

不過所需滿足的前提條件多。在滿足上述所有條件時,用memcpy的方式更為簡單。

⑷ 關於c語言 二維數組排列大小的問題

如果沒看錯的話,你寫的代碼是把二維數組每行元素按從小到大排列,而行與行之間不會進行比較,如果這是你的想法,我幫你把代碼改下:

第四行筆誤:for(j=0;j<3;j++)改成for(j=0;j<3;j++)。

第五行for(k=0;k<12;k++0 應是多餘的吧,後面沒用到k。

循環語句{for(i=0;i<3;i++)
for(j=0;j<4;j++)
{if(j<3)
{if(a[i][j]>a[i][j+1])
{t=a[i][j];a[i][j]=a[i][j+1];a[i][j+1]=t;}
if(j==3)
{if(a[i][3]>a[i+1][0])
{t=a[i][3];a[i][3]=a[i+1][0];a[i+1][0]=t;}
}
並不能起到將一行中的元素從大到小排列,若某行為6,5,1,2四數經過比較後只會得到:5,1,2,6;注意這只可以使得最後一數為最大。
而且if(j==3)
{if(a[i][3]>a[i+1][0])
{t=a[i][3];a[i][3]=a[i+1][0];a[i+1][0]=t;}
}
這行代碼出現在這里也是不對的。

循環代碼修改如下:int m;
for(i=0;i<3;i++)
for(j=0;j<4;j++)
{ m=0;
for(k=1;k<=3-j;k++)
if(a[i][m]<a[i][k])
{ k=m;
t=a[i][m];
a[i][m]=a[i][k];
a[i][k]=t;
}
}

這樣可完成上面對每行的元素從下到大排列的目的,而行與行之間不互相比較排列。

可能你是想把全部元素從小到大排列,可利用指針來排列:
#include<stdio.h>
int main()
{
int a[3][4],*p=a[0],i,j,k,temp;
printf("please input twelve integr:")
for(i=0;i<3;i++)
for(j=0;j<4;j++)
scanf("%d",&a[i][j]);
for(i=1;i<12;i++) \*用冒泡法排序,每次選出最大的放到最後*\
{ k=0;
for(j=1;j<=12-i;j++)
if(*p[k]>*p[j])
{ k=j;
temp=*p[k];
*p[k]=*p[j];
*p[j]=*p[k];
}
}
printf("\n");
for(i=0;i<3;i++)
for(j=0;j<4;j++)
printf(" %d ",a[i][j]);
}

⑸ C語言 比較兩個大小不同的二維數組。返回配對成功的位置

兩種方法:
1.轉化為一維數組申請
2.先申請全部行首指針,再按行逐行申請

1.
a=(int *)malloc(sizeof(int),(unsigned)m*n);
使用的時候就和一般的二維數組一樣。
舉個例子給你:
#include "stdlib.h"
#include "stdio.h"
#include <malloc.h>

int main()
{
int i,j;
int n;//這個就是需要指定的行數
int (*p)[10];

scanf("%d",&n);//取得行數

//動態生成二維數組,指定列數為10,如果想改,自己該裡面
的參數,如果想定義n行2列就為: p=(int (*)[2])malloc(n*2*sizeof(int));
p=(int (*)[10])malloc(n*10*sizeof(int)); //動態申請n行10列的二維數組

for(i=0;i<n;i++)
for(j=0;j<10;j++)
p[i][j]=i*j;

for(i=0;i<n;i++)
{
for(j=0;j<10;j++)
printf("%d,",p[i][j]);

printf("\n");
}
free(p);

return 0;
}

2.
這個也給你舉個例子吧:
#include <stdio.h>
#include <malloc.h>
main()
{
int i = 0;
int j = 0;
int line = 0;
int row = 0;
int **p = NULL;

⑹ c語言 二維數組的比較

if(a[i]==b[j][0])
{
n=1;
for(k=0;k<4;k++)
n=0;
}
//根據語法規則你這一句裡面的內容應該是無效的(n始終為0),so 後面的一大串都沒有被執行;

⑺ 急求,C語言二維數組字元串的比較

#include<stdio.h>
#include<string.h>

#defineN113101
#defineM200

FILE*fp1,*fp2;

intmain(){
inti,j,k,cnt,n=0;
staticchara[N][M]={0};
fp1=fopen("ccc.txt","rt");
fp2=fopen("ggg.txt","wt");
while(!feof(fp1))
fscanf(fp1,"%s",a[n++]);
fclose(fp1);
for(i=0;i<n-1;i++){
cnt=1;
for(j=i+1;j<n;++i){
if(strcmp(a[i],a[j])==0){
++cnt;
for(k=j;k<n-1;++k)
strcpy(a[k],a[k+1]);
--n;
}
}
fprintf(fp2,"%s %d ",a[i],cnt);
}
fclose(fp2);
return0;
}

⑻ c語言二維數組比較大小

if(i==j==0){max=x;min=x;}
中的
i==j==0
等價於
(i==j)==0
所以當i=1 j=0時(即倒數第二輪)
其值為0==0 即1
所以 max和min被重新賦值了
這樣只能比較最後兩個

應該改成
if(i==0&&j==0){max=x;min=x;}
其他不變

⑼ 二維數組比大小,結果不對,C語言高手請進

#include <stdio.h>
void main ()
{int a[4][3];
int i,j,max,c,l;
printf("要比較的12個num ");
for (i=0;i<4;i++)
for (j=0;j<3;j++)
scanf("%d",&a[i][j]) ;
max=a[0][0];
for (i=0;i<4;i++)
for (j=0;j<3;j++)
if (a[i][j]>max){max=a[i][j]; c=i;l=j;}
printf("max=%d,i=%d,j=%d",max,c,l) ;
getch();
}

⑽ C語言中strcmp可以比較二維數組嗎

C語言中strcmp可以比較二維數組嗎?

不行,strcmp只能比較2個字元串,即2個一維的字元數組。如果要比較2個2維的字元串數組,必須逐個字元串元素進行比對。

#include<stdio.h>
#include<string.h>
#defineN2
voidmain()
{
//chara[N][2]={1,2,3};
//charb[N][2]={1,2,3};
chara[n][2]={"abc","hello","world"};
charb[n][2]={"abc","hello","world"};
boolmark=true;
for(inti=0;i<N;i++){
if(!strcmp(a,b)){
mark=false;
break;
}
}
if(mark)
printf("兩個一樣");
else
printf("不一樣");
}


如果滿意,歡迎採納,謝謝

如有疑問,歡迎追問