注册 登录
编程论坛 C++教室

求助一道linfair公司面试题!要求用C++编写

单调黑白 发布于 2007-10-05 19:40, 1738 次点击

题目如下:
若一个字符串在中间分开后,左边与右边的反转是相同,那就是对称文字。
请写一个简单的程序函数,回传输入的字符串是否对称。
例:abcdedcba就是对称文字
21 回复
#2
浅色的回忆2007-10-05 19:42
这道题好像在新人区见过.
#3
DieHeart2007-10-05 19:48
一般是这样:
人是怎么推导的,就让计算机怎么实现就可以的
#4
Black_smart2007-10-05 21:51
我写了一个方法。思路:比较第一个元素与最后一个元素是否相同,若相同,则比较第二个元素和倒数第二个,如此循环:
[CODE]#include<iostream>
#include<cstddef>
using namespace std;
bool checkstring(char a[]);
int main()
{
const int n=80;
char array[n];
cout<<"请输入字符串:\n";
cin>>array;
if(checkstring(array))
cout<<"该字符串对称\n";
else
cout<<"该字符串不对称\n";
return 0;
}
bool checkstring(char a[])
{
int i=0,j,k;
j=strlen(a)-1;
k=strlen(a)/2;
for(i=0;i<k;i++,j--)
if(a[i]!=a[j])
return false;
return true;
}[/CODE]

[此贴子已经被作者于2007-10-6 0:44:38编辑过]

#5
aipb20072007-10-05 23:22
ls的代码有bug哦

i<=j/2
#6
leeco2007-10-05 23:55

这公司出的面试题太“水仙花”了,比“水仙花”还简单。

#7
Black_smart2007-10-06 00:12
   额,多加了一次,已修正。
#8
aipb20072007-10-06 00:21
以下是引用Black_smart在2007-10-6 0:12:39的发言:
额,多加了一次,已修正。

没改到,j是在变化的,每次都要判断i<=j/2,
注定有一段字符没有检查。

#9
Black_smart2007-10-06 00:46
    汗一个,没有考虑到,多加了一个变量。
#10
csmenglei9512007-10-06 20:25

#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
char b[100];
int i;
char *p=new char;
char *m=new char;
cout<<"please enter the numbers"<<endl;
cin>>b;
p=b;
for(i=0;i<strlen(p);i++)
m[i]=p[strlen(p)-i-1];
if(strcmp(p,m)==0)
cout<<"yes"<<endl;
else
cout<<"no"<<endl;
return 0;
}
我些了这个
但是这个程序运行结果是错的,对称文字都说不是;
想了很长时间想不出来;
哪位能指点下,或许我的思路有问题


[此贴子已经被作者于2007-10-6 20:26:49编辑过]

#11
aipb2OO72007-10-06 22:00
char *m=new char //m为指向字符的指针
m[i]


???这样有可能对吗???
#12
coachard2007-10-06 22:15
公司真的能面试这种题?
#13
reedleaf2007-10-07 16:23
写了一段代码,VC6.0调试通过。不足之处请指教。

bool IsHuiWen(const char* str)
{
const char *front,*rear;
rear=str+strlen(str)-1;
front=str;
while(*front==*rear)
{
if(front<rear)
{
front++;
rear--;
}
else
{
return true;
}
}
return false;
}
#14
coding2007-10-07 17:55

此题已经给啦答案

#15
zkkpkk2007-10-08 17:31
真的公司的题?对即将到来的“找工作运动”有点燃信心啦
#16
风之梦2007-10-08 20:12

这是哪个公司呀?我明天就退学去应聘

#17
exqus2007-10-09 16:46
for(i=0;i<strlen(p);i++)
m[i]=p[strlen(p)-i-1];
m[strlen(p)]='\0';//加上字符串结束
#18
csmenglei9512007-10-09 18:46

thank step 17

#19
china25qd2007-10-09 19:55
这不是野比的70道编程题里的么?
#20
wuhaofei2007-10-10 12:28
不才写了一个
#include<iostream>
#include<string>
using namespace std;
bool checkstring(string s)
{
char *p,*q;
p=s.begin();
q=s.end()-1;
while (p<=q)
{
if (*p==*q)
{p++;q--;}
else
return false;
}
return true;
}
int main()
{
string str;
cin>>str;
if (checkstring(str))
cout<<"该字符串对称\n";
else
cout<<"该字符串不对称\n";
return 0;
}
#21
jack_sqh2007-10-10 14:09
#include<iostream.h>
#include<string.h>
int main(){
const int length=100;
char s[length]=" ";
cout<<"input the string:\n";
cin.getline(s,length,'\n');
int i=strlen(s);
for(int m=0;m<i/2;m++)
if(s[m]!=s[i-m-1]){
cout<<s<<"不是对称的"<<endl;
return 0;
}
cout<<s<<"是对称的"<<endl;
return 0;
}
#22
永夜的极光2007-10-10 14:28
linfair公司是什么公司,出这么简单的题目?
1