字符串
回文串
“回文”是指正读反读都能一样的句子,它是古今中外都有的一种修辞方式和文字游戏。你的任务是从键盘输入一个字符串(最大长度<100),判断这个字符串是不是回文,如果是回文,则输出“Yes”, 如果不是, 则输出“No”。
输入描述
输入若干个字符串(最大长度<100)
输出描述
如果是回文,则输出“Yes”, 如果不是, 则输出“No”。
用例输入 1
level 上海自来水来自海上 香港Disney用例输出 1
Yes Yes No提示
汉字编码占三个字节
方法一:通过指针移动
(Dev占用两个字节)
方法二:逆序后,比较是否相等
#include<stdio.h>
#include<string.h>
int main()
{
int i,j,n;
char s1[1000],s2[1000];
while(scanf("%s",s1)!=EOF)
{
//memset(s2,0,1000);
n=strlen(s1);
i=0;
j=n-1;
while(i<n)
{
//英文
if(s1[j]>0)
{
s2[i]=s1[j];
i++;
j--;
}
else //汉字占三个字节
{
s2[i]=s1[j-2];
s2[i+1]=s1[j-1];
s2[i+2]=s1[j];
i=i+3;
j=j-3;
}
}
s2[n]='\0';
if(strcmp(s1,s2) ==0)
{
printf("Yes\n");
}
else
{
printf("No\n");
}
}
return 0;
}
统计字符
统计一个给定字符串中指定的字符出现的次数
输入描述
测试输入包含若干测试用例,每个测试用例包含2行,第1行为一个长度不超过5的字符串,第2行为一个长度不超过80的字符串。注意这里的字符串包含空格,即空格也可能是要求被统计的字符之一。当读到’#'时输入结束,相应的结果不要输出。
输出描述
对每个测试用例,统计第1行中字符串的每个字符在第2行字符串中出现的次数,按如下格式输出:其中ci是第1行中第i个字符,ni是ci出现的次数。
用例输入 1
I THIS IS A TEST i ng this is a long test string #用例输出 1
I 2 i 3 5 n 2 g 2
#include <stdio.h>
#include <string.h>
int main()
{
char s1[6] = {0};
char s2[81] = {0};
int count[5] = {0};
int i, j, len1, len2;
gets(s1);
while(strcmp(s1, "#")!=0) //输入#结束
{
gets(s2);
len1 = strlen(s1);
len2 = strlen(s2);
for (i=0; i<len1; i++) //对于s1中的每个字符
{
for (j=0; j<len2; j++) //在s2中查找与s1[i]相等的字符
{
if (s1[i] == s2[j])
count[i]++; //统计s1中字符的个数
}
}
for (i=0; i<len1; i++)
printf("%c %d\n", s1[i], count[i]);
memset(count, 0, sizeof(count)); //count计数器重新初始化为0
gets(s1);
}
return 0;
}
首字母变大写
输入一个英文句子,将每个单词的第一个字母改成大写字母。
输入描述
输入数据包含多个测试实例,每个测试实例是一个长度不超过100的英文句子,占一行。
输出描述
请输出按照要求改写后的英文句子。
用例输入 1
i like acm i want to get an accepted用例输出 1
I Like Acm I Want To Get An Accepted提示
也可以使用 ctype.h中的toupper函数:
(如果c为小写英文字母,则返回对应的大写字母;否则返回原来的值。)
先把首字母变大写,再看空格后面的数据
(可以设置标志变量&#x