楼主您好!
建网站原本是网站策划师、网络程序员、网页设计师等,应用各种网络程序开发技术和网页设计技术配合操作的协同工作。成都创新互联公司专业提供成都网站制作、成都做网站,网页设计,网站制作(企业站、自适应网站建设、电商门户网站)等服务,从网站深度策划、搜索引擎友好度优化到用户体验的提升,我们力求做到极致!
vb的dim表示定义声明变量,可以定义变量的数据类型,语法如下:
Dim [变量名] As [数据内型]
比如:
Dim a As Double '定义双精度型变量
假如不加数据内型就默认为变体型,比如:
Dim a = Dim a As Variant
而C语言定义变量可以直接以数据内型+变量,来定义变量和数据内型,语法如下:
[数据内型] [变量名]
比如:
int a; /*定义整型变量*/
max里的叫形参,可以随便用哪个都一样的,大概你是新手,不知道什么是形参和实参吧~
形参与实参的区别:
高级语言在设计程序模块时,模块名定义后,紧跟其后所定义的参数(括弧内)被称为形参(也称虚参)。当该模块被调用时,在主调模块中,出现在被调用的模块名后的参数被称为实参。实参代替虚参的过程被称为虚、实结合,也称换参。多数高级语言的换参是由编译系统来完成,比如C语言和FORTRAN语言亦是如此。BASIC语言的换参则是由程序设计人员来完成的。如果只允许实参向虚参传递,则被称为“单向传递”,C语言的变量类虚、实结合即是“单向传递”。如果同时允许虚参向实参传递,这种传递被称为“双向传递”,FORTRAN 语言定义的子程序即是如此。 当C语言的形参为数组时,形参不另辟存储单元,形参与实参共用内存存储单元。这样,可以节省内存。 C语言在定义函数的同时,对于有参函数,也同时定义了形参。在调用该函数的同时,也指明了实参。实参与形参在内存分别占有两套不同的存储单元(数组除外),但是形参只有在函数被调用过程中才分配存储单元,调用结束后形参占用的单元被释放。数组元素作为实参时,也做为变量来处理。
1、max函数
用于求数组中的最大元素。暂时用到的语法形式有以下3种:
C = max(A);
C = max(A, B);
C = max(A, [], dim);
描述:
C = max(A)返回数组不同维度的最大元素。如果A是一个向量,max(A)返回向量A中的最大元素;如果A是一个矩阵,max(A)将矩阵A的每一列视为向量,最后返回一个行向量,这个行向量的每个元素是对应列向量的最大元素;如果A是一个多维数组,max(A)将第一个尺寸不为1的维度里的值视为向量,然后返回每个向量的最大值。
C = max(A, B)返回一个数组,该数组的尺寸与A和B相同,该数组的元素取自A和B中的最大值。A和B的维度必须要匹配,或者它们都是标量。
C = max(A, [], dim)根据指定标量dim返回矩阵A中的最大元素。比如dim=1,则返回行向量,其中每个元素都是对应列的最大元素;比如dim=2,则返回列向量,其中每个元素都是对应行的最大元素。
2、min函数
用于求数组中的最小值。暂时用到的语法形式有3种:
C = min(A);
C = min(A, B);
C = min(A, [], dim);
扩展资料:
C语言编写注意事项:
1、每个程序中一定包含main()函数, 尽管C语言中对函数命名没有限制。
2、printf函数永远不会自动换行,只能用\n来实现, 回车键进行的换行在编译中会出现错误信息。
3、在vs2008中编译,测试需要加 system("pause");来暂停dos自动退出导致的printf无法显示。
4、所有自定义变量 必须声明才能使用。
这里引用严奶奶著的数据结构:
以下讲数组映像函数的公式来源:
以下讲数组中数组初始化InitArray(...)的定义里,数组映像函数常量基址是如何建立的:
数组映像函数常量的基址constants作为一个指针,在InitArray函数中作为数组使用,指向每一个constants[i]。
constants[dim-1]就是多维数组中最后一维的元素加一或减一的大小(可以比喻为十进制数的个位数从4,加一变成5所移动的个数是5-4==1个)。
constants[dim-2]就是多维数组中倒数第二维的元素加一或减一的大小(可以比喻为十进制数的十位数从4,加一变成5所移动的个数是50-40==10个)。
constants[dim-2]就是多维数组中倒数第三维的元素加一或减一的大小(可以比喻为十进制数的百位数从4,加一变成5所移动的个数是500-400==100个)。
以此类推,直到最高维。
这些每次移动的个数,可以理解为基个数,百位数的基个数是100,十位数的基个数是10……。这些基个数可以理解为是 数组映像函数常量基址。
我这么理解。
完整的程序如下:
typedef int status;
#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0
#define MAXSIZE 10
#includestdarg.h
#includeiostream.h
#includestdlib.h
typedef int ElemType;
#define MAXDIM 8
typedef struct{
ElemType * base;
int dim;
int *bounds;
int *constants;
}Array;
status InitArray(Array A,int dim,...)
{va_list ap;
if(dim1||dimMAXDIM) return ERROR;
A.dim=dim;
int i;
int total=1;
A.bounds=(int *)malloc(dim*sizeof(int));
if(!A.bounds) return ERROR;
va_start(ap,dim);
for(i=0;idim;i++)
{A.bounds[i]=va_arg(ap,int);
if(A.bounds[i]0) return ERROR;
total*=A.bounds[i];
}
va_end(ap);
A.base=(ElemType*)malloc(total*sizeof(ElemType));
if(!A.base) return ERROR;
A.constants=(int *)malloc(dim*sizeof(int));
if(!A.constants) return ERROR;
A.constants[dim-1]=1;
for(i=dim-2;i=0;i--)
A.constants[i]=A.constants[i+1]*A.bounds[i+1];
return OK;
}
status DestoryArray(Array A)
{if(!A.base) return ERROR;
free(A.base);
if(!A.bounds) return ERROR;
free(A.bounds);
if(!A.constants) return ERROR;
free(A.constants);
A.dim=0;
return OK;
}
status Locate(Array A,int off,...)
{va_list ap;
va_start(ap,off);
off=0;
int ind;
int i;
for(i=0;iA.dim;i++)
{ind=va_arg(ap,int);
if(indA.bounds[i]||ind0) return ERROR;
off+=ind*A.constants[i];
}
va_end(ap);
return OK;
}
status Value(Array A,ElemType e,...)
{int off;
va_list ap;
va_start(ap,e);
Locate(A,off,ap);
e=A.base[off];
va_end(ap);
return OK;
}
status Assign(Array A,ElemType e,...)
{int off;
va_list ap;
va_start(ap,e);
Locate(A,off,ap);
A.base[off]=e;
va_end(ap);
return OK;
}
int main()
{Array A;
InitArray(A,2,2,5);
int i;
for(i=0;i10;i++)
{ cout"请输入数据"endl;
cinA.base[i];
}
ElemType e;
int off;
Locate(A,off,2,3);
cout"偏移是"offendl;
Value(A,e,2,4);
cout"第二行第四列是"eendl;
cine;
Assign(A,e,2,2);
Value(A,e,2,2);
cout"第二行第二列是"eendl;
DestoryArray(A);
return 0;
}
执行InitArray(A,2,2,5)后
A.bounds[0]=2, A.bounds[1]=5
A.constants[1]=1, A.constants[0]=5
并且为A.base分配了10个ElemType型的元素空间
PS:关键是搞懂省略号参数列表的用法