1~4维数组的动态构建实例
来源:互联网 发布:淘宝卖家小二电话 编辑:程序博客网 时间:2024/05/21 18:49
1~4维数组的动态构建实例
一维
#include <stdio.h>
#include <stdlib.h>
int main()
{
int n1,i;
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;
}
二维
#include <stdlib.h>
#include <stdio.h>
int main()
{
int n1,n2;
int **array,i,j;
puts("输入一维长度:");
scanf("%d",&n1);
puts("输入二维长度:");
scanf("%d",&n2);
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;
}
三维
#include <stdlib.h>
#include <stdio.h>
int main()
{
int n1,n2,n3;
int ***array;
int i,j,k;
puts("输入一维长度:");
scanf("%d",&n1);
puts("输入二维长度:");
scanf("%d",&n2);
puts("输入三维长度:");
scanf("%d",&n3);
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;
}
四维
#include <stdlib.h>
#include <stdio.h>
int main()
{
int n1,n2,n3,n4;
int ****array;
int i,j,k,m;
puts("输入一维长度:");
scanf("%d",&n1);
puts("输入二维长度:");
scanf("%d",&n2);
puts("输入三维长度:");
scanf("%d",&n3);
puts("输入四维长度:");
scanf("%d",&n4);
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]=(int*)malloc(n4*sizeof(int));//第四维
for(m=0;m<n4;m++)
{
array[i][j][k][m]=i+j+k+m+1;
printf("%d/t",array[i][j][k][m]);
}
puts("");
}
puts("");
}
puts("");
}
for(i=0;i<n1;i++)
{
for(j=0;j<n2;j++)
{
for(k=0;k<n3;k++)
free(array[i][j][k]);//释放第四维指针
}
}
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;
}
动态扩充数组案例
#include <stdio.h>
#include <stdlib.h>
int main()
{
int*n,*p;
int i;
n=(int*)calloc(1,sizeof(int));
for(i=0;i<5000;i++)
{
n[i]=i+1;
printf("%d/t",n[i]);
p=(int*)realloc(n,(i+2)*sizeof(int));//动态扩充数组
if(p!=NULL)
n=p;
else
{
puts("error!");
return 0;
}
}
free(n);
return 0;
}
消字母游戏精简版中的应用
预备知识
(1)getch()
函数原型: int getch(void);
函数功能: 从控制台读取一个字符,但不显示在屏幕上。
函数返回: 读取的字符。
(2)rand()
函数原型: int rand(void);
函数功能: 随机函数, 产生0到32767间的随机整数(0到0x7fff之间)。
函数返回: 随机整数
所属文件: <stdlib.h>
(3)srand()
函数原型: void srand(unsigned seed);
函数功能: 该函数和rand随机函数配合使用,产生随机数的起始发生数据。
参数说明: seed为无符号整数。
所属文件: <stdlib.h>
(4)time()
函数原型: time_t time(time_t *timer)
函数功能: 得到机器的日历时间或者设置日历时间。
函数返回: 机器日历时间。
参数说明: timer=NULL时得到机器日历时间,timer=时间数值时,用于设置日历时间,
time_t是一个long类型。
所属文件: <time.h>
(5)'/b'实现退格,即当前光标后退一格。
(6)'/a'实现响铃,即执行时计算机会嘟一声。
(7)得到随机数值范围在a~b(包含b)的方法:rand()%(b-a+1)+a;
代码
#include <stdio.h>
#include <conio.h>//getch()函数所需头文件
#include <stdlib.h>//随机函数所需头文件
#include <time.h>//time()函数所需头文件
void clear(void)//此函数用以清除当前行
{
printf("/r /r");
}
void start(void)
{
puts("这是消单词游戏的精简版,还不会图像编程的人可以看一看");
puts(" 由于没有引人数据库,所以此单词是模拟的。");
puts("按任意键开始,按Esc键结束,按tab键重新开始:");
puts(" 一旦输错,将发出声音警告,你必须重新输入。");
puts(" 按任意键开始,按Esc键结束:");
getch();
}
int main()
{
char*c_rand,*c_input;
int i,j,N,n,space,N_rand;
start();
printf("/r你想消最多由多少个字母组成的单词?(输入数字(1-9)");
n=getch();
N=n-'0';//将输入的字符转换为整型数字
clear();//清除当前行
if(!((N>=1&&N<=9)||n==27))//27是键Esc的ASII值
{
printf("/r范围错误,请重新开始:");
getch();
exit(1);//异常退出
}
if(n==27)
return 0;
srand(time(NULL));//用来对随机函数初始化
c_rand=(char*)malloc(N+1);
c_input=(char*)malloc(N+1);
while(1)
{
N_rand=rand()%N+1;//实现单词长度随机定义
for(i=0;i<N_rand;i++)
{
c_rand[i]=(rand() ==0)?(rand()&+'A'):(rand()&+'a');//随机取个字母
}
c_rand[N_rand]='/0';
//下面四行代码实现单词位置随机出现
space=rand()P;
putchar('/r');
for(i=0;i<space;i++)
putchar(' ');
printf("%s",c_rand);
for(i=0;i<N_rand;i++)
{
c_input[i]=getch();//用户输入
if(c_input[i]=='/x1b')//"/x1b"代表的是Esc键
break;
//下面五行代码实现字母消失效果
putchar('/r');
for(j=0;j<space;j++)
putchar(' ');
for(j=0;j<=i;j++)
putchar(' ');
if(c_input[i]!=c_rand[i])
{
i=-1;
putchar('/a');
//下面四行代码代码字母重现效果
putchar('/r');
for(j=0;j<space;j++)
putchar(' ');
printf("%s",c_rand);
}
}
if(c_input[i]=='/x1b')//"/x1b"代表的是Esc键
break;
}
free(c_rand);
free(c_input);
return 0;
}
- 1~4维数组的动态构建实例
- 动态数组的构建
- 测试动态数组堆栈的实例
- 动态数组(栈)的实现实例
- C# 中 动态数组的实例
- Excel VBA真正的动态数组实例
- excel vba真正的动态数组实例
- js构建动态对象数组
- JavaScript 动态数组 实例
- C++动态生成一维数组和二维数组实例
- 4种构建流的方式实例
- C语言中动态数组的构造实例
- java中动态数组Vector的使用实例
- java中动态数组Vector的使用实例
- c++动态数组模板实例
- 不规则数组的构建
- Delphi 4 的动态数组
- Delphi 的动态数组1
- 自动投票系统【二】模拟登录提交
- Flash开发文件命名规范
- [MFC]Crypto API 实现 AES 加解密
- Windows 7 关闭系统保护
- Foxit Editor的使用
- 1~4维数组的动态构建实例
- AOP Proxy
- 自动投票系统【三】验证码识别
- TFS2010配置Build服务(多机)
- C++Builder中MessageBox的基本用法
- TFS Build 2010中调用外部程序的示例
- 没事就看的资料-----没事就更新
- 关于android多任务同时下载的一点心得
- XML 报表3