2.数组
2.1初识数组(一维数组)
1.定义数组
1. < 类型 > 变量名称[元素数量]
e·g: int grades[100];
double weight[20];
注意:元素数量必须为整数
2.数组:是一种容器,特点是其中元素数据类型相同,
一旦创建不可更改大小,数据呈线性排列。
e·g int a [10]
a[0] | a[1] | a[2] | a[3] | a[4] | a[5] | a[6] | a[7] | a[8] | a[9] |
3.数组的每个单元就是一个变量,[]中数字为下标,从0开始计数。
4.有效下标范围:[0,数组大小-1]
·segmentation fault 报错
ps:数组经典用法
5.初始化:
练习:1.求斐波那契数列前二十项
//分析:1.定义数组F[20]
// 2.将前二十项求出并存储进F数组
// 3.输出数组F
#include <stdio.h>
int main()
{
int F[20] = {0};
int i ;
F[0] = 1;
F[1] = 1;
printf("斐波那契数列的前二十项是\n");
for (i = 0; i <= 20; i++) {
F[i + 2] = F[i + 1] + F[i];
printf("%d\t", F[i]);
if(i%5==0) //每行输出五个
printf("\n");
}
return 0;
}
2.统计分数:输入10个考生成绩,统计各分段人数。
//分析:1.定义num一维数组记录各分段人数
// 2.score/10 与 数组下标相同,可用来直接判断进行计数
// 3.再遍历数组输出结果
#include<stdio.h>
int main()
{
int i,score;
int num[11]={0}; //记录分数段人数
for(i=1;i<=10;i++){
scanf("%d",&score); //输入成绩
num[score/10]++; //计数(以统计对象的值为下标)
}
printf("分数段:人数\n");
for(i=0;i<10;i++){
printf("%d~%d:\t%d\n",i*10,i*10+9,num[i]); //输出统计结果
}
printf("100:\t%d\n",num[10]);
return 0;
}
练习3.输入10个整数,找出其中最大数和最小数
//分析:1.循环输入数据保存至数组
// 2.将max,min定义为数组首元素
// 3.遍历数组找出最大最小并输出
#include<stdio.h>
int main()
{
int max,min,i;
int a[10];
for(i=0;i<10;i++){
scanf("%d",&a[i]);
}
max=min=a[0];
for(i=1;i<10;i++){
if(a[i]>max)
max=a[i];
if(a[i]<min)
min=a[i];
}
printf("max=%d\t\nmin=%d",max,min);
}
2.字符串数组与字符串
1.定义:与普通数组定义方式相同,也可采取同样的初始化方式,引用也相同。
2.字符串常量:用一堆双括号引起的字符序列("hello world")
在存储字符串时,会自动在其后添加空字符‘\0’作为结束标志
3.字符与字符串的区别:结尾有无‘\0’的结束标志
4.字符数组的初始化
①用字符常量的初始化列表对数组初始化
char str[6]={'C','H','I','N','A','\0'}
②用字符串常量直接对数组初始化
char str[6]={"China"};
char str[6]="China";
char str[ ]="China";
5.使用时可逐个使用也可整体使用
6.字符串的输入/输出
①按数组元素逐个处理每个字符
char str[10]="China";
for(i=0;str[i]!='\0';i++){
putchar(str[i]);
}
putchar('\n');
②按字符串整体输入/输出
char str[80];
scanf("%s",str);//不能输入带空格的字符串
printf("%s",str);
③ gets(str)输入一个字符串 //可以输入带空格字符串
puts(str)输出字符串
7.字符串的处理函数
#include<string.h>
strlen(字符串) // 求字符串长度,string length
strcpy(目的字符串,源字符串)//串复制,string copy
strcat(目的字符串,源字符串)//串联接 string combination
strcmp(字符串1,字符串2) //穿比较 string comparison
2.2二维数组
1.定义:
类型 数组名[常量表达式1][常量表达式2]
第一维(行 ) 第二维(列)
float a[3][4] //定义了一个三行四列的数组,存放12个浮点数2.
2.存放:
二维数组在内存中按行连续存放
3.二引用:
数组名 [下标1][下标2]
4.初始化:![](https://i-blog.csdnimg.cn/blog_migrate/bfd6cd06a73f38a88dafe1ff90b32024.png)
![](https://i-blog.csdnimg.cn/blog_migrate/dbb8427fac1555976610745d5328f988.png)
感谢阅读!
注:1.初学者如有遗漏或错误请大佬及时指出和补充
2.刚开始学着写博客,请大佬提出建议或指导
3.日后会继续在这篇文章补充C#数组相关知识
4.愿意结识更多初学者一起努力