C语言作业,明天要交了……做得不对……5555555帮帮吧……

来源:百度知道 编辑:UC知道 时间:2024/05/30 23:09:13
#include<stdlib.h>
#include<time.h>
#define M 5
#define N 6
main()
{ int i,j,min1,min2,m,n; int a[M][N];
rand();
for(i=0;i<5;i++)
{printf("\n");
for(j=0;j<6;j++)
printf("%-6d ",a[i][j]=rand()); }
min1=a[0][0];
for(i=0;i<5;i++)
{for(j=0;j<6;j++)

if(min1>a[i][j]) {min1=a[i][j];
m=i;n=j;}
printf("\n%d,%d,%d ",min1,m,n);}}

目标是输出一个5列6行的随机数组,输出每行最小的数,前四行都对了,但是最后一行不对……为什么啊……5555555……帮帮我吧……

输出的时候,最后一行和倒数第二行输出的是一样的数,难道没有执行???

你的代码里,min1这个值在每次进行一个新行的最小值查找前没有初始化,
导致上次(也就是上一行)的查找结果参与了新行的比较

这么改:
#include<stdlib.h>
#include<time.h>
#define M 5
#define N 6
main()
{ int i,j,min1,min2,m,n; int a[M][N];
rand();
for(i=0;i<5;i++)
{printf("\n");
for(j=0;j<6;j++)
printf("%-6d ",a[i][j]=rand()); }
min1=a[0][0];
for(i=0;i<5;i++)
{
min1=a[i][0];//min1这个值在每次进行一个新行的最小值查找前进行初始化
for(j=0;j<6;j++)

if(min1>a[i][j]) {min1=a[i][j];
m=i;n=j;}
printf("\n%d,%d,%d ",min1,m,n);}}