C语言进阶3(字符数数组2头文件)
昨天我们初步的学习了字符数组今天我们将进一步深入学习首先我们来了解一下今天的学习目标了解什么是头文件掌握ctype.h头文件部分但字符处理函数掌握string.h头文件中的部分字符串处理函数字符数组补充内容头文件后缀名是.h已经写好了一些功能放在.h中可以直接用例如#include 文件名.hctype.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赋值给a1a1的值被覆盖字符串不能直接用“ ”赋值所以需要借助strcpy3、strcat 字符串连接小括号里有两个内容例strcat a1 a2 把a2拼接在a1后面a1就变成a1a24、Strcmp 字符串比较小括号里有两个内容结果是整数——两个内容相等是0第一个大于第二个是大于1小于是-1例strcmp( a , b )0; 比较a和b大小字符数组的计算求值与一维数组求值相似我就不一一讲解我会把归纳放在下面各位可以自行参考字符串 1、输出 一个字符串char a[100];用%c输出 int i , nstrlen(a); for(i0; in; i) { printf(%c , a[i]); } 一个字符串char a[100];用%s输出 printf(%s , a); 多个字符串char a[100][100];用%c输出 for(i0; in; i) { for(j0; jstrlen(a[i]); j) { printf(%c , a[i][j]); } printf( ); } 多个字符串char a[100][100];用%s输出 for(i0; in; i) { printf(%s , a[i]); } 1、求和 和 平均值 //假定一个字符数组 a[] 以下都是 数字字符求和 int i , nstrlen(a) , sum0; for(i0; in; i) { if(a[i]0 a[i]9) { sum sum (a[i]-48); count; } } printf(和是%d 平均值是%.2f , sum , (float)sum/count); 2、统计个数 统计大写 小写 数字 其他条件字符的个数 int count10 , count20 , count30 , count40 ; 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(i0; in; i) { if(a[i]A a[i]Z) { a[i] a[i] 32; } else { a[i] a[i] - 32; } } 奇数变偶数 012 123 890901 【0到8加1 9直接变成0】 for(i0; in; 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(i0; in; 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 k0; for(i0; in; i) { if(a[i]A a[i]Z) { b[k] a[i]; k; } } 非空格迁移 / 删除空格 char b[100] ; int k0; for(i0; in; i) { if(a[i]! ) { b[k] a[i]; k; } } 删除给定的字符ch例如morning 删除o 变成 mrning char b[100] ; int k0; for(i0; in; i) { if(a[i]!o) { b[k] a[i]; k; } } 6、查找 单字符查找【常量或变量】 for(i0; in; i) { if(条件) //查找给定的字符变量x是否存在 a[i] x { count; } } if(count0) { printf(失败); } else { printf(出现%d次 , count); } 相邻字符查找 查找is这个单词是否存在与字符串a中 //n为字符串长度 for(i0; in; i) { if(a[i]i a[i1]s) { count; } } if(count0) { printf(失败); } else { printf(出现%d次 , count); } 字符串查找 【在二维数组中char a[100][100]中进行查找】 for(i0; in; i) { if( strcmp(a[i] , 所需查找的字符串)0 ) { count; } }到这里我们就完成了我们今天的学习我依旧会将思维导图放在底部给大家理解学习谢谢