33,311
社区成员
发帖
与我相关
我的任务
分享
#include <stdio.h>
int main()
{
unsigned int a=0,b=0;
printf("Introduzca 2 numero(entre 1 y ~,非数字退出) :");
while(scanf("%d %d",&a,&b))
{
int c[a][b][2];//此处不采用变长数组,而是采用指针,后面的内存申请怎么处理
for(int i=0;i<a;i++)
for(int j=0;j<b;j++)
{
c[i][j][0]=i;
c[i][j][1]=j;
}
for(int i=0;i<a;i++,printf("\n"))
for(int j=0;j<b;j++)
printf("[%d %d]",c[i][j][0],c[i][j][1]);
printf("Introduzca 2 numero(entre 1 y ~,非数字退出) :");
}
return 0;
}
#include <stdio.h>
void primatrix(int pa,int pb,int pc[pa][pb][2]);
void assmatrix(int aa,int ab,int ac[aa][ab][2]);
int main()
{
unsigned int a=0,b=0;
printf("Introduzca 2 numero(entre 1 y ~,非数字退出) :");
while(scanf("%d %d",&a,&b))
{
int c[a][b][2];
assmatrix(a,b,c[a][b][2]);
primatrix(a,b,c[a][b][2]);
printf("Introduzca 2 numero(entre 1 y ~,非数字退出) :");
}
return 0;
}
void primatrix(int pa,int pb,int pc[pa][pb][2])
{
for(int i=0;i<pa;i++,printf("\n"))
for(int j=0;j<pb;j++)
printf("[%d %d]",pc[i][j][0],pc[i][j][1]);
}
void assmatrix(int aa,int ab,int ac[aa][ab][2])
{
for(int i=0;i<aa;i++)
for(int j=0;j<ab;j++)
{
ac[i][j][0]=i;
ac[i][j][1]=j;
}
}
#include <stdio.h>
#include <stdlib.h>
int **newarr2d(int rows,int cols) {
int **p,i;
p=new int *[rows];
if (NULL==p) exit(1);
for (i=0;i<rows;i++) {
p[i]=new int[cols];
if (NULL==p[i]) exit(1);
}
return p;
}
void deletearr2d(int **p,int rows) {
int i;
for (i=0;i<rows;i++) {
delete[] p[i];
}
delete[] p;
}
int main() {
int **arr2d,i,j,r,c;
r=4;
c=5;
//在堆中开辟一个4×5的二维int数组
arr2d=newarr2d(r,c);
for (i=0;i<r;i++) {
for (j=0;j<c;j++) {
arr2d[i][j]=i*c+j;
}
}
for (i=0;i<r;i++) {
for (j=0;j<c;j++) {
printf(" %2d",arr2d[i][j]);
}
printf("\n");
}
deletearr2d(arr2d,r);
r=6;
c=3;
//在堆中开辟一个6×3的二维int数组
arr2d=newarr2d(r,c);
for (i=0;i<r;i++) {
for (j=0;j<c;j++) {
arr2d[i][j]=i*c+j;
}
}
for (i=0;i<r;i++) {
for (j=0;j<c;j++) {
printf(" %2d",arr2d[i][j]);
}
printf("\n");
}
deletearr2d(arr2d,r);
return 0;
}
// 0 1 2 3 4
// 5 6 7 8 9
// 10 11 12 13 14
// 15 16 17 18 19
// 0 1 2
// 3 4 5
// 6 7 8
// 9 10 11
// 12 13 14
// 15 16 17
//
//在堆中开辟一个2×3×4×5的4维int数组
#include <stdio.h>
#include <malloc.h>
int ****p;
int h,i,j,k;
void main() {
p=(int ****)malloc(2*sizeof(int ***));
if (NULL==p) return;
for (h=0;h<2;h++) {
p[h]=(int ***)malloc(3*sizeof(int **));
if (NULL==p[h]) return;
for (i=0;i<3;i++) {
p[h][i]=(int **)malloc(4*sizeof(int *));
if (NULL==p[h][i]) return;
for (j=0;j<4;j++) {
p[h][i][j]=(int *)malloc(5*sizeof(int));
if (NULL==p[h][i][j]) return;
}
}
}
for (h=0;h<2;h++) {
for (i=0;i<3;i++) {
for (j=0;j<4;j++) {
for (k=0;k<5;k++) {
p[h][i][j][k]=h*60+i*20+j*5+k;
}
}
}
}
for (h=0;h<2;h++) {
for (i=0;i<3;i++) {
for (j=0;j<4;j++) {
for (k=0;k<5;k++) {
printf(" %3d",p[h][i][j][k]);
}
printf("\n");
}
printf("--------------------\n");
}
printf("=======================\n");
}
for (h=0;h<2;h++) {
for (i=0;i<3;i++) {
for (j=0;j<4;j++) {
free(p[h][i][j]);
}
free(p[h][i]);
}
free(p[h]);
}
free(p);
}
// 0 1 2 3 4
// 5 6 7 8 9
// 10 11 12 13 14
// 15 16 17 18 19
//--------------------
// 20 21 22 23 24
// 25 26 27 28 29
// 30 31 32 33 34
// 35 36 37 38 39
//--------------------
// 40 41 42 43 44
// 45 46 47 48 49
// 50 51 52 53 54
// 55 56 57 58 59
//--------------------
//=======================
// 60 61 62 63 64
// 65 66 67 68 69
// 70 71 72 73 74
// 75 76 77 78 79
//--------------------
// 80 81 82 83 84
// 85 86 87 88 89
// 90 91 92 93 94
// 95 96 97 98 99
//--------------------
// 100 101 102 103 104
// 105 106 107 108 109
// 110 111 112 113 114
// 115 116 117 118 119
//--------------------
//=======================
//
// 增强版矩阵,采用指针完成
#include <stdio.h>
#include <stdlib.h>
#define COL 2
int main()
{
unsigned int a=0,b=0;
printf("Introduzca 2 numero(entre 1 y ~,非数字退出) :");
while(scanf("%u %u",&a,&b))
{
int ***p;//定义三级指针
p=(int ***)malloc(a*sizeof(int **));//为指针分配内存
for(int i=0;i<a;i++)
{ p[i]=(int **)malloc(b*sizeof(int *));
for(int j=0;j<b;j++)
p[i][j]=(int *)malloc(COL*sizeof(int));
} //为指针分配内存
for(int i=0;i<a;i++) //为矩阵赋值
for(int j=0;j<b;j++)
{
p[i][j][0]=i;
p[i][j][1]=j;
} //为矩阵赋值
for(int i=0;i<a;i++,printf("\n")) //输出矩阵
for(int j=0;j<b;j++)
printf("[%d %d]",p[i][j][0],p[i][j][1]);//输出矩阵
for(int i=0;i<a;i++) //释放内存
{for(int j=0;j<b;j++)
free(p[i][j]);
free(p[i]);
}
free(p); //释放内存
printf("Introduzca 2 numero(entre 1 y ~,非数字退出) :");
}
return 0;
}
/* 增强版矩阵,采用数组完成
#include <stdio.h>
int main()
{
unsigned int a=0,b=0;
printf("Introduzca 2 numero(entre 1 y ~,非数字退出) :");
while(scanf("%u %u",&a,&b))
{
int c[a][b][2];
for(int i=0;i<a;i++)
for(int j=0;j<b;j++)
{
c[i][j][0]=i;
c[i][j][1]=j;
}
for(int i=0;i<a;i++,printf("\n"))
for(int j=0;j<b;j++)
printf("[%d %d]",c[i][j][0],c[i][j][1]);
printf("Introduzca 2 numero(entre 1 y ~,非数字退出) :");
}
return 0;
}
*/
/* 增强版矩阵,采用函数及数组完成
#include <stdio.h>
void primatrix(int pa,int pb,int pc[pa][pb][2]);
void assmatrix(int aa,int ab,int ac[aa][ab][2]);
int main()
{
unsigned int a=0,b=0;
printf("Introduzca 2 numero(entre 1 y ~,非数字退出) :");
while(scanf("%u %u",&a,&b))
{
int c[a][b][2];
assmatrix(a,b,c);
primatrix(a,b,c);
printf("Introduzca 2 numero(entre 1 y ~,非数字退出) :");
}
return 0;
}
void primatrix(int pa,int pb,int pc[pa][pb][2])
{
for(int i=0;i<pa;i++,printf("\n"))
for(int j=0;j<pb;j++)
printf("[%d %d]",pc[i][j][0],pc[i][j][1]);
}
void assmatrix(int aa,int ab,int ac[aa][ab][2])
{
for(int i=0;i<aa;i++)
for(int j=0;j<ab;j++)
{
ac[i][j][0]=i;
ac[i][j][1]=j;
}
}
*/
/*简单的同纬度矩阵
#include <stdio.h>
void matrix(int a);
int main()
{
unsigned int a=0;
printf("Introduzca un numero(entre 1 y ~,非数字退出) :");
while(scanf("%u",&a))
{
matrix(a);
printf("Introduzca un numero(entre 1 y ~,非数字退出) :");
}
return 0;
}
void matrix(int a)
{
for(int i=0;i<a;i++,printf("\n"))
for(int j=0;j<a;j++)
printf("[%d %d]",i,j);
}
*/
#include <stdio.h>
void primatrix(int pa,int pb,int pc[pa][pb][2]);
void assmatrix(int aa,int ab,int ac[aa][ab][2]);
int main()
{
unsigned int a=0,b=0;
printf("Introduzca 2 numero(entre 1 y ~,非数字退出) :");
while(scanf("%d %d",&a,&b))
{
int c[a][b][2];
assmatrix(a,b,c);//之前参数传递形式错了,参数在声明和使用时是不一样的
primatrix(a,b,c);//同上
printf("Introduzca 2 numero(entre 1 y ~,非数字退出) :");
}
return 0;
}