字符串函数的实现以及大小写转换、字符统计等------(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
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!