C语言---一维数组、二维数组:基本用法、初始化案例;冒泡排序法、简单排序法。

C语言---一维数组、二维数组:基本用法、初始化案例;冒泡排序法、简单排序法。

1.数组的引用,及基本用法

#include<stdio.h>
/*
	数组的引用,及基本用法
*/
int main(){

	int a[10];//数组的空间大小;
	int data;//定义一个变量;
	
	for(data=0;data<10;data++){
		a[data] = data+2023;
	}
	
	puts{"数组初始化完毕"};
	
	for(data=0;data<10;data++){
		printf("%d",a[data]);
	}
	puts("done");
	return 0;
}

2.数组计算大小和各种初始化

#include<stdio.h>
/*
	数组计算大小和各种初始化
*/
int main(){
	
	int data;
	int array[]={11,20,30,55,85,66};
	int size;
	
	//把整个数组的大小,除以数组中的一个元素的大小,就可以获得总个数
	size = sizeof(array)/sizeof(array[0]); //sizeof是一个关键字,能计算对应括号内数据的内存空间大小
	printf("array的个数有:%d\n",size);
	for(data=0;data<size;data++){
		printf("address:%p, data:%d\n",&array[data],array[data]);
	}
	return 0;
	
}

3.对十个数组元素依次赋值为:0,1,2,3,4,5,6,7,8,9;要求按顺序和逆序输出。

#include<stdio.h>
/*
	对十个数组元素依次赋值为:0,1,2,3,4,5,6,7,8,9;要求按顺序和逆序输出
*/
int main(){
	int arr[10];
	int i;
	
	for(i=0;i<10;i++){
		printf("顺序输出为:%d\n",arr[i]);
	}
	
	for(i=9;i>=0;i--){
		printf("逆序输出为:%d\n",arr[i]);
		
	}
	return 0;
}

4.利用冒泡排序法,对一维数组的数据进行排序
    要求:从大到小、从小到大

#include<stdio.h>
/*
	利用冒泡排序法,对一维数组的数据进行排序
	要求:从大到小、从小到大
*/
int main(){
	int array[] = {1,5,3,7,9,0,6,4,2,8,0,0};
	int i;
	int j;
	int tamp;
	int len = sizeof(array)/sizeof(array[0]); //进行for循环之前,先把它计算好,这样可以提高计算效率;
	
	for(i=0;i<len-1;i++){
		for(j=0;j<len-1-i;j++){
			
			if(array[j]>array[j+1]){	// if(array[j]<array[j+1])  从小到大排序的写法;
			tamp = array[j];
			array[i] = array[j+1];      /*利用tamp作为第三方桥梁,进行数据对比大小,然后进行排序*/
			array[j+1] = tamp;
			}
		}
	}
	
	for(i=0;i<len;i++){
		printf("%d ",array[i]);
	}
	
	return 0;
}

5.利用简单排序法,对数组进行排序。
    对于题目的要求,可以先画个草图进行分析,接着再写逻辑原理。

#include<stdio.h>
/*
	利用简单排序法,对数组进行排序。
	对于题目的要求,可以先画个草图进行分析,接着再写逻辑原理
*/
int main(){
	int arr[] = {11,63,56,21,51,00,820,33};
	int i;
	int j;
	int tamp;
	int len = sizeof(arr)/sizeof(arr[0]);
	
	//利用简单选择排序法,对数组进行排序;从大到小、从小到大
	for(i=0;i<len-1;i++){
		for(j=i+1;j<len;j++)
			//从大到小排序
			if(arr[i] < arr[j]){  //从小到大的写法:if(arr[i] > arr[j])
				tamp = arr[i];
				arr[i] = arr[j];
				arr[j] = tamp;
		}
	}
	//显示题目要求的效果
	for(i=0;i<len;i++){
		printf("%d ",arr[i]);
	}
	return 0;
}

6.二维数组基本用法

#include<stdio.h>
/*
	二维数组基本用法
*/
int main(){
	int arr[2] = {1,2};//这是一维数组
	int arr[2][3] = {{111,222,333},{444,555,666}};//这是二维数组
	int arr2[2][3] = {1,2,3,4,5,6};//这是二维数组的另一种写法
	
	int i,j;//定义两个变量
	for(i=0;i<2;i++){
		for(j=0;j<3;j++){
			printf("%d %p\n",arr[2][3],&arr[2][3]); //arr数组取值,&取地址
			printf("%d %p\n",arr2[2][3],&arr2[2][3]);//arr2数组取值,&取地址
		}
		putchar('\n');//换行显示,注意用的是:'英文单引号'
	}
	return 0;
}

7.二维数组初始化:(注意可以不写行,但是不能不写列)
    它的作用是只对各行的第1列的元素赋初值,其余元素自动为0。
    案例一 ;例如:int[3][4]={{1},{2},{3}};
    赋初值后的元素显示效果:
    1 0 0 0
    2 0 0 0
    3 0 0 0

#include<stdio.h>
/*
	二维数组初始化:(注意可以不写行,但是不能不写列)
	它的作用是只对各行的第1列的元素赋初值,其余元素自动为0。
	案例一 ;例如:int[3][4]={{1},{2},{3}};
	赋初值后的元素显示效果:
	1 0 0 0
	2 0 0 0
	3 0 0 0
*/
int main(){
	int i,j;//定义两个变量	
	int[3][4]={{1},{2},{3}};
	for(i=0;i<3;i++){
		for(j=0;j<4;j++){
			printf("%d ",arr[3][4]); //arr数组取值
		}
		putchar('\n');//换行显示,注意用的是:'英文单引号'
	}
	return 0;
}

8.案例2:二维数组中找出最大值,并说明它在第几行第几列;
    意思就是:找出最大值以及下标

#include<stdio.h>
/*
	案例2:二维数组中找出最大值,并说明它在第几行第几列;
	意思就是:找出最大值以及下标
*/
int main(){
	int arr[3][4] = {11,45,26,91,120,630,520,554,21,511,996,23};
	int hang,lie;
	int i,j;
	int max;
	
	for(i=0;i<3;i++){
		for(j=0;j<3;j++){
			printf("%d \t",arr[i][j]); // \t
		}
		printf("\n");
	}
	max = arr[0][0];//数值最大的那个数,先记录第一个数值最大的数在纸上
	for(i=0;i<3;i++){
		for(j=0;j<4;j++){
			if(max < arr[i][j]){ //如果纸上记录的数小于当前的数,则重新写入.
				max = arr[i][j];
				hang = i;
				lie = j;
			}
		}
	}	
	printf("其中在第%d行第%d列的数%d最大\n",hang+1,lie+1,max);
	return 0;
}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值