动手学C语言--数组简单介绍


数据类型相同;有序存储(内存指针操作);

特点

数组大小必须是常量,不能是变量;
下标从0-length-1;

一维数组的定义

int age[6];
在计算机内存中顺序存储;
int age[6] ={1,2,3,4,5,6};
小知识点:static int age[6]; auto int age[6];
二维数组—类比列表;
三维数组—类比页表;或者类比 长方体
// 将二维数组存放的3*3矩阵,转置存放;
// 二维数组存放的矩阵进行转置

#include "stdio.h"

#define N 3

void main(){
	int array[N][N]={{1,2,3},{4,5,6},{7,8,9}};
	//打印矩阵
	int brray[N][N];
	int i,j;

	printf("the previous array is: \n");
	for(i=0;i<N;i++){
		for(j=0;j<N;j++){
			
			printf(" %-3d ",array[i][j]);
			brray[j][i]=array[i][j];
		
		}

		printf("\n");
	
	}
	// 打印转置后的矩阵
	printf("the next array is: \n");
	for(i=0;i<N;i++){
		for(j=0;j<N;j++){	
			printf(" %-3d ",brray[i][j]);	
		}
		printf("\n");
	}

}

二维数组的定义及使用

int a[3][2] ={{1,2},{3,4},{5,6}};
// 求3*4矩阵中最小值元素
// 求出矩阵中元素最小的值,并给出对应的行和列

#include"stdio.h"

void main(){
	int array[3][4]={{1,2,3,4},{-1,-4,-2,-5},{-3,4,2,7}};
	int i,j;
	int min = array[0][0];
	int row=0,col=0;
	
	// 遍历数组中的每一个元素
	for(i=0;i<3;i++){
		for(j=0;j<4;j++){
			if(min>array[i][j]){
				min=array[i][j];
				row=i;
				col=j;
			}
		}
	}
	
	// 打印输出
	printf("the Min is %d\n",min);
	printf("the row is %d,and the col is %d \n",row,col);


}
// 寻求鞍点; 所在行中最小,所在列中最大;

// 求数组中的鞍点:即在数组中所在行为最小值,且在该列中为最大值
#include "stdio.h"

void main(){
	int i,j;
	int k;        // 作为遍历该列的每一行
	int max,min;
	int row,col;
	int flag=0;
	
	int array[4][5]={{5,9,1,0,2},{8,9,3,2,0},{8,9,7,6,9},{9,3,5,4,2}};

	// 先寻找每行的最大值然后在该列进行比较是否为最小值
	for(i=0;i<4;i++){
		max=array[i][0]; // 先设每行为最大值

		for(j=0;j<5;j++){
			if(array[i][j]>=max){
				row =i;
				col =j;
			}

		}

		min=array[row][col];

		
		for(k=0;k<4;k++){
			if(array[k][col]<min){
				break;
			}
		}

		if(k==4){
			flag=1;
			printf("the num is %d  ,the row is %d,the col is %d \n",min,row,col);
		}
		

	}

	if(flag==0){
			
		printf("the num has no dian \n");
	}
}

三维数组的定义与应用

// 定义一个三维数组,对每个元素赋值,顺序输出所有元素值
利用三个for嵌套内循环

字符数组与字符串操作

字符数组中每个数组元素只能存放一个ASC 字符值;
最后要至少留一个“\0”表示结束,数组元素足够大;
例如:
char str[]={“THANK YOU”};

常用字符串函数

头文件: #include <string.h>
puts()函数;
char str[]=“THANK YOU”;
puts(str);

gets()函数
char str[10];
puts(str);

strcat()函数:字符串连接函数
char str1[] = “THANK”;
cahr str2[] = “YOU”;
strcat(str1,str2);

还有很多很多字符串函数;用到的时候具体去查;
##字符数组应用案列

// 打印菱形

#include "stdio.h"
#include "string.h"

void mian(){
	int i,j,k;  // 循环变量使用

	char str[]="*****";
	char space=' ';

	// 控制输出格式
	for(i=0;i<strlen(str);i++){
		// 控制输出空格
		for(j=1;j<=3*i;j++){
			printf("%c",space);
		
		}

		for(k=0;k<strlen(str);k++){
			printf("%3c",str[k]);
		}
		printf("\n");
	}
	

}

小结

既然选择了,就无怨无悔,风雨无阻,星夜坚持,我相信我能

发布了39 篇原创文章 · 获赞 3 · 访问量 2522

猜你喜欢

转载自blog.csdn.net/li_kin/article/details/104694142