修改后的结果:
#include<stdio.h>
#include<stdlib.h>
/** 初始化数组的值 */
void fill_array(int *array, int row, int col) {
for (int i=0; i< row * col; i++) {
array[i] = rand()%100;
}
}
/** 打印数组阵列 */
void print_array(int *array, int row, int col) {
for (int i=0; i< row * col; i++) {
printf("%4d", array[i]);
if (i % col == (col-1)) {
printf("\n");
}
}
}
int main(int argc, const char * argv[]) {
int array[5][6],i,j,col_min;
int min[6];
fill_array(array, 5, 6);
//求出每列最小数
for(j=0; j<6; j++) {
col_min = array[0][j]; // 初始化当前列的最小值,取第一个元素
for(i=1; i<5; i++) { // 遍历列的值,从第二个元素开始
if(array[i][j] < col_min) { // 列中的每个元素都与当前的列的最小值比较
col_min = array[i][j]; // 更新列的最小值
}
}
min[j] = col_min; // 记录列的最小值
}
printf("原数组为以下\n"); // 打印输出可以提取出一个函数
print_array(array, 5, 6);
printf("该二维数组的每一列中本列的最小数为:\n");// 打印输出可以提取出一个函数
print_array(min, 1, 6);
return 0;
}
注意:
先把你写的错误代码贴上来,我们再帮你修改。
不要让别人替你完成作业,代码谁都会写,只是写正确了、写优秀了很难。
你要先把没有语法错误的代码写出来,然后再说能否得到正确结果的事情。
不写代码,啥都不是。
#include<stdio.h>
#include<stdlib.h>
int main(int argc, const char * argv[]) {
int a[5][6],i,j,x,t,mix;
int b[6];
mix=0;
unsigned int seed; // 该变量未使用,应删除。
for(i=0;i<5;i++) // 初始化二维数组,可以提取出一个函数进行。
for(j=0;j<6;j++)
{
x=rand()%100;
a[i][j]=x;
}
for(j=0;j<6;j++) //求出每列最小数
{
for(i=0;i<4;i++)
{
if(a[i][j]<a[i+1][j]) // 比较条件有问题,前一个比后一个小就取前一个,这是前后比较。
mix=a[i][j]; // 应该是所有的列元素与当前最小的值比较才能求出列的最小值。
else
mix=a[i+1][j];
t=mix; // 变量 t 的用途不明确,没有实际用处。
}
b[j]=mix;
}
printf("原数组为以下\n"); // 打印输出可以提取出一个函数
for(i=0;i<5;i++)
{
for(j=0;j<6;j++)
printf("%4d",a[i][j]);
printf("\n");
}
printf("该二维数组的每一列中本列的最小数为:\n");// 打印输出可以提取出一个函数
for(j=0;j<6;j++)
printf("%4d",b[j]);
return 0;
}