题目:编程,调用随机函数,为5*4阶矩阵置100以内的整数,输出该矩阵,求出矩阵每行元素之和,并把和值最大的那一行与第一行上的元素对调。
提示:
调用随机函数的方法,若已定义x为int类型#include<stdlib.h>
:
...
x=rand()%100;/*产生0--99的随机数*/
代码:
#include <stdio.h>
#include <stdlib.h>
void rand1(int *p)
{
int i,j;
for(i=0;i<5;i++)
for(j=0;j<4;j++,p++)//指针是数组的第一个元素,遍历i*j次,每次赋值完让p指向下一个元素
*p=rand()%100;//产生0~99的随机数
}
void exchange(int a[5][4])
{
int i,j,max=0,temp,b[5]={0};
for(i=0;i<5;i++)
for(j=0;j<4;j++)
b[i]+=a[i][j];//新的数组存放每一行的和
for(i=1;i<5;i++)
if(b[max]<b[i])//b[0]当成max,和下一位比较,if成立max就是下一位的值,不成立就是他本身
max=i;//找和最大的行数
for(j=0;j<4;j++)
{
temp=a[0][j];
a[0][j]=a[max][j];
a[max][j]=temp;
}//交换
}
int main()
{
int i,j,a[5][4];
system("cls");//清屏
rand1(a);
printf("**** The origient Matrix ****\n");//原始矩阵
for(i=0;i<5;i++)
{
for(j=0;j<4;j++)
printf("%5d",a[i][j]);
printf("\n");
}
exchange(a);
printf("**** The exchange Matrix ****\n");//交换后的矩阵
for(i=0;i<5;i++)
{
for(j=0;j<4;j++)
printf("%5d",a[i][j]);
printf("\n");
}
return 0;
}
运行结果: