C语言-数组

网友投稿 710 2022-05-28

1. 数组介绍

C语言的数组是一个同类型数据的集合,主要用来存储一堆同类型的数据。

程序里怎么区分是数组?[ ] 这个括号是数组专用的符号. 定义数组、 访问数组数据都会用到。

C语言-数组

数组的定义语法:

int data[10]; <数据类型> <数据名称>[常量-整数-数据数量]; 定义一个int类型的数组,数组的名称是data,长度是10,所占空间大小:4*10 字节。

特点:

1. 访问数组成员的时候:下标是从0开始的。int data[10]; 下标 (0~9) 2. 数组只是支持在定义的时候进行整体赋值。 3. 数组定义的时候,[]里只能填常量。数组在定义之后就无法更改大小。 4. 数组的空间是连续的—内存。 5. 数组的名称就是数组空间的首地址。 6. 数组初始化时,如果没有赋值,那么数组空间里的数据是未知的---局部变量。 7. 数组初始化时,只要给一个空间赋值,剩余空间都自动初始化为0---局部变量。

数组练习1: 定义一个数组、打印出数组里的数据

#include int main() { char i; int data[10]={12,13,14,15}; //下标 int a[5]; for(i=0;i<10;i++) //0~9 { printf("data[%d]=%d\n",i,data[i]); } for(i=0;i<5;i++) //0~4 { printf("a[%d]=%d\n",i,a[i]); } return 0; }

数组练习2: 从键盘上读取5个数据存放到数组里,在顺序打印、逆序打印

#include int main() { int i; int data[5]={0}; //下标 //从键盘上读取5个数据存放到数组里 printf("请输入5个数据:"); for(i=0;i<5;i++) { scanf("%d",&data[i]); //两种: 空格 、 回车-换行 } for(i=0;i<5;i++) { printf("data[%d]=%d\n",i,data[i]); } for(i=4;i>=0;i--) { printf("data[%d]=%d\n",i,data[i]); } return 0; }

2. 数组定义语法与注意事项

1. 数组的名称是数组元素的首地址。(数组的名字就是地址) 2. 数组只能在初始化的时候进行整体赋值。比如: int a[100]={10,20,30}; 3. 数组的下标访问是从0开始的。比如: int a[10]; 下标范围: a[0] ~ a[9] 4. 数组名称虽然是地址,但是这个地址是不能偏移、也不能自增自减,也不能改变指向。 int a[10]; int b[10]; a++、a--; //错误的 a=b; //错误的 a[0]=b[0]; // 正确 5. 如果数组是局部变量,初始化没有赋值的情况下,成员是随机值。 比如: int a[10]; printf("%d\n",a[0]); 初始化的时给数组进行赋值,那么没有赋值的下标是什么值? 比如: int a[10]={1,2,3}; printf("%d\n",a[6]); //0 6. 数组定义的时候(C89), 数组的下标里的大小只能填常量。 比如: int a[]; //错误的,定义数组必须填大小 int size=10; int a[size]; //错误的,定义数组只能填常量。 int b[100]; //正确 #define SIZE 100 int a[SIZE]; //正确

3. 案例: 计算平均值

要求: 定义数组,从键盘上录入5个浮点类型数据存放到数组,计算平均值和最大、最小值,输出到屏幕上。

#include int main() { int i; float sum=0; float data[5]; float max=0; float min=100; printf("请输入5个数据:"); /*1. 输入数据*/ for(i=0;i<5;i++) { scanf("%f",&data[i]); } /*2. 处理数据*/ for(i=0;i<5;i++) { sum+=data[i]; //累加 if(data[i]>max)max=data[i]; if(data[i]

4. 案例: 求和

要求: 定义数组,从键盘上录入5个整数数据,求和,输出结果。

#include int main() { int i; int sum=0; int data[5]; printf("请输入5个数据:"); /*1. 输入数据*/ for(i=0;i<5;i++) { scanf("%d",&data[i]); } /*2. 处理数据*/ for(i=0;i<5;i++) { sum+=data[i]; //累加 } printf("和:%d\n",sum); return 0; }

5. 案例: 判断数据范围

要求: 定义数组,从键盘上录入10个整数数据,计算里面大于5、大于10数据的数量,输出结果。

#include int main() { int i; int data[10]; int cnt_10=0,cnt_5=0; printf("请输入10个数据:"); for(i=0;i<10;i++) { scanf("%d",&data[i]); } //处理数据 for(i=0;i<10;i++) { if(data[i]>5)cnt_5++; if(data[i]>10)cnt_10++; } printf("cnt_5=%d\n",cnt_5); printf("cnt_10=%d\n",cnt_10); return 0; }

6. 案例: 冒泡排序-整数数组

从键盘上录入10个数据,进行冒泡排序. 大到小排序。

#include int main() { //从键盘上录入5个数据,进行冒泡排序. 大到小排序。 int a[5]; int i,j; int tmp; printf("录入5个数据:"); for(i=0;i<5;i++) { scanf("%d",&a[i]); } for(i=0;ia[j+1]) { tmp=a[j]; a[j]=a[j+1]; a[j+1]=tmp; } } } for(i=0;i

7. 字符串数组

7.1 字符串特点

1. 字符串本身就是字符数组。比如:char a[10]="123"; 2. 常规字符串使用双引号括起来的。 比如:char a[10]="123"; 3. 字符串以'\0' 作为结束符号。 4. 字符数组一定是字符串? 不一定。 比如: char a[]={12,3,4,5,5};

7.2 字符串定义

#include int main() { char buff1[10]={'1','2','3','\0','4','5','6','\0','7'}; char buff2[]={'1','2','3','\0'}; char buff3[]="123"; printf("%d\n",sizeof(buff2)); //4 printf("%d\n",sizeof(buff3)); //4 return 0; }

7.3 计算字符串长度

#include #include int main() { char buff[100]; int cnt=0; printf("请键盘上录入字符串:"); scanf("%s",buff); // 不可以录入空格 while(buff[cnt]!='\0') { cnt++; } printf("cnt=%d\n",cnt); return 0; }

C 语言 数据结构

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:scratch两座对称的山峰 少儿编程电子学会图形化编程scratch等级考试二级真题和答案解析2021-3
下一篇:如何在ubuntu上安装virtualbox的driver module vboxdrv
相关文章