--基本算法:
--字符串求长度、拷贝、比较、连接
--大小写转换、字符统计
-其他:
--判断回文、逆序、删字符、字符定位
--输入(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/2else printf("不是回文数");return 0;}
运行结果:
以上仅供参考。