C语言编程序实现判断输入字符串。。。。。请见问题补充

编程序实现判断输入字符串(仅限26个小写字母)是否“回文”的功能。如果不是“回文”,请统计字符串中各个字符出现的频度。

/*

asdsa

"asdsa"是回文。

a : 2

d : 1

s : 2

Press any key to continue

*/

#include <stdio.h>
#include <string.h>

int Isrev(char *s) {
int i,n = strlen(s);
for(i = 0;i < (n + 1)/2;i++)
if(s[i] != s[n - i - 1])
return 0;
return 1;
}

int main() {
int i,chs[26] = {0};
char s[1024];
gets(s);
if(Isrev(s)) printf("\"%s\"是回文。\n",s);
else printf("\"%s\"不是回文。\n",s);
for(i = 0; s[i]; ++i) {
if(s[i] >= 'a' && s[i] <= 'z')
++chs[s[i] - 'a'];
}
for(i = 0; i < 26; ++i)
if(chs[i]) printf("%c : %d\n",'a' + i,chs[i]);
return 0;
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-05-29
#include <stdio.h>
#include <string.h>

int foo(const char *s)
{
int i;
int l = strlen(s);

for (i = 0, l -= 1; i < l; i++, l--)
if (s[i] != s[l])
return 0;
return 1;
}

int main(void)
{
char s[128], a[26] = {0};
int i = 0;

gets(s);

if (foo(s)) {
puts("yes");
return 0;
}

puts("no");
for (i = 0; i < strlen(s); i++)
a[s[i] - 'a']++;

for (i = 0; i < 26; i++)
if (a[i])
printf("%c: %d\n", i + 'a', a[i]);

return 0;
}

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网