1、字符逆序
输入一个字符串,存放在字符数组中,之后通过循环逆序输出。
1)使用gets()和strlen()
#include<stdio.h>
#include<string.h>
int main()
{
char str[100];
gets(str);
int i, n;
n = strlen(str);
for (i = n - 1; i >= 0; i--)
printf("%c", str[i]);
return 0;
}
2)使用scanf()
#include<stdio.h>
int main(void)
{
char* ch;
scanf("%s", ch);
int i = 0, j;
//while用来取得字符串的长度
while (*(ch + i) != '\0')
{
i++;
}
//for循环从后向前访问字符串,其实就是字符数组
for (j = i - 1; j >= 0; j--)
{
printf("%c", *(ch + j));
}
printf("\n");
return 0;
}
2、字符统计
输入一行字符(字符个数小于80),字符包括小写字母,大写字母,数字,空格等其他可打印符号。需要统计各字母的个数,小写字母和大写字母统计于小写字母上,代码如下,
#include<stdio.h>
int main()
{
char a[60];
char ch;
int i, cnt = 0, j, count = 0;
printf("请输入一行字符串并按回车:\n");
do
{//将输入的字符存入数组
ch = getchar();
a[cnt++] = ch;
} while (ch != '\n');
for (i = 97; i <= 122; i++)
{//第一层循环为小写字母a-z
for (j = 0; j < cnt; j++)
{//第二层遍历数组
if (a[j] >= 65 && a[j] <= 90)//大写转小写
a[j] += 32;
if (a[j] == i)//若数组中有符合第一层循环中的小写字母则记下
count++;
}
if (count > 0)//输出统计下来的小写字母次数
printf("%c is %d\n", i, count);
count = 0;//记得将count归零,不然count会累积
} //
}
3、判断字符串中单词个数
输入一行字符串,判断字符串中单词个数,代码如下,
#include<stdio.h>
#include<stdlib.h>
int main()
{
int num = 0, word = 0;
char* p = NULL;
p = (char*)malloc(sizeof(char) * 100);
printf("请输入一行字符串:\n");
gets(p);
while (*p != '\0')
{
if (*p == ' ')
{
word = 0;
}
else
{
if (0 == word)
{
num++;
word = 1;
}
else
{
word = 1;
}
}
p++;
}
printf("数量:%d\n", num);
return 0;
}
4、字符串进行排序
输入三行字符串,对输入的3行字符串进行顺序输出,代码如下,
#include<stdio.h>
#include<string.h>
int main()
{
char s_1[1000], s_2[1000], s_3[1000];
scanf("%s%s%s", s_1, s_2, s_3);
int len = strlen(s_1);
char pre_1[1000];
if(strcmp(s_1, s_2) < 0)
for(int i = 0; i < len; i ++)
pre_1[i] = s_1[i];
else
for(int i = 0; i < len; i ++)
pre_1[i] = s_2[i];
if(strcmp(pre_1, s_3) > 0)
for(int i = 0; i < len; i ++)
pre_1[i] = s_3[i];
printf("%s\n", pre_1);
char pre_2[1000];
if(strcmp(s_1, s_2) > 0)
for(int i = 0; i < len; i ++)
pre_2[i] = s_1[i];
else
for(int i = 0; i < len; i ++)
pre_2[i] = s_2[i];
if(strcmp(pre_2, s_3) < 0)
for(int i = 0; i < len; i ++)
pre_2[i] = s_3[i];
if(strcmp(pre_1, s_1) != 0 && strcmp(pre_2, s_1))
printf("%s\n", s_1);
else if(strcmp(pre_1, s_2) != 0 && strcmp(pre_1, s_2) != 0)
printf("%s\n", s_2);
else if(strcmp(pre_1, s_3) != 0 && strcmp(pre_1, s_3) != 0)
printf("%s\n", s_3);
printf("%s", pre_2);
return 0;
}
5、字符串的指定位置插入字符
请输入一行数字和字母组合的字符串,在字符串中的所有数字字符前加一个@字符。代码如下,
#include <stdio.h>
int fun(char *s)
{
char t[80];
int i, j;
for(i=0; s[i]; i++) /*将串s拷贝至串t*/
t[i]=s[i];
t[i]='\0';
for(i=0,j=0; t[i]; i++)
/*对于数字字符先写一个@符号,再写该数字字符*/
if(t[i]>='0' && t[i]<='9')
{
s[j++]='@';
s[j++]=t[i];
}
/*对于非数字字符原样写入串s*/
else
s[j++]=t[i];
s[j]='\0'; /*在串s结尾加结束标志*/
return 0;
}
int main()
{
char s[80];
printf ( "请输入一行字符串:" );
scanf ("%s", s); /*输入字符串*/
fun(s);
printf ("输出: %s\n", s); /*输出结果*/
return 0;
}