C语言程序设计-字符串处理
第一题:回文数判断
问题描述】
回文是正读和倒读都一样的句子。读入一个最大长度不超过50个字符的句子,判断其是否是回文。
【输入形式】
输入一个最大长度不超过50个字符的句子
【输出形式】
Yes/No
【输入样例】
abcba
【输出样例】
Yes
【样例说明】
输入abcba,判断出它是回文。
#include
#include
#include
int main()
{
char str[50];
int i,j,n;
gets(str);
//printf("%s",str);
n = strlen(str);
for(i=0,j=n-1;i
if(str[i] != str[j])
break;
}
if(i
printf("No");
}else{
printf("Yes");
}
return 0;
}
解释:
基本思路就是遍历字符数组,从前往后与从后往前的字符进行的对比;
结束条件是字符不相等时,跳出循环;
判断i与j的大小关系即可;
第二题:求两个字符串的差集
问题描述】要求计算A-B。A和B都是字符串 —即从字符串A中把字符串B所包含的字符全删掉,剩下的字符组成的就是字符串A-B。
【输入形式】输入在2行中,先后给出字符串A和B。两字符串的长度都不超过104,并且保证每个字符串都是由可见的ASCII码和空白字符组成,最后以换行符结束。
【输出形式】
在一行中打印出A-B的结果字符串,如果 A-B为空串,则打印一空行。
【样例输入】
I love GPLT! It's a fun game!
aeiou
【样例输出】
I lv GPLT! It's fn gm!
#include
#include
int main()
{
char str1[1001];
char str2[1001];
char ch[1001];
int i,count=0;
gets(str1);
gets(str2);
int n=strlen(str1);
for(i=0;i
{
//如果str1中的不在str2中,则存储
if(strchr(str2,str1[i])==NULL)
ch[count++]=str1[i];
}
printf("%s",ch);
return 0;
}
解释:
首先定义了两个字符串;
判断长的字符数组在短的字符数组中是否存在;
我们使用的函数时strchr,如果没有找到,则返回NUll;
所以我们可以写成strchr(str2,str1[i])&