目录
一维数组
一、数组的特点
二、定义数组
三、数组的初始化
四、数组引用
五、数组元素的赋值
六、冒泡排序
七、回文数
1.判断一个五位数是否为回文数
2.字符数组的函数
八、数组中常用的函数
1.strlen
2.strcat、strncat
3.strcmp
4.strcpy 、strncpy
5.sprintf
6.sscanf
7.引入ctype.h头文件
ctype.h
九、数组的查找
1.普通循环查找
2.二分法查找
一维数组
一、数组的特点
- 数组的数据类型都是一样的
- 数组不可变(一旦定义了大小就不能更改了)
- 数组中的数据是连续的
- 数组中的数据访问是从零开始的
二、定义数组
- 数组的数据类型都是一样的
- 数组不可变(一旦定义了大小就不能更改了)
- 数组中的数据是连续的
- 数组中的数据访问是从零开始的
二、定义数组
int num[5]
- 定义数组的标志就是[ ] ,[ ] 中的数值是数组的最多能存放的元素的个数。
- 变量在数组中称元素
三、数组的初始化
int num [5] = {0} // 数组元素为0 0 0 0 0
1.数组定义时:
- 如果{ 0 }表示数组中的所有元素都初始化为零;
- 如果 { 1 },表示第一个元素初始化为1,其他为零;
- 如果{ 1 ,2} ,表示数组中第一个和第二个元素初始化为1,2 ,其他元素为零;
2.如果只定义了数组,没有初始化,元素的值是随机的。
char ch[10]; //数组的定义
char str[10]="hello"; //数组的初始化
四、数组引用
- 数组引用:数组元素
- 数组元素表示方法:数组名[下标]
- 访问数组中的元素num[index],index表示正整数0开始到数组的最大索引位
注:数组元素引用时,下标不能越界
五、数组元素的赋值
1.常规赋值
int a[6]={1,20};
a[3]=15; //指定元素赋值,数组元素相当于变量
int a[6]={1,20};
a=10; //不能一次给整个数组赋值,可以给一个元素赋值
//a是数组名
2.利用循环给数组赋值
#includeint main(){ int i,a[6]; for(i=0;i<6;i++) //对数组元素a[0]~a[5]赋值 a[i]=i+1; for(i=0;i<6;i++) //循环输出数组元素a[0]~a[5] printf("%dn",a[i]); return 0; }
六、冒泡排序
代码如下(示例):
#includeint main (){ int num [5] = {14,8,27,0,89}; int temp = 0; // 冒泡排序开始 // 外循环 for (int i = 0; i< 5;i++){ // 内循环 for(int j = 0;j<5;++j){ //从小到大排序,j<4 // 从大到小 if(num[j] 七、回文数
1.判断一个五位数是否为回文数
代码如下(示例):
#includeint main(){ char s[5]={0};//语法是正确的 printf("请输入一个五位数:") ; gets(s); if(s[0] == s[4] && s[1]==s[3]){ printf("是回文数n"); } else{ printf("不是回文数n"); } } 2.字符数组的函数
gets() 进行输入;puts()进行输出
八、数组中常用的函数
(需要添加 string.h 头文件)
1.strlen
- strlen计算数组的长度
- strlen和sizeof的区别:strlen返回的是数组的元素个数;sizeof返回的是数组的长度
#include#include int main(){ char s[5]={0};//语法是正确的 printf("请输入一个五位数:") ; gets(s); size_t len = strlen(s); printf("数组的长度是%dn",len); printf("数组的长度是%dn",sizeof(s)); } 2.strcat、strncat
- strcat、strncat进行字符串的拼接
- strcat(x,y);将y字符串拼接到x字符串的后面
- strncat(x,y,n);其中n表示y数组在追加到x后面,需要添加几个字母
注:字符数组中遇到 表示结束位
#include#include int main(){ char a[50]="hello"; char b[50]="world"; //strcat(a,b); strncat(a,b,5); puts(a); }//运行结果为helloworld 3.strcmp
- strcmp 对两个字符串进行比较
- strcmp(a,b); 先比较字符串的第一个元素
- 若a字符串的第一个元素>b字符串的第一个元素,则返回一个大于零的值
- 若a字符串的第一个元素
- 若第一个元素相同,就比较第二个元素,直到结束如果都相同,则返回0
void main(void){ char a[50]="h"; char b[50]="H"; int x = strcmp(a,b); printf(_Format:"%dn",x); // h的ASCII码比H大, 结果为:1 }4.strcpy 、strncpy
- strcpy 、strncpy 字符数组的拷贝
- strcpy(x,"aaa"); 将字符串aaa赋值到数组x中去
- strncpy(x,"012345678",n);将指定的字符串按照指定的个数n拷贝到数组x中去
#include#include int main(){ char a[50]="a"; char b[50]="h"; strcpy(a,"aaa"); puts(a); // 结果:aaa strncpy(b,"0123456789",5); puts(b); //结果:01234 } 5.sprintf
- 将任意数字转成字符串
#include#include int main(){ char a[50]="a"; char b[50]="123456"; sprintf(a,"%d",1234); puts(a); //结果为1234 } 6.sscanf
- 将字符串转成任意类型的数字
#include#include int main(){ char a[50]="a"; char b[50]="123456"; int num =0; sscanf(b,"%d",&num); printf("num = %d ",num); // 结果为num = 123456 } 注:还有fputs、fgetsstrstr、strrchr、strchr函数(后面章节具体介绍)
7.引入ctype.h头文件
#include#include int main(){ char c; int letter=0; int number=0; int space=0; while((c=getchar())!='Q'){ //输入: if(isalpha(c)!=0){ //q letter++; //1 } // if(isdigit(c)!=0){ //Q number++; //输出:字母=1,空格=1,数字=0 } if(isblank(c)!=0){ space++; } } printf("字母=%d,空格=%d,数字=%d",letter,number,space); } ctype.h
- ctype.h中提供一些列的方法用来对字符串进行判断
- isalpha() 只要不返回0表示是字母
- isdigit () 只要不返回0表示是数字
- isblank() 只要不返回0表示是空格
- isupper() 只要不返回0表示是大写
- islower() 只要不返回0表示是小写
- iscntrl () 只要不返回0表示是控制键
九、数组的查找
1.普通循环查找
#includeint main () { int a[ ] = {1,2,3,4,12,21,13,4,5,6,77,43,21,14,15}; // 如何计算数组中有多少元素 int n = sizeof(a)/sizeof(a[0]); printf("%dn",n); int num = 0; printf("请输入需要查找的值:"); scanf("%d",&num); int i = 0; for( ; i 2.二分法查找
#includeint main(){ int a []={ 5,12,32,7,9,10}; int n=sizeof(a)/sizeof(a[0]); int low=0; //数组下标的最低位 int high=sizeof(a)/sizeof(a[0])-1;//数组下标的最高位 int mid = 0;//数组的中间位 int key =0; //用户输入的数据 int temp = 0; //数组必须要排序 for(int i =0;i a[j+1]){ temp=a[j+1]; a[j+1]=a[j]; a[j]=temp; } } } printf("%dn",a[5]); printf("请输入需要查找的数字:"); scanf("%d",&key); //二分查找 while(low <= high){ mid = (low+high)/2; if(key < a[mid]){ high = mid - 1; } else if(key > a[mid]){ low = mid +1; }else{ printf("下标是:%dn",mid); break; } } }



