完整代码为:
当前二维数组举例为:
#include<iostream>
using namespace std;
int f(int n){ //判断所要拼接数的位数,因为是要拼接还要再乘十X10
int i,t=1;
for(i=0;n>0;i++,t*=10)
{
n/=10;
}
return t; //返回进位整数,t=10的位数次方
}
void fun(int (*p)[4],int n) //拼接函数
{
int i,j;
for(i=0;i<n;i++)
for(j=0;j<3;j++){
p[i][3]=p[i][3]*f(p[i][j])+p[i][j]; //将每行的前3个元素依次拼接到第4列
}
}
void show(int p[][4],int n) //输出二维数组的函数
{
int i,j;
for(i=0;i<n;i++){
for(j=0;j<4;j++)
cout<<*(*(p+i)+j)<<'\t';
cout<<'\n';
}
}
int main(){
int a[3][4]={{12,123,1123,0},{2,234,1234,0},{3,345,12345,0}};
cout<<"二维数组为:\n";
show(a,3); //输出原来的数组
fun(a,3);
cout<<"将每行第4列元素存储为前3个元素依次拼接成的一个整数,之后的数组为:\n";
show(a,3); //输出变换后的数组
return 0;
}
其中输出函数 void show(int p[][4],int n)
void show(int p[][4],int n) //输出二维数组的函数
{
int i,j;
for(i=0;i<n;i++){
for(j=0;j<4;j++)
cout<<*(*(p+i)+j)<<'\t';
cout<<'\n';
}
}
判断位数的函数 int f(int n),返回进位整数
int f(int n){ //判断所要拼接数的位数,因为是要拼接还要再乘十X10
int i,t=1;
for(i=0;n>0;i++,t*=10)
{
n/=10;
}
return t; //返回进位整数
}
拼接函数 void fun(int (*p)[4],int n)
参考:c++编写函数,输出二维数组中元素所对应的位数https://blog.csdn.net/Patrickzc/article/details/121726773?spm=1001.2014.3001.5501https://blog.csdn.net/Patrickzc/article/details/121726773?spm=1001.2014.3001.5501只需要将链接里的fun函数的输出语句改为算法计算即可
void fun(int (*p)[4],int n) //拼接函数
{
int i,j;
for(i=0;i<n;i++)
for(j=0;j<3;j++){
p[i][3]=p[i][3]*f(p[i][j])+p[i][j]; //将每行的前3个元素依次拼接到第4列
}
}