接上回:
一、数组大小
sizeof(数组名):此函数用来求得相应数组开辟空间的大小。
例如:
二、清零函数
bzero
#include <strings.h>
void bzero(void *s, size_t n);
功能:数组清零
参数:s:数组首地址 n:字节大小
返回值:无
例如:
三、字符数组
被用来存储字符串。字符串用“ ”括起来,以 '\0' 作为结束标志,在定义元素个数时,需要把 '\0' 考虑上。
例如:
3.1 输入输出
3.1.1 输入
1)例如:
scanf函数默认遇见空格或者换行就认为赋值结束,若想支持空格可以改为:
scanf("%[^\n]",a1); //遇到换行才结束
printf("%s\n",a1);
2)gets
char *gets(char *s);//支持空格输入
功能:终端输入字符串
参数:字符数组首地址
返回值:字符数组首地址
3.1.2 输出
puts
int puts(const char *s); //自带换行功能
功能:终端输出字符串
参数:字符数组首地址
返回值:输出字符的个数
3.2 实际元素的个数
方法一:用for循环遍历
方法二:使用 strlen函数
#include <string.h>
size_t strlen(const char *s);
功能:计算字符串的实际元素个数
参数:字符数组的首地址
返回值:字符串实际元素个数
例如:
注意:sizeof与strlen的区别:
sizeof是关键字,strlen是函数
sizeof是计算元素开辟空间大小,strlen计算字符串实际元素个数
sizeof的计算包含'\0';strlen的计算不包含'\0'
四、冒泡排序
分析:
int a[5]={2,3,4,5,6}; //6 5 4 3 2
n个数比较n-1轮
第一轮:5个数
32456
34256
34526
34562
第二轮:4个数
43562
45362
45632
第三轮:3个数
54632
56432
第四轮:2个数
65432
例如:
将数组由小到大排序
五、选择排序
思路:
假设第一个元素最小 暂存索引,分别和后边的每一个元素比较;比较过程中如果遇到更小的值,索引进行存储;一轮比较完后,再和最左边元素的值进行交换。
int a[5]={2,5,4,3,12},min=0,t; //min暂存最小元素索引
for(int i=0;i<5-1;i++)
{
min=i; //假设最左边元素最小
for(int j=i+1;j<5;j++) //获取剩下的几个元素
{
if(a[min]>a[j]) //出现更小值时,索引更新
min=j;
} //循环结束,min是本轮循环的最小元素索引
//a[min] a[i] //要交换的是 最小元素 和 最左边位置
if(min!=i) //排除最左边要交换的位置=本轮最小元素的位置
{
t=a[min];
a[min]=a[i];
a[i]=t;
}
}
for(int i=0;i<5;i++)
printf("%d ",a[i]);
return 0;