字符串函数的实现以及大小写转换、字符统计等------(C每日一编程)

2023-12-30 14:06:31

--基本算法:

? --字符串求长度、拷贝、比较、连接
? --大小写转换、字符统计

-其他:

? --判断回文、逆序、删字符、字符定位
? --输入(gets)、输出(puts)

正文解读:

大小写转换:就是加减32

字符统计:

? ? ? 一、--1统计字母个数??
? ? ? ? ? ?? --2统计数字个数?

? ? ? ? ?? ??--3统计空格个数

? ? ? ? ? ???--4其他?

? ? ? ? ? ? ? ? ? 以上无非就是求计数器个数,分别设置字母个数a=0、数字个数b=0、空格个数c=0、其他d=0

? ? ?二、统计各字母出现的次数

? ? ? ? ?‘A’--'Z' 26个字母需要设置26个计数器这时需要设置一个数组a[i]

回文数是2020 0202


编程:

一、从键盘输入一个不超过9个字符的字符串,以回车结束,判断其中数字字符个数

?输入一个字符串:

while ((ch = getchar()) != '\n') {
		对ch进行判断
	}

代码:

int main() {
	char str[10];
	int i = 0, n = 0;
	while ((str[i++] = getchar()) != '\n') {
		if (str[i - 1] >= '0' && str[i - 1] <= '9')
			n++;
	}
	printf("%d", n);
	return 0;
}

运行结果:

二,逆序问题

(1)数值型数组可以逆序,字符型数组(字符串也可以逆序)同样也可以逆序。

(2)数值或字符串:

? ? ?--n个数(字符)要交换n/2次

? ? --a[i]与a[n-i-1]交换

代码:

int main() {
	char s[80], t;
	int n, i, j;
	gets(s);
	n = strlen(s);
	for (i = 0; i < n / 2; i++) {
		t = s[i]; s[i] = s[n - i - 1]; s[n - i - 1] = t;
		puts(s);
		return 0;
	}
}

运行结果:

三,回文问题

(1)正着读倒着读都是一样的,如20222202

(2)字符的个数要比较n/2次

参考代码:

int main() {
	char s[20];
	int n, i;
	gets(s);
	n = strlen(s);
	for (i = 0; i < n / 2; i++) 
		if (s[i] != s[n - i - 1])break;
		if (i >= n / 2)printf("是回文数");//站岗条件
		//有n/2和break两种情况跳过来需要判断一下
		//找n/2的反条件就是i>=n/2
		else printf("不是回文数");
		return 0;
	}

运行结果:

以上仅供参考。

文章来源:https://blog.csdn.net/weixin_64545778/article/details/135249540
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。