定义:同种数据类型的集合,一片连续的内存空间
一般形式:
存储类型 数据类型 数组名【元素个数】
eg:
int arr[5];
操作数组元素的方法:
下标法:
(1)下标从0开始
(2)数组名[下标]
1.数组初始化
(1)完全初始化
int arr[5] = {1,2,3,4,5};
(2)部分初始化:给部分元素赋值,没有赋值的元素自动赋值为0
int arr[5] = {1,2,3};
int arr[5] = {0};(元素全为0)
int arr[5] = {[1] = 1,[3] = 2};
(3)自动计数原则:(不能不赋初始值)
int arr[ ] = {1,2,3};
int arr[ ] = {1,[2] = 2,[4] = 5};
(4)可变数组(危险不要使用) ---动态内存
int n;
n = 10;
int arr[n];
不可以在定义的时候赋初始值
int arr[n] = {1,2,3}; //error
(2)赋值
int arr[5];
arr[0] = 20;
arr[1] = 20;
数组的遍历:
int i;
for(i = ;i < 5;i++)
{
printf("%d\n",arr[i]);
}
逆序存储
终端输入逆序存储
int a[10] = {1,2,3,4,5,6,7,8,9,10};
#define N 6
int main(int argc, char *argv[])
{
int i;
int arr[N];
//终端输入
for(i = 0; i < N; i++)
{
printf("arr[%d]= ", i);
scanf("%d", &arr[i]);
}
//打印
for(i = 0; i < N; i++)
{
printf("%d\t", arr[i]);
}
puts("");
//逆序
for(i = 0; i <= N / 2; i++)
{
int temp;
temp = arr[i];
arr[i] = arr[N - 1 -i];
arr[N - 1 -i] = temp;
}
//打印
for(i = 0; i < N; i++)
{
printf("%d\t", arr[i]);
}
puts("");
return 0;
}
冒泡排序
int arr[10] = {10, 99, 66, 77, 33, 58, 26, 25, 18, 6};
//趟数
int j;
for(i = 0; i < 10 - 1; i++)
{
//两两比较
for(j = 0; j < 10 - 1 - i; j++)
{
if(arr[j] < arr[j+1])
{
int temp;
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
char 型数组
输入大小写字符串,输出为小大写字符串
/*===============================================
* 文件名称:8.c
* 创 建 者:
* 创建日期:2024年08月05日
* 描 述:
================================================*/
#include <stdio.h>
#include <ctype.h>
int main(int argc, char *argv[])
{
char str[32]={0};
printf("input str: ");
gets(str);
int i = 0;
while(1)
{
if(str[i] == '\0')
break;
if(str[i] >='a'&& str[i] <='z')
{
str[i] = str[i] - ' ';
}
else if(str[i] >='A'&& str[i] <='Z')
{
str[i] = str[i] + ' ';
}
i++;
}
printf("%s\n",str);
return 0;
}