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