C语言,动态分配2维数组并赋初值,然后计算每个数组元素是其相邻的(上下左右)值的平均
答案:2 悬赏:10 手机版
解决时间 2021-02-13 22:51
- 提问者网友:皆是孤独
- 2021-02-13 08:39
C语言,动态分配2维数组并赋初值,然后计算每个数组元素是其相邻的(上下左右)值的平均
最佳答案
- 五星知识达人网友:笑迎怀羞
- 2021-02-13 08:59
#include
void main()
{ int m,n,i,j;
unsigned char *a,*b,*pa,*pb,*pu,*pd,*pl,*pr,*ppa,*ppb; //由于看起来是做中值滤波的程序,
unsigned int x; //所以假定数据是unsigned char型的
scanf("%d %d",&n,&m); //要求行数和列数均大于等于3
a=(unsigned char *)malloc(sizeof(unsigned int)*m*n); if ( a==NULL ) goto ERRORA;
b=(unsigned char *)malloc(sizeof(unsigned int)*(m-2)*(n-2));
for ( i=0,pa=a;i
for ( i=0,ppa=a,ppb=b;i
{ pu=pl=pd=ppa; pu++; pl+=m; pr=pl; pr++; pr++; pd+=(m*2); pb=ppb; pb++;
for ( j=0;j
{
x=(*pu); x+=(*pl); x+=(*pr); x+=(*pd); x>>=2; (*pb)=x; //求中值
}
}
for ( i=0,pa=a+m,pb=b;i
for ( j=0,ppa=pa+1;j
(*pa)=(*pb)
//至此,a中存放处理过后的数据,但边缘一圈数据没有经过处理。
free(b);
ERRORB: free(a);
ERRORA:;
}
void main()
{ int m,n,i,j;
unsigned char *a,*b,*pa,*pb,*pu,*pd,*pl,*pr,*ppa,*ppb; //由于看起来是做中值滤波的程序,
unsigned int x; //所以假定数据是unsigned char型的
scanf("%d %d",&n,&m); //要求行数和列数均大于等于3
a=(unsigned char *)malloc(sizeof(unsigned int)*m*n); if ( a==NULL ) goto ERRORA;
b=(unsigned char *)malloc(sizeof(unsigned int)*(m-2)*(n-2));
for ( i=0,pa=a;i
for ( j=0;j
{
x=(*pu); x+=(*pl); x+=(*pr); x+=(*pd); x>>=2; (*pb)=x; //求中值
}
}
for ( i=0,pa=a+m,pb=b;i
//至此,a中存放处理过后的数据,但边缘一圈数据没有经过处理。
free(b);
ERRORB: free(a);
ERRORA:;
}
全部回答
- 1楼网友:渡鹤影
- 2021-02-13 09:55
#include <stdio.h> #define row 3 #define col 3 #define ifedge(maxrow,maxcol,currow,curcol) (currow==0||curcol==0||currow==maxrow-1||curcol==maxcol-1) int main() { int data[row][col]; int counter1,counter2; int sum=0; for(counter1=0;counter1<row;++counter1) for(counter2=0;counter2<col;++counter2) { printf("请输入数组[%d][%d]元素长海拜剿之济瓣汐抱搂的值:",counter1,counter2); scanf("%d",&data[counter1][counter2]); if(ifedge(row,col,counter1,counter2)) sum+=data[counter1][counter2]; } for(counter1=0;counter1<row;++counter1) { printf("\n"); for(counter2=0;counter2<col;++counter2) { printf("%3d",data[counter1][counter2]); } } printf("\n\n数组靠边元素的和=%d\n\n",sum); return 0; }
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯