课程名称: 物联网/嵌入式工程师
课程章节: 第二周 计算机基础和C语言
主讲老师: 大白老师
今天学习了一维数组和二维数组的内容。
一维数组:
数组的初始化:
可以int a[2]={10,20};
也可以int a[]={10,20};
还可以int a[5]={10,20};
像上条语句,初始化的时候五个元素只有两个被赋值,那么剩下的三个元素自动被赋值为0.
切记 int a[m] m不能为变量
如果定义了一堆数据:
int a[]={10,20,30,40,50,60,70};
如果要定义a数组的长度len,可以
int len = sizeof(a)/sizeof(a[0]);
如果想要循环输出可以:
for(i=0;i<len;i++) { printf("%d ",a[i]); }
字符数组和字符串
存放字符串使用char类型定义数组:
三种写法:
char buf[30] = "welcome"; char buf[30] = {"welcome"}; char buf[30] = {'w','e','l','c','o','m','e','\0'};
注意一点
比如char a[]=“hello”,其实长度是六个字节带一个’\0’
这样的话其实也可以用for循环逐个输出,但是速度和效率很慢,可以用%s进行操作
char buf[10] = {0}; scanf("%s",字符数组的首地址); //scanf("%s",buf); 功能:用户从键盘输入任意一段字符串,存放到buf中。以回车,空格,tab键盘作为用户输入的结束符号。
所以如果用户输入hello world实际只输入了hello,
char buf[] = {"hello world"}; printf("%s\n",字符数组的首地址); //printf("%s\n",buf); 功能: 输出数组中第一个'\0'之前所有的字符,并显示到屏幕上。 若是用户对应字符数组中没有'\0',则用户输出乱码.所以用之前先初始化比较好
二维数组
二维数组用来存放有关行和列的信息
int a[i][j]- - -> i表示行, j表示列
存放数据的话从行开始,占满一行后开始存下一行
int a[2][3]表示定义了一个两行三列的二维数组
int a[][3]这样可行,行数可以省略,但列不能:
int a[3][]={1,2,3,4,5,6,7,8,9}
既可以
{1,2,3}
{4,5,6}
{7,8,9}
还可以
{1,2,3,4}
{5,6,7,8}
{9,0,0,0}
所以会有多种可能,只能省略行数,不能省略列
附上今天的作业
定义一个int a[10][10]的数组,利用二维数组输出下列杨辉三角的图案. 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 ...
下面是答案:
在这个浮躁的时代,只有自律的人才能脱颖而出
—《觉醒年代》