永发信息网

关于C++的几个小问题

答案:2  悬赏:30  手机版
解决时间 2021-05-24 18:08
  • 提问者网友:我一贱你就笑
  • 2021-05-24 07:44

我是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;

}

最佳答案
  • 五星知识达人网友:零点过十分
  • 2021-05-24 09:16

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楼网友:独行浪子会拥风
  • 2021-05-24 10:28

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;

}

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯