数组-矩阵

数组-二维数组生成

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define max 250

//动态分配数组空间 
int **getarry(int row,int col){
	int **arr;
	arr = (int **)malloc(row * sizeof(int *));
	for(int i=0;i<row;i++)
		arr[i] = (int *)malloc(col * sizeof(int));
	srand((unsigned)time(NULL));
	return arr;
}

//数组赋值
int getdata(int **arr,int row,int col){
	for(int i=0;i<row;i++){
		for(int j=0;j<col;j++)
			arr[i][j] = rand() % 10 + 1; //随机赋值 
	}
	return 0;
}


//数组打印 
void Print(int **arr,int row,int col){
	printf("生成的是 %dX%d 的矩阵\n",row,col);
	for(int i=0;i<row;i++){
		for(int j=0;j<col;j++)
			printf("%3d",arr[i][j]);
		printf("\n");
	}	
}

//数组销毁
void Free(int **arr,int row){
	for(int i=0;i<row;i++)
		free(arr[i]);
	free(arr);
}

int main(){
	int row;
	int col;
	int data[max];
	
	printf("请输入行row:");
	scanf("%d",&row);
	printf("请输入列col:");
	scanf("%d",&col);
	int **arr = getarry(row,col); 
	
	getdata(arr,row,col);
	
	Print(arr,row,col);
	
	Free(arr,3);
	
} 

### 数组-矩阵运用

对称矩阵–【是否可生成判断版】

#include<stdio.h>
#include<stdlib.h>
#define max 250

//判断是否能形成对称矩阵
int judge(char a[],int n){
	int a_len = 0;
	int i = 0;
	while(a[i]){
		a_len ++;
		i++;
	}
	if(a_len == (n * (1+n) / 2)) return 1;
	else return 0;
} 

//输出对称矩阵
void display(char a[],int n){
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			if(j<=i) printf("%5d",a[i * (i-1) / 2 + j-1]); //下三角输出
			if(j>i) printf("%5d",a[j * (j-1) / 2 + i-1]);  //上三角输出
		}
		printf("\n");
		printf("\n");
	}
} 

int main(){
	char a[max];
	int n; //阶数
	printf("请输入对称矩阵元素:"); 
	scanf("%s",&a);
	printf("请输入对称矩阵阶数:");
	scanf("%d",&n);
	if(judge(a,n)) display(a,n);
	else printf("无法生成!\n");
	
	return 0;
} 

对称矩阵–[不足填 ‘0’版]

#include<stdio.h>
#include<stdlib.h>
#define max 250

//对称矩阵 
//判断-改
void judge(char a[],int n){
	int a_len = 0;
	int i = 0;
	while(a[i]){
		a_len ++;
		i++;
	}
	int pos = a_len;
	if(a_len < (n * (1+n) / 2)){
		for(int j=0; j<(n * (1+n) / 2)-a_len;j++){
			a[pos] = '@';
			pos ++;
		}
	}
} 

//输出对称矩阵
void display(char a[],int n){
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			if(j<=i) printf("%5c",a[i * (i-1) / 2 + j-1]);
			if(j>i) printf("%5c",a[j * (j-1) / 2 + i-1]);
		}
		printf("\n");
		printf("\n");
	}
} 

int main(){
	char a[max];
	int n;
	printf("请输入对称矩阵元素:"); 
	scanf("%s",&a);
	printf("请输入对称矩阵阶数:");
	scanf("%d",&n);
	judge(a,n);
	display(a,n);
	
	return 0;
} 

下三角矩阵

#include<stdio.h>
#include<stdlib.h>
#define max 250

//判断字符是否足够生成矩阵 
void judge(char a[],int n){
	int a_len = 0;
	int i = 0;
	while(a[i]){
		a_len ++;
		i++;
	}
	int pos = a_len;
	if(a_len <= (n * (1+n) / 2)){
		for(int j=0; j<(n * (1+n) / 2)-a_len+1;j++){
			a[pos] = '@'; //字符填充 
			pos ++;
		}
	}
} 

//输出下三角矩阵
void display(char a[],int n){
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			if(j<=i) printf("%5c",a[i * (i-1) / 2 + j-1]);
			if(j>i) printf("%5c",a[n*(n+1)/2]);
		}
		printf("\n");
		printf("\n");
	}
} 

int main(){
	char a[max];
	char b;
	int n;
	printf("请输入下三角矩阵元素:"); 
	scanf("%s",&a);
	printf("请输入下三角矩阵阶数:");
	scanf("%d",&n);
	judge(a,n);
	display(a,n);
	
	return 0;
} 

猜你喜欢

转载自blog.csdn.net/qq_46635165/article/details/117686566
今日推荐