我是C++初学者,有以下问题
1.数组名、数组元素的区别是什么?归纳一维数组元素地址,元素值不同的表示形式。若有说明 int aa[3],*pa=aa;
请使用aa或pa,写出三个以上与aa[2]等价的表达式。
2.要把一维数组int a[n*n]的元素传送到二维数组int b[n][n]中,即在程序中要执行b[i][j]=a[k];写出k→ i,j的下标变换公式,并用程序验证。
3.有以下函数
void query()
{ int *p;
p=new int[3]
//…
delete []p;
p=new double[5];
//…
delete []p;
}
出现了编译错误。请分析错误原因,并把上述程序补充完整,验证判断。
4.有以下程序根据输入值,调用函数create建立并初始化动态数组,令a[i]=i。该程序运行后,主函数不能返回期望值。请分析程序错误原因并修改。
#include <iostream.h>
void create(int *,int)
void main()
{ int *a,len;
cin>>len;
create(a,len);
for (int i=0,i<len;i++)cout<<a[i]<<" ";
cout<<endl;
delete []a;
a=NULL;
}
void create(int *ap,int n)
{ ap=new int[n];
for(int i=0;i<n;i++)ap[i]=i;
}
1. 数组名和数组元素的区别在于 数组名是把所有数组元素集合在一起的一个单元 ,一个数组名里可以有好几个数组元素。 数组地址与数组值有下面几种 int aa[3], *pa=aa[3]; 其中aa[2]的地址有:aa+2 pa+2 &aa[2] 其中aa[2]的数组值的表示有 aa[2] pa[2] *pa(2) *aa(2)
2. 第二题程序是:
#include "stdio.h"
main()
{ int a[6],i,b[2][3],j,k=0;
for(i=0;i<6;i++)
scanf("%d",&a[i]);
for(i=0;i<6;i++)
printf("%d",a[i]);
printf("\n");
for(i=0;i<2;i++)
for(j=0;j<3;j++)
{
b[i][j]=a[k];
k++;
}
for(i=0;i<2;i++)
for(j=0;j<3;j++)
{printf("%d",b[i][j]);
if(j==2)
printf("\n");
}
}
3.
void query()
{ int *p;
double *q;
p=new int[3];
//…
delete []p;
q=new double[5];
//…
delete []q;
}
4.void create(int **,int); , main里面: create(&a,len);
void create(int **ap,int n)
{ *ap=new int[n];
for(int i=0;i<n;i++) *ap[i]=i;
}
1. aa[2], pa[2], (int)*(pa+2)
2. i=k/n; j=k%n; 或者反过来 i=k%n; j=k/n;
3.
void query()
{ int *p;
double *q;
p=new int[3];
//…
delete []p;
q=new double[5];
//…
delete []q;
}
4. void create(int **,int); , main里面: create(&a,len);
void create(int **ap,int n)
{ *ap=new int[n];
for(int i=0;i<n;i++) *ap[i]=i;
}