| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2530 人关注过本帖
标题:C++里如果忽略大小写问题
只看楼主 加入收藏
迷途小羔羊
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2008-11-5
收藏
 问题点数:0 回复次数:10 
C++里如果忽略大小写问题
#include <iostream>
#include <cstring>
using namesoace std;

bool isPalindrome(const char *);

int main() {
  cout << "Enter a string:";
  char s[80];
  cin.getline(s, 80);
if(isPalindrome(s))
    cout << s << " is a palindrome" << endl;
else
    cout << s << " is not a palindrome" << endl;

return 0;
}

bool isPalindrome(const char * const s)
{
 int low = 0;
 int high = strlen(s) - 1;

while (low < high)
{
  if (s[low] != s[high])
      return false;
  low++;
  high--;
}

return true;
}

这是我写的程式,比如输入abccba,这个就是palindrom(指顺读和倒读都一样的词语). 但是如果输入Abccba,由于第一个是大写A,所以方程会认定不是palindrome.要如何改才可以无视大小写呢? 谢谢
搜索更多相关主题的帖子: 大小写 
2008-11-06 01:06
ronaldowsy
Rank: 1
等 级:新手上路
帖 子:68
专家分:0
注 册:2008-10-20
收藏
得分:0 
#include <iostream>
#include <cstring>
using namespace std;

bool isPalindrome(const char *);

int main()
{
    cout << "Enter a string:";
    char s[80];
    cin>>s;
    if(s[0]>=65 && s[0]<=90)
    {
        s[0]+=32;
    }
    if(isPalindrome(s))
    cout << s << " is a palindrome" << endl;
    else
    cout << s << " is not a palindrome" << endl;
    return 0;
}

bool isPalindrome(const char * const s)
{
    int low = 0;
    int high = strlen(s) - 1;

    while (low < high)
    {
      if (s[low] != s[high])
          return false;
      low++;
      high--;
    }

    return true;
}
搞定了朋友
2008-11-06 02:17
迷途小羔羊
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2008-11-5
收藏
得分:0 
这样是可以搞定第一个字母~~但是如果第二个字母是大写的话~又不对了。
应该把if(s[0]>=65 && s[0]<=90)
    {
        s[0]+=32;
    }
这个怎么改才可以无论哪里是大写都可以转成小写呢?

谢谢阿!
2008-11-06 04:24
rustleer
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2008-11-4
收藏
得分:0 
那就在:if(s[0]>=65 && s[0]<=90)
    {
        s[0]+=32;
    }前加一个for循环啊,这样就能解决每个字母啦,如下:
#include <iostream>
#include <cstring>
using namespace std;

bool isPalindrome(const char *);

int main()
{
    cout << "Enter a string:";
    char s[80];
    cin>>s;
    for(int i=0;i<80;i++)
    if(s[i]>=65 && s[i]<=90)
    {
        s[i]+=32;
    }
    
    if(isPalindrome(s))
    cout << s << " is a palindrome" << endl;
    else
    cout << s << " is not a palindrome" << endl;
    return 0;
}

bool isPalindrome(const char * const s)
{
    int low = 0;
    int high = strlen(s) - 1;

    while (low < high)
    {
      if (s[low] != s[high])
          return false;
      low++;
      high--;
    }

    return true;
}
2008-11-06 08:27
zxf12604
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2008-11-3
收藏
得分:0 
using namesoace std;

这写错了吧
2008-11-06 08:58
迷途小羔羊
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2008-11-5
收藏
得分:0 
谢谢阿~~太感激大家的帮忙了
2008-11-06 09:44
zxf12604
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2008-11-3
收藏
得分:0 
#include<iostream>
using namespace std;
void main(){
    char a[10];
    cout<<"输入数据:"<<'\n';
    cin.getline(a, 10);
   
    int n=strlen(a);
    
    
    cout<<n<<'\n';
    for(int i=0;i<n;i++)
    {
        if (a[i]>=65 && a[i]<=90)
            a[i]+=32;
    }
    

    bool flag=1;
    for(int j=0;j<=n-1-j;j++)
    {
        if(a[j]!=a[n-1-j])
        {    flag=0;

            break;
        }
        
    }
    if(flag)
        cout<<"the same"<<'\n';

    else
        cout<<"not!"<<'\n';
}
2008-11-06 10:03
ronaldowsy
Rank: 1
等 级:新手上路
帖 子:68
专家分:0
注 册:2008-10-20
收藏
得分:0 
不用我回答已经有高手帮你搞定了吧!加一个FOR循环就搞定了!
2008-11-06 11:39
安徽U阿朱
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2008-4-10
收藏
得分:0 
楼上的办法是能改变问题,但我请问如果想保留'A'而不是改成'a‘,那么个人觉得就需要改变,可以只判断,不做修改。
2008-11-08 15:39
tfg0116
Rank: 1
等 级:新手上路
帖 子:44
专家分:0
注 册:2008-10-9
收藏
得分:0 
#include <iostream>
#include <cstring>
using namesoace std;

bool isPalindrome(const char *);

int main() {
  cout << "Enter a string:";
  char s[80];
  cin.getline(s, 80);
if(isPalindrome(s))
    cout << s << " is a palindrome" << endl;
else
    cout << s << " is not a palindrome" << endl;

return 0;
}

bool isPalindrome(const char * const s)
{
int low = 0;
int high = strlen(s) - 1;

while (low < high)
{
  if (s[low] != s[high])//改为if(toupper(s[low]) != toupper(s[high]))就ok了
      return false;
  low++;
  high--;
}

return true;
}
2008-11-08 18:21
快速回复:C++里如果忽略大小写问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.026380 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved