C语言每日一练-Day1有一个3X4的矩阵,要求编程序求出其中值最大的呢个元素的值, 以及其所在的行号和列号。

 1.有一个3X4的矩阵,要求编程序求出其中值最大的呢个元素的值, 以及其所在的行号和列号。

/*有一个3X4的矩阵,要求编程序求出其中值最大的呢个元素的值,
以及其所在的行号和列号。*/
#include
int main(){
	int i,j ,row=0,colum=0,max;//初始化i,j,row,colum,max
	int a[3][4]={{1,2,3,4},{5,6,7,8},{10,-10,5,-5}};//初始化一个3X4的二维列表
	max=a[0][0];//先让a[0][0]成为"擂主",max存放最大值
	for(i=0;i<=2;i++){
		for(j=0;j<=3;j++){
			if(a[i][j]>max){
				max=a[i][j];
				row=i;
				colum=j;
			}
		}
	}//循环数组中每一个元素与“擂主”比较,大者存入max
	printf("max=%d\nrow=%d\ncolum=%d\n",max,row+1,colum+1);
	return 0;
}

 

 2.将一个二维数组行和列的元素互换,存到另一个二维数组中

/*将一个二维数组行和列的元素互换,存到另一个二维数组中*/
#include
int main(){
	int a[2][3]={{1,2,3},{4,5,6}};//初始化一个两行三列的二维数组
	int b[3][2],i,j;
	printf("array a:\n");
	for(i=0;i<=1;i++){
		for(j=0;j<=2;j++){
			printf("%5d",a[i][j]);
			b[j][i]=a[i][j];
		}//输出二维列表a(%5d是当整数字符少于5个时,其余用空格填充)
		 //将数组中的每一个数字所对应的行列互换b[j][i]=a[i][j]
		printf("\n");
	}
	printf("array b:\n");
	for(i=0;i<=2;i++){
		for(j=0;j<=1;j++){
			printf("%5d",b[i][j]);
		}
		printf("\n");
	}
	return 0;
	
}

3.有10个地区的面积,要求对他们按小到大的顺序排序

/*有10个地区的面积,要求对他们按小到大的顺序排序*/
#include
int main(){
	int a[10];//初始化一个一维数组(有10个数字)
	int i,j,t;
	printf("input 10 numbers :\n");
	for(i=0;i<10;i++){
		scanf("%d",&a[i]);
	}//循环,获取一维数组中的每一个数字
	printf("\n");
	for(i=0;i<9;i++){
		for(j=0;j<9-i;j++){
			if(a[j]>a[j+1]){
				t=a[j];a[j]=a[j+1];a[j+1]=t;
			}
		}
	}//i代表有i趟,j代表每一趟相邻数字比较n-j次
	 //j也可以代表一维数组中数的索引
	printf("the sorted numbers :\n");
	for(i=0;i<10;i++){
		printf("%d",a[i]);
	}//输出,将已经排序好的一维数组输出
	printf("\n");
	return 0;//注意,C语言{}所代表的层级要比缩进重要
}

总结:

1.for循环:

for(a:b:c){

        语句块

}

a:起始条件   b:判断循环的条件  c:循环体内语句块执行后执行的语句

!!!对于for循环的理解“对于一开始的a,当 b条件满足时,重复循环体,每一轮循环做完循环体内的语句后,执行 c语句”

tips:固定次数用for循环,例如阶乘或数组,其他用while循环,必须执行一次用do while循环

2.算法扩充--排序--起泡法:

核心思想:每次将相邻的两个数进行比较,较小的数掉到前面,如“9 8 6 10 2”,第一次将前面的8和9对调,第二次9和6对调,以此类推。--起泡法一般用于从小到大或从大到小排序如今天的第三题。

你可能感兴趣的:(c语言,矩阵,算法,青少年编程)