动态数组1,2,3维

    技术2022-05-20  41

    #include <stdlib.h>

    #include <stdio.h>

    //定义模块函数int jing();

    int dong1();

    int dong2();

    int dong3();

    void main(){

     int xuanze=0;

     puts("               ********请选择你要测试的类型********/n");

     puts("  1--静态数组   2--动态1维数组  3--动态2维数组  4--动态3维数组/n/n");

     scanf("%d",&xuanze); //输入选择的数字

     while (xuanze!=6) //设置当选择的数为6时程序退出 {  if (xuanze==1)  {   puts("/n");

       jing(); //调用静态数组

       puts("/n返回主菜单请输入5,退出请输入6:/n");  }

      if (xuanze==2)  {   puts("/n");

       dong1(); //调用动态1维数组

       puts("/n返回主菜单请输入5,退出请输入6:/n");  }

      if (xuanze==3)  {   puts("/n");

       dong2(); 调用动态2维数组

       puts("/n返回主菜单请输入5,退出请输入6:/n");  }

      if (xuanze==4)  {   puts("/n");

       dong3(); 调用动态3维数组

       puts("/n返回主菜单请输入5,退出请输入6:/n");  }

      if (xuanze==5)  {   puts("/n");

       puts("/n               ********请选择你要测试的类型********/n"); //返回主菜单

       puts("  1--静态数组   2--动态1维数组  3--动态2维数组  4--动态3维数组/n/n");  }   scanf("%d",&xuanze);

     } 

      }

    //静态数组函数int jing(){ int i,a[10],S=0;

     puts("请随意输入10个整数,下面求他们的和:/n");

     for (i=0;i<10;i++)

     {

      scanf("%d",&a[i]);

      S+=a[i]; //求出数组和

     }

     printf("/n%d/n",S);

     return 0;

    }

    //动态1维数组函数int dong1()

    {  int i,n1;  int *array;  puts("输入一维长度:");  scanf("%d",&n1);  array=(int*)malloc(n1*sizeof(int));//分配第一维动态数组  for(i=0;i<n1;i++)   {    array[i]=i+1;    printf("%d/t",array[i]);   }   free(array);//释放第一维指针   return 0; }

    //动态2维数组函数int dong2()

    {   int **array,i,j,n1,n2;  puts("输入一维长度:");  scanf("%d",&n1);  puts("输入二维长度:");  scanf("%d",&n2);

     puts(""); //换行  array=(int**)malloc(n1*sizeof(int*)); //分配第一维动态数组  for(i=0;i<n1; i++)   {    array[i]=(int*)malloc(n2* sizeof(int));//分配第二维动态数组    for(j=0;j<n2;j++)     {      array[i][j]=i+j+1;      printf("%d/t",array[i][j]);     }    puts("");   }   for(i=0;i<n1;i++)   {    free(array[i]);//释放第二维指针   }   free(array);//释放第一维指针  return 0; }

    //动态3维数组函数int dong3()

    {      int ***array,n1,n2,n3;     int i,j,k;     puts("输入一维长度:");     scanf("%d",&n1);     puts("输入二维长度:");     scanf("%d",&n2);     puts("输入三维长度:");     scanf("%d",&n3);

     puts("");     array=(int***)malloc(n1*sizeof(int**));//分配第一维动态数组      for(i=0; i<n1; i++)       {          array[i]=(int**)malloc(n2*sizeof(int*)); //分配第二维动态数组          for(j=0;j<n2;j++)           {               array[i][j]=(int*)malloc(n3*sizeof(int)); //分配第三维动态数组               for(k=0;k<n3;k++)                {                    array[i][j][k]=i+j+k+1;                    printf("%d/t",array[i][j][k]);                }               puts("");           }          puts("");      }      for(i=0;i<n1;i++)      {          for(j=0;j<n2;j++)           {               free(array[i][j]);//释放第三维指针           }      }      for(i=0;i<n1;i++)      {          free(array[i]);//释放第二维指针      }      free(array);//释放第一维指针     return 0; }


    最新回复(0)