C语言紧接2(字符数数组2&&头文件)

昨天我们初步的学习了字符数组,今天我们将进一步深入学习,首先我们来了解一下今天的学习目标:

  1. 了解什么是头文件
  2. 掌握ctype.h头文件部分但字符处理函数
  3. 掌握string.h头文件中的部分字符串处理函数
  4. 字符数组补充内容

  • 头文件

       后缀名是.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++;
			}
		} 
				

到这里我们就完成了我们今天的学习,我依旧会将思维导图放在底部给大家理解学习,谢谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值