题目:一个二维数组由行和列组成,那么我们求出每行的最大值,然后合并成一个一维数组
#include<stdio.h>
int main()
{
int b[4] = {0};
int max1, max2, max3,max4;
int a[][3] = { 145,245,87,444,45,6,71,8777,9999,1035,181,142 };
printf("\n=======原二维数组=======\n");
for (int i = 0; i < 4; i++)
{
for (int j = 0; j < 3; j++)
{
printf("%d\t", a[i][j]);
}
printf("\n");
}
max1 = a[0][0];
for (int i = 0; i < 3; i++) {
if (max1 < a[0][i])
{
max1= a[0][i];
}
}
printf("\n第一行最大数为:%d", max1);
max2 = a[1][0];
for (int i = 0; i < 3; i++)
{
if (max2 < a[1][i])
{
max2 = a[1][i];
}
}
printf("\n第二行最大数为:%d", max2);
max3 = a[2][0];
for (int i = 0; i < 3; i++)
{
if (max3 < a[2][i])
{
max3 = a[2][i];
}
}
printf("\n第二行最大数为:%d", max3);
max4 = a[3][0];
for (int i = 0; i < 3; i++)
{
if (max3 < a[3][i])
{
max3 = a[3][i];
}
}
printf("\n第二行最大数为:%d", max4);
b[0] = max1;
b[1] = max2;
b[2] = max3;
b[3] = max4;
printf("\n新的一维数组:");
for (int i = 0; i < 4; i++)
printf("%d\t",b[i]);
return 0;
}
上面的代码由于太繁杂,不简洁,我又进行了一次改进,增加复用性
#include<stdio.h>
int main()
{
int b[4] = { 0 };
int a[][3] = { 145,245,87,444,45,6,71,8777,9999,1035,181,142 };
printf("\n=======原二维数组=======\n");
for (int i = 0; i < 4; i++)
{
for (int j = 0; j < 3; j++)
{
printf("%d\t", a[i][j]);
}
printf("\n");
}
for (int j = 0; j < 4;j++) {
b[j] = a[j][0];
for (int i = 0; i < 3; i++) {
if (b[j]< a[j][i])
{
b[j] = a[j][i];
}
}
}
printf("\n第一行最大数为:%d", b[0]);
printf("\n第一行最大数为:%d", b[1]);
printf("\n第一行最大数为:%d", b[2]);
printf("\n第一行最大数为:%d", b[3]);
printf("\n新的一维数组:");
for (int i = 0; i < 4; i++)
printf("%d\t", b[i]);
return 0;
}
笔记!!!