数组
(1):数组的定义
数组是有序数据的集合。数组的定义包括数组内数据的类型、数组的名称和元素个数
举例:
int a[100]//该数组内元素的类型为整形数据,数组名称为a,元素个数为100
注意:数组内元素的标号是从0开始的,所以该数组内元素下标是从0~99,而a[100]的地址是一个不确定的地方,一般数组越界会造成不好的后果,所以使用数组时,要注意保证数组的大小足够。
(2):数组的使用
1:数组内元素的初始化
举例:
用for循环将数组内元素全部设为用一个值,例如上图将数组内全部元素全变为1。
注意:1:若不给数组赋值,则数组内元素为随机数。
2:也可以通过数组下标来给数组部分元素赋值。
2:数组常用来储存数据,而当我们想要访问数组内元素时,可以通过其下标来访问。
注意:数组的下标也可以用字符来表示,此时数组的下标为该字符在ascll表中十进制对应的大小。
举例:已知字符‘A’在ascll表中十进制对应的大小为65。
3:二维数组
1:二维数组的定义
举例:
int a[3][5];//3为该数组的行数,5为数组的列数,故该数组共有15个元素
其数组内元素的存放以行优先。
4;数组的应用
1:求一组数据中的最小(大)值。
#include <stdio.h> int main() { int a[100]; int n,min; scanf("%d",&n); for (int i=0;i<n;i++) scanf("%d",&a[i]); min=a[0];//先让最小值等于数组内第一个元素 for (int i=0;i<n;i++)//遍历数组 if (a[i]<min)//若发现数组内元素比min小,则将该值赋给min min=a[i]; printf("%d",min); return 0; }
2:给数组内元素按升序或降序排列
主要学习了两种方法:选择排序法和冒泡排序。
(1):选择排序法:
#include <stdio.h> int main() { int a[1000]; int n; int t, k; scanf("%d", &n); for (int i = 0; i < n; i++) scanf("%d", &a[i]); for (int i = 0; i < n - 1; i++) { k = i; for (int j = i + 1; j < n; j++) { if (a[j] > a[k])//找到数组内最大值对应的下标 k = j; } t = a[k];//将最大值与数组内下标为i的元素交换值 a[k] = a[i]; a[i] = t; } for (int i = 0; i < n; i++) { printf("%d ", a[i]); } return 0; }
分析:1:首先通过n-1次循环,从n个数中找到最大的数,将该数放到数组的第一个元素的位置。
2:再通过n-2次循环,从n-1个数中找到最大的数,将该数放到数组的第二个元素的位置,重复上述过程,直到排序完成(上图代码为降序排列)。
(2):冒泡排序:
主要代码:
for (int i=0;i<n-1;i++) for (int j=0;j<n-1-i;j++) { if (a[j]>a[j+1])//比较相邻两个元素的大小,此时为从小到大 if (a[j]<a[j+1])//此时为从大到小 { t=a[j]; a[j]=a[j+1]; a[j+1]=t; } }
分析:从左到右比较相邻两个元素的大小,每一次比较,该数组的最大或最小元素就会像冒泡一样从数组的最右边出来,故称冒泡排序。
字符串
1:字符串是以‘\0’为结束标志的一串字符,如字符串‘happy’由‘h’、'a'、‘p’、‘p’、‘y’和‘\0’6个字符组成,但该字符串的有效长度为5。
2:字符的输入和输出
(1):输入一个字符用scanf("%c",&ch)或getchar();
输入一个字符串用scanf("%s",ch),此时ch前不用加&,且到空格才停止
用gets(),到回车停止
(2):输出一个字符用printf("%c",ch);
输出字符串用printf("%s",ch)或puts();
3:常用字符串函数包含在文件#include <string.h>中
(1):gets函数
举例:gets(字符数组)
注意:该函数遇到回车时才会停止读入字符到数组里,并且会自动加‘\0’
(2):puts函数
举例:puts(字符数组)
注意:输出完数组后自动换行
(3):strcpy函数
举例:strcpy(字符数组1,字符串2)
功能:将字符串2拷贝到字符数组1
(4):strcmp函数
举例:strcmp(字符串1,字符串2)
功能:对两个字符串从左到右逐个比较,直到遇到不用字符或‘/0’时停止
注意:最后返回的值为int型整数,且若字符串1<字符串2,返回负值;若字符串1>字符串2,返回正值;若字符串1=字符串2,返回0
(5):strlen函数
举例:strlen(字符数组)
功能:计算字符数组的有效长度(即不包括‘\0’)
注意:返回值为字符数组的长度