给,已经编译运行确认:
#include"stdio.h"
#include"stdlib.h"
#include"time.h"
#include"conio.h"
void main()
{
int i,j,temp;
int x;
int lineCountNow=0,lineCountMax=0,maxlineNum=0;
int a[5][4]={0};
srand( (unsigned)time( NULL ) );
for(i=0;i<5;i++)
{
for(j=0;j<4;j++)
{
x=rand()%100; /*产生0到100的随机数*/
a[i][j]=x;
}
}
printf("生成的矩阵为: \n");
for(i=0;i<5;i++)
{
for(j=0;j<4;j++)
printf("%3d ",a[i][j]);
printf("\n");
}
for(i=0;i<5;i++)
{
for(j=0;j<4;j++)
lineCountNow+=a[i][j];
if(lineCountNow>lineCountMax)
{
lineCountMax=lineCountNow;
maxlineNum=i;
}
lineCountNow = 0;
}
for(j=0;j<4;j++)
{
temp = a[maxlineNum][j];
a[maxlineNum][j]=a[0][j];
a[0][j]=temp;
}
printf("\n第%d行的元素和最大。\n",maxlineNum);
printf("\n处理后的矩阵为: \n");
for(i=0;i<5;i++)
{
for(j=0;j<4;j++)
printf("%3d ",a[i][j]);
printf("\n");
}
getch();
}
运行示例:
生成的矩阵为:
26 70 6 65
70 59 32 45
91 92 94 81
69 86 2 32
55 45 54 69
第2行的元素和最大。
处理后的矩阵为:
91 92 94 81
70 59 32 45
26 70 6 65
69 86 2 32
55 45 54 69
#include
#include
#include
void init(int a[5][5]){/*初始化矩阵,为其赋值随机数*/
srand((unsigned int)time(NULL));
for(int i=0;i<5;i++){
a[i][4]=0;
for(int j=0;j<4;j++){
a[i][j]=rand()%99+1;
a[i][4]+=a[i][j];
}
}
}
void myprint(int a[5][5]){/*输出该矩阵*/
for(int i=0;i<5;i++){
for(int j=0;j<4;j++)
printf("%5d",a[i][j]);
printf("\n\n");
}
}
void change(int a[5][5]){/*交换操作*/
int sum=a[0][4],num=0;
int tem;
for(int i=1;i<5;i++){
if(sum num=i;
sum=a[i][4];
}
}
printf("经过计算,第%d行之和最大\n",num);
for(int j=0;j<4;j++){
tem=a[num][j];
a[num][j]=a[num-1][j];
a[num-1][j]=tem;
}
}
void main(){/*主函数进行调用各个自定义函数*/
int a[5][5];
printf("初始化后矩阵为:\n");
init(a);
myprint(a);
change(a);
printf("\n按规定进行交换操作后的矩阵为:\n");
myprint(a);
}
程序设计的比较简单,但是已经基本满足你的要求,希望对你有帮助。同时祝你的问题早日得到解决!呵呵
//当第一行元素最大时不进行交换
#include
#include
#include
int matrixchange()
{
int i,j,sum[5],temp[4],str[5][4],max=0,t;
srand(time(NULL));
for(i=0;i<5;i++)
{
sum[i]=0;
for(j=0;j<4;j++)
{
str[i][j]=rand()%100+1;
sum[i]+=str[i][j];
printf("%4d",str[i][j]);
}
if(sum[i]>max)
{
max=sum[i];
t=i;
}
printf("\n");
}
printf(" max=%d t=%d\n",max,t+1);
for(i=0;i<5;i++)
{
if(i==t-1)
for(j=0;j<4;j++)
{
temp[j]=str[i+1][j];
str[i+1][j]=str[i][j];
str[i][j]=temp[j];
}
}
for(i=0;i<5;i++)
{
for(j=0;j<4;j++)
printf("%4d",str[i][j]);
printf("\n");
}
return 0;
}
void main()
{
matrixchange();
}
#include "stdio.h"
void change(int num[5][4])
{
int *p[5],t,i,j,sum[5],max=0,flag=0;
for (i=0;i<5;i++)
{
sum[i]=0;
p[i]=num[i];
}
for (j=0;j<5;j++)
{
for (i=0;i<4;i++)
{
sum[j]+=*(p[j]+i);
}
printf("%4d\n",sum[j]);
}
for(i=0;i<5;i++)
{
if (sum[i]>=max)
{
max=sum[i];
flag=i;
}
}
printf("%4d%4d\n",max,flag);
if(flag!=0)
{
for (i=0;i<4;i++)
{
t=p[flag-1][i];
p[flag-1][i]=p[flag][i];
p[flag][i]=t;
}
}
}
void createMaxim(int num[5][4])
{
time_t t;
srand((unsigned)time(&t));
for(int i=0;i<5;i++)
{
for (int j=0;j<4;j++)
{
num[i][j]=rand()%100;
printf("%4d",num[i][j]);
}
printf("\n");
}
}
void main()
{
int num[5][4];
createMaxim(num);
change(num);
for(int i=0;i<5;i++)
{
for (int j=0;j<4;j++)
{
printf("%4d",num[i][j]);
}
printf("\n");
}
}