动态数组1,2,3维

#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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值