C的数组排序问题 “bb[cnt]=aa[i];”这里被提示错误错误:1 error C2106: “=”: 左操作数必须为左值
#include<stdio.h>#include<stdlib.h>intmain(void){intaa[20][3]={{111,222,333},{123,321...
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int aa[20][3]={{111,222,333},{123,321,101},{987,501,721},{889,354,100},{120,901,301},{456,761,402},{129,980,999},
{223,120,543},{123,821,342},{211,234,902},{541,230,111},{601,562,203},{233,765,122},{801,999,201},
{102,103,912},{987,120,302},{706,607,543},{201,333,456},{504,421,312},{450,123,670}};
int bb[20][3];
int i,j,g,h,cnt=0,temp[3];
for (i=0;i<20;i++)
{
if (aa[i][1]>aa[i][0]+aa[i][2])
{
bb[cnt]=aa[i];
cnt++;
}
}
for (j=0;j<cnt-1;j++)
for (g=j+1;g<cnt;g++)
{
if (bb[j][1]+bb[j][2]<bb[g][1]+bb[g][2])
{
temp=bb[j];
bb[j]=bb[g];
bb[g]=temp;
}
}
for (h=0;h<cnt;h++)
{
printf ("&d ",bb[h][]);
}
} 展开
#include <stdlib.h>
int main(void)
{
int aa[20][3]={{111,222,333},{123,321,101},{987,501,721},{889,354,100},{120,901,301},{456,761,402},{129,980,999},
{223,120,543},{123,821,342},{211,234,902},{541,230,111},{601,562,203},{233,765,122},{801,999,201},
{102,103,912},{987,120,302},{706,607,543},{201,333,456},{504,421,312},{450,123,670}};
int bb[20][3];
int i,j,g,h,cnt=0,temp[3];
for (i=0;i<20;i++)
{
if (aa[i][1]>aa[i][0]+aa[i][2])
{
bb[cnt]=aa[i];
cnt++;
}
}
for (j=0;j<cnt-1;j++)
for (g=j+1;g<cnt;g++)
{
if (bb[j][1]+bb[j][2]<bb[g][1]+bb[g][2])
{
temp=bb[j];
bb[j]=bb[g];
bb[g]=temp;
}
}
for (h=0;h<cnt;h++)
{
printf ("&d ",bb[h][]);
}
} 展开
展开全部
当声明数组时,他在内存的地址就确定了,数组操作实质还是对指针的操作。
具体来说:
当你声明bb[20][3]时,其实就有一个指针bb指向数组的开头,而bb[0]的值就是数组的第1行的地址,以此类推。
你可以用printf("%d",bb[0]);测试。输出的是一个整数,表示数组的第1行在内存中的地址。
所以你用bb[cnt]=aa[i]时,其实就是把aa[i]的值赋给一个常量(因为bb[cnt]是bb数组第cnt+1行的地址,已经确定,不能改变。)
所以会出错。
你可以再加一个内层循环,把aa[i][j]的每个值赋给bb[cnt][j],就可以了。
关于指针你如果不懂,可以查一下有关书籍。
具体来说:
当你声明bb[20][3]时,其实就有一个指针bb指向数组的开头,而bb[0]的值就是数组的第1行的地址,以此类推。
你可以用printf("%d",bb[0]);测试。输出的是一个整数,表示数组的第1行在内存中的地址。
所以你用bb[cnt]=aa[i]时,其实就是把aa[i]的值赋给一个常量(因为bb[cnt]是bb数组第cnt+1行的地址,已经确定,不能改变。)
所以会出错。
你可以再加一个内层循环,把aa[i][j]的每个值赋给bb[cnt][j],就可以了。
关于指针你如果不懂,可以查一下有关书籍。
来自:求助得到的回答
展开全部
错误太多了。
#include <stdio.h>
#include <stdlib.h>
#include<string.h>
int main(void)
{
int aa[20][3]={{111,222,333},{123,321,101},{987,501,721},{889,354,100},{120,901,301},{456,761,402},{129,980,999},
{223,120,543},{123,821,342},{211,234,902},{541,230,111},{601,562,203},{233,765,122},{801,999,201},
{102,103,912},{987,120,302},{706,607,543},{201,333,456},{504,421,312},{450,123,670}};
int bb[20][3];
int i,j,g,h,cnt=0,temp[3];
for (i=0;i<20;i++)
{
if (aa[i][1]>aa[i][0]+aa[i][2])
{
//bb[cnt]=aa[i];
memmove(bb[cnt], aa[i], sizeof(bb[0]));
cnt++;
}
}
for (j=0;j<cnt-1;j++)
for (g=j+1;g<cnt;g++)
{
if (bb[j][1]+bb[j][2]<bb[g][1]+bb[g][2])
{
//temp=bb[j];
//bb[j]=bb[g];
//bb[g]=temp;
memmove(temp, bb[j], sizeof(bb[0]));
memmove(bb[j], bb[g], sizeof(bb[0]));
memmove(bb[g], temp, sizeof(bb[0]));
}
}
for (h=0;h<cnt;h++)
{
for (i = 0; i < 3; i++)
printf ("%d ",bb[h][i]);
printf("\n");
}
}
#include <stdio.h>
#include <stdlib.h>
#include<string.h>
int main(void)
{
int aa[20][3]={{111,222,333},{123,321,101},{987,501,721},{889,354,100},{120,901,301},{456,761,402},{129,980,999},
{223,120,543},{123,821,342},{211,234,902},{541,230,111},{601,562,203},{233,765,122},{801,999,201},
{102,103,912},{987,120,302},{706,607,543},{201,333,456},{504,421,312},{450,123,670}};
int bb[20][3];
int i,j,g,h,cnt=0,temp[3];
for (i=0;i<20;i++)
{
if (aa[i][1]>aa[i][0]+aa[i][2])
{
//bb[cnt]=aa[i];
memmove(bb[cnt], aa[i], sizeof(bb[0]));
cnt++;
}
}
for (j=0;j<cnt-1;j++)
for (g=j+1;g<cnt;g++)
{
if (bb[j][1]+bb[j][2]<bb[g][1]+bb[g][2])
{
//temp=bb[j];
//bb[j]=bb[g];
//bb[g]=temp;
memmove(temp, bb[j], sizeof(bb[0]));
memmove(bb[j], bb[g], sizeof(bb[0]));
memmove(bb[g], temp, sizeof(bb[0]));
}
}
for (h=0;h<cnt;h++)
{
for (i = 0; i < 3; i++)
printf ("%d ",bb[h][i]);
printf("\n");
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
数组不允许整个赋值,你只能对其元素赋值,用一个循环对它每个元素赋值
printf ("&d ",bb[h][]);这也是不允许得,bb[h][]我估计你是想打印bb[h]得每个元素,但是你不允许这么坐,你只能写个循环挨个打印, &d肯定也是错误得
printf ("&d ",bb[h][]);这也是不允许得,bb[h][]我估计你是想打印bb[h]得每个元素,但是你不允许这么坐,你只能写个循环挨个打印, &d肯定也是错误得
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询