昨天我们初步的学习了字符数组,今天我们将进一步深入学习,首先我们来了解一下今天的学习目标:
- 了解什么是头文件
- 掌握ctype.h头文件部分但字符处理函数
- 掌握string.h头文件中的部分字符串处理函数
- 字符数组补充内容
- 头文件
后缀名是.h
已经写好了一些功能放在.h中,可以直接用
例如#include "文件名.h"
- ctype.h头文件中的部分单字符处理功能(单字符)
islower( ) 判断是否小写字母
isupper( ) 判断是否大写字母
isdigit( ) 判断是否是十进制数组(‘ 0 ’—‘ 9 ’)
isspace( ) 判断是否是空格(空白)字符(蓝C和绿C都可以用)
isblank( ) 判断是否是空格(空白)字符(蓝C可以用绿C不可以用)
isalpha( ) 判断是否是大小写字母
isxdigit( ) 判断是否是16禁止数(‘ 0 ’—‘ 9 ’ ‘ a ’—‘ f ’ ‘A’—‘F’)
tolower( ) 转换成小写字母
toupper( ) 转换成大写字母
- string.h头文件中的部分字符串处理功能(字符串)
1、strlen() 求字符串的长度
字符串长度:有多少个字符,字符串长度就是多少
小括号里只有一个内容
结果是整数(%d输出)
例:char a[10]=”asdf”; strlen(a)=4;
2、strcpy() 字符串赋值
小括号里有两个内容
例:strcpy( a1 , a2 );把a2赋值给a1,a1的值被覆盖
字符串不能直接用“ = ”赋值,所以需要借助strcpy()
3、strcat() 字符串连接
小括号里有两个内容
例:strcat( a1 ,a2 ); 把a2拼接在a1后面,a1就变成a1+a2
4、Strcmp() 字符串比较
小括号里有两个内容
结果是整数——两个内容相等是0,第一个大于第二个是大于1,小于是-1
例:strcmp( a , b )0; 比较a和b大小
- 字符数组的计算求值
与一维数组求值相似,我就不一一讲解,我会把归纳放在下面各位可以自行参考:
字符串 1、输出 一个字符串char a[100];用%c输出 int i , n=strlen(a); for(i=0; i<n; i++) { printf("%c" , a[i]); } 一个字符串char a[100];用%s输出 printf("%s" , a); 多个字符串char a[100][100];用%c输出 for(i=0; i<n; i++) { for(j=0; j<strlen(a[i]); j++) { printf("%c" , a[i][j]); } printf(" "); } 多个字符串char a[100][100];用%s输出 for(i=0; i<n; i++) { printf("%s " , a[i]); } 1、求和 和 平均值 //假定一个字符数组 a[] (以下都是!!!) 数字字符求和 int i , n=strlen(a) , sum=0; for(i=0; i<n; i++) { if(a[i]>='0' && a[i]<='9') { sum = sum + (a[i]-48); count++; } } printf("和是%d 平均值是%.2f" , sum , (float)sum/count); 2、统计个数 统计大写 小写 数字 其他条件字符的个数 int count1=0 , count2=0 , count3=0 , count4=0 ; for() { if(条件1) { count1++; } else if(条件2) { count2++; } else if(条件3) { count3++; } else { count4++; } } 3、最值 最长字符串 【长度 strlen】 //假定三个数组 int a[]; int b[]; int c[] 简单粗暴直接比较法 if(strlen(a)>strlen(b) && strlen(a)>strlen(c)) printf("最长串是%s 长度是%d" , a , strlen(a)); 赋值比较法 char max[100]=""; strcpy(max , a); //max = a; if(strlen(max) < strlen(b)) strcpy(max , b); if(strlen(max) < strlen(c)) strcpy(max , c); printf("最长串是%s 长度是%s" , max , strlen(max)); 最大字符串 【大小 strcmp】 简单粗暴直接比较法 if(strcmp(a , b)>0 && strcmp(a , c)>0) printf("最大串是%s" , a); 赋值比较法 char max[100]=""; //2、其余的人依次打擂主 if( strcmp(max , b)<0 ) strcpy(max , b); if( strcmp(max , c)<0 ) strcpy(max , c); printf("最大串是%s" , max); 4、元素变换【不要写多个单if语句,会影响结果,写if……else或者if……else if】 大小写变换 for(i=0; i<n; i++) { if(a[i]>='A' && a[i]<='Z') { a[i] = a[i] + 32; } else { a[i] = a[i] - 32; } } 奇数变偶数 012 >> 123 890>>901 【0到8加1 9直接变成0】 for(i=0; i<n; i++) { if(a[i]>='0' && a[i]<='8') { a[i] = a[i] + 1; } else if(a[i] == '9') { a[i] = '0'; } } 大写字母循环变换 A变C B变D……X变Z Y变A Z变B for(i=0; i<n; i++) { if(a[i]>='A' && a[i]<='X') { a[i] = a[i] + 2; } else if(a[i] == 'Y') { a[i] = 'A'; } else if(a[i] == 'Z') { a[i] == 'B'; } } 5、数组迁移 大写迁移 char b[100] = ""; int k=0; for(i=0; i<n; i++) { if(a[i]>='A' && a[i]<='Z') { b[k] = a[i]; k++; } } 非空格迁移 / 删除空格 char b[100] = ""; int k=0; for(i=0; i<n; i++) { if(a[i]!=' ') { b[k] = a[i]; k++; } } 删除给定的字符ch,例如morning 删除o 变成 mrning char b[100] = ""; int k=0; for(i=0; i<n; i++) { if(a[i]!='o') { b[k] = a[i]; k++; } } 6、查找 单字符查找【常量或变量】 for(i=0; i<n; i++) { if(条件) //查找给定的字符变量x是否存在 a[i] == x { count++; } } if(count==0) { printf("失败"); } else { printf("出现%d次" , count); } 相邻字符查找 查找is这个单词是否存在与字符串a中 //n为字符串长度 for(i=0; i<n; i++) { if(a[i]=='i' && a[i+1]=='s') { count++; } } if(count==0) { printf("失败"); } else { printf("出现%d次" , count); } 字符串查找 【在二维数组中char a[100][100]中进行查找】 for(i=0; i<n; i++) { if( strcmp(a[i] , (所需查找的字符串))==0 ) { count++; } }到这里我们就完成了我们今天的学习,我依旧会将思维导图放在底部给大家理解学习,谢谢!