2021.12.21 C语言课后作业

前置知识:

  • 数组名是数组的首地址
  • 数组第一个元素,也就是下标为0的那个元素也是数组的首地址

char a[10];
char * a;

上面两个的区别:

  • 字符数组是一系列变量,在定义或者初始化的时候会逐一确认每个元素的地址,所以,在初始化的时候,可以使用双引号将一个字符串赋值给他,而不能在定义之后的某一行单独使用双引号给他赋值,因为只有第一个元素的地址,而没有后面其他每一个位置的地址
  • 字符指针可以访问所有地址,所以在定义之后给他赋值的时候,后续字符的地址也可以被访问到,所以可以在定义之后的某一行直接用双引号将某个字符串赋值给他

第一题:

  1. 怎么判断字符串某个位置当前字符是数字,小写,大写字母,还是其他的字符? 使用ASCLL码
  2. 查阅表格,找到对应类型字符所在的数值区间
  3. 遍历整个字符串
  4. 创建一个专门用于计数的数组count,有四个元素
  5. 遍历到一种类型的字符就令他对应count数组的元素加一
  6. 最终输出四种类型字符数量的结果
#include <stdio.h>
#include <string.h>

int main()
{
	char a[10];
	char *b;
	int count[4] = {0};
	scanf("%s",a);
	b = a;
	for (int i = 0;i < strlen(a); ++i,++b)
	{
		if (*b >= 48 && *b <= 57)
		{
			++count[0];
		}
		else if (*b >= 65 && *b <= 90)
		{
			++count[1];
		}
		else if (*b >= 97 && *b <= 122)
		{
			++count[2];
		}
		else
		{
			++count[3];
		}
	}
	printf("number:%d\nbig:%d\nsmall:%d\nother:%d\n",count[0],count[1],count[2],count[3]);
	return 0;
}

附加题:

  1. 使用string.h库中自带的函数strstr()
  2. 这个函数用来判断某个字符串是否是某个字符串的子串
  3. 实现strstr()这个函数的方式有两种,一种是普通的暴力枚举,另一种是KMP匹配,由于KMP较为复杂,会另写一篇文章解析
  4. 普通使用仅需会用strstr()函数即可,不要求掌握实现原理
#include <stdio.h>
#include <string.h>

int main()
{
	char *a[3] = {"Martin","Andy","Jordan"};
	char b[5] = "ar";
	char *d = NULL;
	d = b;
	for (int i = 0; i < 3; ++i)
	{
		if (strstr(a[i],d))
		{
			printf("%s ",a[i]);
		}
	}
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值