c语言编程!二维整形数组!
三阶矩阵(3行3列二维数组)测试
五阶矩阵(5行5列二维数组)测试
#include <stdio.h>
#include <stdlib.h>
void matrix_multi(int* m, int col, int mul)
{
int i, j;
for(i = 0; i < col; i++)
{
for(j = 0; j < i+1; j++)
{
m[i*col+j] = m[i*col+j] * mul;
}
}
}
int main(int argc, char *argv[])
{
int i,j;
int* m;
int col;
int mul;
printf("设定矩阵阶数(行数):");
scanf("%d", &col);
m = (int*)malloc((col*col) * sizeof(int));
for(i = 0; i < col; i++)
{
printf("输入矩阵第%d行(回车键结束):", i+1);
for(j = 0; j < col; j++){
scanf("%d", &m[i*col + j]);
}
}
printf("输入矩阵下三角乘数:");
scanf("%d", &mul);
printf("\n\t原始矩阵:\n");
for(i = 0; i < col; i++)
{
for(j = 0; j < col; j++){
printf("%-5d", m[i*col+j]);
}
printf("\n");
}
/* 调用矩阵下三角乘法函数 */
matrix_multi(m, col, mul);
printf("\n\t处理后的矩阵:\n");
for(i = 0; i < col; i++)
{
for(j = 0; j < col; j++){
printf("%-5d", m[i*col+j]);
}
printf("\n");
}
free(m);
return 0;
}
按黑字的要求,仅采用主函数实现功能的程序:
#include <stdio.h>
#define N 3
void main()
{
int i,j,a[N][N];
for(i=0;i<N;i++)
for(j=0;j<N;j++)
{
scanf("%d",&a[i][j]);
if(j<=i) a[i][j]*=N;
}
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
printf("%-3d",a[i][j]);
printf("\n");
}
}
按延伸扩展的要求,用函数实现功能的程序:
#include <stdio.h>
#define N 3
void change(int a[N][N])
{
int i,j;
for(i=0;i<N;i++)
for(j=0;j<N;j++)
if(j<=i)
a[i][j]*=N;
}
void main()
{
int i,j,a[N][N];
for(i=0;i<N;i++)
for(j=0;j<N;j++)
scanf("%d",&a[i][j]);
change(a);
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
printf("%-3d",a[i][j]);
printf("\n");
}
}
运行示例:
#include "stdio.h"
#include "stdlib.h"
#include "time.h"
#define N 5
int main(void){
int a[N][N],i,j;
srand((unsigned)time(NULL));
for(i=0;i<N;i++){
for(j=0;j<N;j++){
printf("%3d",a[i][j]=rand()%30);
if(j<=i) a[i][j]*=3;
}
printf("\n");
}
printf("\n");
for(i=0;i<N;i++){
for(j=0;j<N;printf("%3d",a[i][j++]));
printf("\n");
}
return 0;
}