C基础_数组

数组

1、数组的定义和使用

格式:
数据类型 数组名[元素个数]
元素个数,代表该数组有多少个相同数据类型的变量
下标:用来表示数组中的某一个元素,例如 int arr[10]; arr[1]代表数组的第二个元素
数组下标是从0开始的 到数组元素个数-1
数组下标越界:超出了数组元素个数的下标,如果操作越界数据会出现程序错误 1、乱码结果 2、报错

求出数组元素个数:

int (size_t) unsigned int 个数 = sizeof(数组名)/sizeof(数组元素 | 数组数据类型)

求出数组地址:

printf("%p\n",数组名)
printf("%p\n",数组元素)
数组元素+1 (sizeof(数据类型))
数组名+1(sizeof(数组名))

练习:十只小猪称体重 定义一个数组 存储小猪体重 通过遍历找到最重的小猪 找到数组中数据最大值的下标 根据下标打印数据
练习: 找到小猪中第二重的
练习:冒泡排序

int main08()
{

	int arr[10] = { 7,4,2,3,5,8,9,6,1,10 };
	int len = sizeof(arr) / sizeof(arr[0]) - 1;
	//冒泡排序   从小到大
	//外层循环每次执行都能确定一个最大值
	for (int i = 0; i < len; i++)
	{
		//内层循环内次执行能确定两个数值中的最大值
		for (int j = 0; j < len - i; j++)
		{
			if (arr[j] > arr[j + 1])
			{
				//两个数据交换位置
				int temp = arr[j];
				arr[j] = arr[j + 1];
				arr[j + 1] = temp;
			}
		}
	}
	for (int i = 0; i < 10; i++)
	{
		printf("%d\n", arr[i]);
	}

	system("pause");
	return EXIT_SUCCESS;
}

二维数组

格式:数据类型 数组名【行个数】【列个数】

初始化方式:
int arr[2][3] = { {1,2,3},{2,3,4} };
int arr[ ][3] = { {1,2,3},{2,3,4},{3,4,5} };
int arr[4][3] = { 1,2,3,4,5,6,7,8,9,10 }; //arr[3][1] arr[3][2]补0
int arr[4][3] = { {1},{1} ,{1} };
int arr[4][3] = { 1,2,3,4 };

求行数:sizeof(数组名)/sizeof(数组名[0]);
求列数:sizeof(数组名[0])/sizeoef(数组名[0][0])

二维数组首地址表示方式:
printf("%p\n",数组名);

练习:10名学生 三门成绩 scores【10】【3】 求出每名学生的总成绩和平均成绩 求出班级的语文 数学 英语的平均成绩
语数外 【0】【0】 【0】【1】 【0】【2】

字符数组和字符串:
字符数组和字符串区别在于是否有字符串结束标志

字符数组
//char arr[10] = { ‘H’,‘e’,‘l’,‘l’,‘o’ };
//char arr[] = { ‘H’,‘e’,’’,‘0’,‘o’ };
//char arr[] = “h\n\0e\nllo”;
char arr[100];
scanf("%[^\n]", arr);

   //%s会接收字符串结束标志【'\0'】之前的所有字符 在ASCII中就是数字0
   printf("%s", arr);
   //for (int i = 0; i < 10; i++)
   //{
   //     printf("%c", arr[i]);
   //}
   //printf("%d\n", sizeof(arr));

随机数:
1、添加头文件 time.h stdlib.h
2、添加随机数种子 srand((unsigend int )time(NULL));
3、生成随机数 rand() %

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值