#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;
}