用C++语言编写一个程序,按照行优先顺序将输入的数据建成 4 维数组,再按照列优先顺序输出结果并储存在一维数组中,查询任意数据值所对应的一维数组中元素的序号。
时间: 2023-06-25 07:05:30 浏览: 77
以下是按照题目要求编写的C++程序:
```c++
#include <iostream>
using namespace std;
int main() {
int a, b, c, d; // 定义4维数组的大小
cout << "请输入4维数组的大小(以空格分隔):";
cin >> a >> b >> c >> d;
// 动态分配内存创建4维数组
int ****arr = new int***[a];
for(int i=0; i<a; i++) {
arr[i] = new int**[b];
for(int j=0; j<b; j++) {
arr[i][j] = new int*[c];
for(int k=0; k<c; k++) {
arr[i][j][k] = new int[d];
}
}
}
// 输入4维数组的值
cout << "请输入4维数组的值(以空格分隔):" << endl;
for(int i=0; i<a; i++) {
for(int j=0; j<b; j++) {
for(int k=0; k<c; k++) {
for(int l=0; l<d; l++) {
cin >> arr[i][j][k][l];
}
}
}
}
// 将4维数组按列优先顺序转换成1维数组
int size = a*b*c*d;
int *res = new int[size];
int index = 0;
for(int l=0; l<d; l++) {
for(int k=0; k<c; k++) {
for(int j=0; j<b; j++) {
for(int i=0; i<a; i++) {
res[index++] = arr[i][j][k][l];
}
}
}
}
// 输出1维数组
cout << "按列优先顺序输出的结果:" << endl;
for(int i=0; i<size; i++) {
cout << res[i] << " ";
}
cout << endl;
// 查询任意数据值所对应的一维数组中元素的序号
int num;
cout << "请输入要查询的数据值:";
cin >> num;
for(int i=0; i<size; i++) {
if(res[i] == num) {
cout << "数据值 " << num << " 对应的一维数组中元素的序号为:" << i << endl;
break;
}
if(i == size-1) {
cout << "未找到数据值 " << num << " 对应的一维数组中元素" << endl;
}
}
// 释放内存
for(int i=0; i<a; i++) {
for(int j=0; j<b; j++) {
for(int k=0; k<c; k++) {
delete [] arr[i][j][k];
}
delete [] arr[i][j];
}
delete [] arr[i];
}
delete [] arr;
delete [] res;
return 0;
}
```
程序运行示例:
```
请输入4维数组的大小(以空格分隔):2 3 4 5
请输入4维数组的值(以空格分隔):
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
按列优先顺序输出的结果:
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
请输入要查询的数据值:23
数据值 23 对应的一维数组中元素的序号为:22
```
阅读全文