回 帖 发 新 帖 刷新版面

主题:二维数组的传递错误   运行出错!!!

#include<stdio.h>
a(char** matrix,int m,int n,char *p){
    int i,j;
    for(i=0;i<m;++i)
        for(j=0;j<n;++j){
            *(*(matrix+i)+j)=*p;
            ++p;
        }
}
main()
{
    char p[12]="sdfsdkljfls";
    char b[4][5];
    int i,j;
    a((char**)b,4,5,p);
    for(i=0;i<4;++i)
        for(j=0;j<5;++j)
            printf("%c  ",b[i][j]);
}

回复列表 (共3个回复)

沙发

要问问题应该提供尽可能详细的信息,以方便别人帮你,也节省点别人的时间。

板凳

#include<stdio.h>
void a(char (* matrix)[5], int m, int n, char *p){//此处已改
    int i,j;
    for(i = 0; i < m; ++i)
        for(j = 0; j < n; ++j){
            *(*(matrix + i) + j) = *p;
            ++p;
        }
}
void main()
{
    char p[20] = "sdfsdkljfls";//此处已改
    char b[4][5];
    int i,j;
    a(b, 4, 5, p);//此处已改
    for(i = 0; i < 4; ++i)
        for(j = 0; j < 5; ++j)
            printf("%c",b[i][j]);
}

3 楼

#include<stdio.h>
#include<stdlib.h>
#define MAX 3   //可以做适当的改变
typedef int array[MAX][MAX];  //关键是这里

void sort(array a)
{
 int i, j, n, temp;

 for ( i = 0; i < MAX; i++)
 {
  for ( j = 0 ; j < MAX-1; j++)
   for ( n = j+1; n < MAX; n++)
   {
    if (a[i][n] < a[i][j])
    { 
     temp = a[i][n];
     a[i][n] = a[i][j];
     a[i][j] = temp;
    }
   }
    }

}

void Input(array a)
{
 int i, j;

 printf("请输入元素");
 for ( i = 0 ; i < MAX; i++)
 {
  for ( j = 0; j < MAX; j++)
  {
   scanf("%d",&a[i][j]);
  }
 }
 printf("\n");


}

void Output(const array a)
{
 int i, j;

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

int main(void)
{
 array a;

 Input(a);
 printf("排序前的元素为:\n");
 Output(a);
 sort(a);
 printf("排序后的元素为:\n");
 Output(a);

 system("pause");
 return 0;
}


我来回复

您尚未登录,请登录后再回复。点此登录或注册