试试看啊:)有人认为很简单吧 可惜我做错了
68 个解决方案
#1
做一个仿字符串的类也不行吗?
#2
#include <stdio.h>
#include <string.h>
bool f(char *s)
{
int j = strlen(s);
int middle = 0;
int c = 0;
if(j%2)
middle = j/2 + 1;
else
middle = j/2;
for(; c<j; c++)
if(s[c] != s[j - c -1])
return false;
return true;
}
int main(int argc, char* argv[])
{
int i = 0;
printf("input number:\n");
scanf("%d", &i);
char s[10];
sprintf(s, "%d", i);
if(f(s))
printf("yes\n");
else
printf("no\n");
return 0;
}
#include <string.h>
bool f(char *s)
{
int j = strlen(s);
int middle = 0;
int c = 0;
if(j%2)
middle = j/2 + 1;
else
middle = j/2;
for(; c<j; c++)
if(s[c] != s[j - c -1])
return false;
return true;
}
int main(int argc, char* argv[])
{
int i = 0;
printf("input number:\n");
scanf("%d", &i);
char s[10];
sprintf(s, "%d", i);
if(f(s))
printf("yes\n");
else
printf("no\n");
return 0;
}
#3
不能用字符串库函数
------------------
不好意思,没有看到这个!
------------------
不好意思,没有看到这个!
#4
楼主可是漂亮的研究生哦!
#5
UPCC(杂食动物) ( ) 信誉:118 2005-03-09 20:21:00 得分: 0
楼主可是漂亮的研究生哦!
真得假得?
吼吼
楼主可是漂亮的研究生哦!
真得假得?
吼吼
#6
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
char str[100], *start=str, *end;
int len;
char tab[][20]={"It is.\n\n","It's Not.\n\n"};
while(scanf("%s", str)!=EOF)
{
start = end = str;
while(*end++);
len = (int)end-(int)start-1;
end-=2;
while((*start==*end) && (start<=end))
{
++start;
--end;
}
printf("%s", tab[start<end]);
}
system("PAUSE");
return 0;
}
#include <stdlib.h>
int main(int argc, char *argv[])
{
char str[100], *start=str, *end;
int len;
char tab[][20]={"It is.\n\n","It's Not.\n\n"};
while(scanf("%s", str)!=EOF)
{
start = end = str;
while(*end++);
len = (int)end-(int)start-1;
end-=2;
while((*start==*end) && (start<=end))
{
++start;
--end;
}
printf("%s", tab[start<end]);
}
system("PAUSE");
return 0;
}
#7
楼主可是漂亮的研究生哦!
~~~~~~~~~~~~~~
研究生可能会做错这个题目?
存在可能性吗?
~~~~~~~~~~~~~~
研究生可能会做错这个题目?
存在可能性吗?
#8
楼主前几天发了个帖子说得很清楚,研究生,问是否去华为合适!!!
你可以搜索看看!而且也不简单了,你看到“不能用字符串库函数”,看看你自己用了没有先……
你可以搜索看看!而且也不简单了,你看到“不能用字符串库函数”,看看你自己用了没有先……
#9
#include <iostream>
#include <cstdlib>
#include <string>
#include <boost/regex.hpp>
using namespace std;
using namespace boost;
bool foobar( int a )
{
int b[ 4 * sizeof( int ) ] , i = 0 , j;
if( a <= 0 ) return !a;
while( a ) b[i++] = a % 10 , a /= 10;
for( j = 0 , --i; j < i && b[i] == b[j] ; ++j , --i );
return b[i] == b[j];
}
bool foobar( const char* s )
{
RegEx regex( "\\s*-?\\d+\\s*" );
if( !regex.Match( s ) ) return false;
return foobar( atoi( s ) );
}
int main( int argc , char* argv[] )
{
if( argc == 1 )
{
string snum ; int num;
cout << "input a number : " << flush;
cin >> snum;
cout << snum << " : " << foobar( snum.c_str() ) << endl;
}
else for( int i = 1; i < argc; ++i )
{
cout << argv[i] << " : " << foobar( argv[i] ) << endl;
}
system( "pause" );
}
#include <cstdlib>
#include <string>
#include <boost/regex.hpp>
using namespace std;
using namespace boost;
bool foobar( int a )
{
int b[ 4 * sizeof( int ) ] , i = 0 , j;
if( a <= 0 ) return !a;
while( a ) b[i++] = a % 10 , a /= 10;
for( j = 0 , --i; j < i && b[i] == b[j] ; ++j , --i );
return b[i] == b[j];
}
bool foobar( const char* s )
{
RegEx regex( "\\s*-?\\d+\\s*" );
if( !regex.Match( s ) ) return false;
return foobar( atoi( s ) );
}
int main( int argc , char* argv[] )
{
if( argc == 1 )
{
string snum ; int num;
cout << "input a number : " << flush;
cin >> snum;
cout << snum << " : " << foobar( snum.c_str() ) << endl;
}
else for( int i = 1; i < argc; ++i )
{
cout << argv[i] << " : " << foobar( argv[i] ) << endl;
}
system( "pause" );
}
#10
非递归方法:
template< typename T >
bool IsRevNum( const T& Num )
{
int nUnit = 1; // used for picking up the digit in highest place
T n = Num;
while( n /= 10 ) nUnit *= 10;
n = Num;
bool bIsRevNum = true;
T Highest, Lowest;
while( bIsRevNum && n )
{
Highest = n / nUnit; // pick up the highest place digit
Lowest = n % 10; // pick up the lowest place digit
if( Highest == Lowest )
{
n -= Highest * nUnit; // get rid of highest didigt
n /= 10; // get rid of lowest digit
nUnit /= 100;
}
else
bIsRevNum = false;
}
return bIsRevNum;
}
template< typename T >
bool IsRevNum( const T& Num )
{
int nUnit = 1; // used for picking up the digit in highest place
T n = Num;
while( n /= 10 ) nUnit *= 10;
n = Num;
bool bIsRevNum = true;
T Highest, Lowest;
while( bIsRevNum && n )
{
Highest = n / nUnit; // pick up the highest place digit
Lowest = n % 10; // pick up the lowest place digit
if( Highest == Lowest )
{
n -= Highest * nUnit; // get rid of highest didigt
n /= 10; // get rid of lowest digit
nUnit /= 100;
}
else
bIsRevNum = false;
}
return bIsRevNum;
}
#11
bzCpp:
这种方式刚才我在洗澡的时候也想过,但觉得不比这样麻烦的,好象我看过这样的离子,是使用取反或者以为移位的,马上就解决了!我现在在回忆中。。。。
这种方式刚才我在洗澡的时候也想过,但觉得不比这样麻烦的,好象我看过这样的离子,是使用取反或者以为移位的,马上就解决了!我现在在回忆中。。。。
#12
不好,
我用了scanf("%s",..);
还有printf( );
还有system( );
别的函数就没有了吧。
不知道算不算字符串函数。
如果输入的数比如说是
1234567891011110198765432112345678910111101987654321
不可能用整形了吧,
只能用字符串了
我用了scanf("%s",..);
还有printf( );
还有system( );
别的函数就没有了吧。
不知道算不算字符串函数。
如果输入的数比如说是
1234567891011110198765432112345678910111101987654321
不可能用整形了吧,
只能用字符串了
#13
UPCC(杂食动物) :
已经很简单了啊,一共才5行代码啊,效率也还好啊O(ln(N)),感觉取反或移位应该很难。
已经很简单了啊,一共才5行代码啊,效率也还好啊O(ln(N)),感觉取反或移位应该很难。
#14
#include<stdio.h>
void main()
{
char ch;
char str[10];
char *s=str;
char *t=str;
int flag=0;
printf("input a integer:\n");
scanf("%s",str);
while(ch=*s)
{
if(ch<'0' || ch>'9')
{
printf("Wrong input");
return;
}
s++;
}
s--;
while(s>t)
{
if(*s!=*str)
flag=1;
s--;
t++;
}
if(flag)
printf("NO");
else
printf("YES");
return;
}
void main()
{
char ch;
char str[10];
char *s=str;
char *t=str;
int flag=0;
printf("input a integer:\n");
scanf("%s",str);
while(ch=*s)
{
if(ch<'0' || ch>'9')
{
printf("Wrong input");
return;
}
s++;
}
s--;
while(s>t)
{
if(*s!=*str)
flag=1;
s--;
t++;
}
if(flag)
printf("NO");
else
printf("YES");
return;
}
#15
bzCpp:
帖子一上网页看起来就比较多!呵呵,我看别人代码的时候总喜欢帖到vc上看!
帖子一上网页看起来就比较多!呵呵,我看别人代码的时候总喜欢帖到vc上看!
#16
哪贴一个短的,其它的只是用来输入并判断输入是否合法地嘛,咔咔:
bool foobar( int a )
{
int b[ 4 * sizeof( int ) ] , i = 0 , j;
if( a <= 0 ) return !a;
while( a ) b[i++] = a % 10 , a /= 10;
for( j = 0 , --i; j < i && b[i] == b[j] ; ++j , --i );
return b[i] == b[j];
}
bool foobar( int a )
{
int b[ 4 * sizeof( int ) ] , i = 0 , j;
if( a <= 0 ) return !a;
while( a ) b[i++] = a % 10 , a /= 10;
for( j = 0 , --i; j < i && b[i] == b[j] ; ++j , --i );
return b[i] == b[j];
}
#17
试一下,我不知道负数是不是对称数,还有初始化多少空间接收输入字符串,特郁闷
#include <stdio.h>
bool isValid(char * c,int length){
int beg=0,end=length-1;
for(;c[beg]==c[end]&&beg<end;beg++,end--);
return c[beg]==c[end];
}
int main(){
char in[50];
int length=0;
do{
printf("input:");
scanf("%s",&in);
while(in[length]>='0'&&in[length]<='9')length++;
if(in[length]!='\0'){
length=0;
continue;
}else{
break;
}
}while(true);
printf("%s",isValid(in,length)==true?"OK":"KO");
return 0;
}
#include <stdio.h>
bool isValid(char * c,int length){
int beg=0,end=length-1;
for(;c[beg]==c[end]&&beg<end;beg++,end--);
return c[beg]==c[end];
}
int main(){
char in[50];
int length=0;
do{
printf("input:");
scanf("%s",&in);
while(in[length]>='0'&&in[length]<='9')length++;
if(in[length]!='\0'){
length=0;
continue;
}else{
break;
}
}while(true);
printf("%s",isValid(in,length)==true?"OK":"KO");
return 0;
}
#18
负数当然不是了,
那个负号在后面不会出现第二次
那个负号在后面不会出现第二次
#19
bool test(char * input)
{
char * p1, * p2;
p1 = input;
p2 = input;
int size = 0;
while(*p1++)size++;
for(int i=0;i<size/2;i++)
{
if(input[size-i-1] != p2[i])
{
return false;
}
}
return true;
}
{
char * p1, * p2;
p1 = input;
p2 = input;
int size = 0;
while(*p1++)size++;
for(int i=0;i<size/2;i++)
{
if(input[size-i-1] != p2[i])
{
return false;
}
}
return true;
}
#20
。。。。。。。。。。。
up!
up!
#21
先读去长度,在取中点,直接比较中点两边是否全相同不就得了
嘿嘿
嘿嘿
#22
回文算法
#include<stdio.h>
#include<malloc.h>
int HuiWen(char *p,int len)
{
for(int i = 0;i<len/2;i++)
{
if(p[i]!=p[len-1-i]) return 0;
}
return 1;
}
void main()
{
char *p;int n;
printf("please input the length of the string:\n");
scanf("%d",&n);
p = (char*) malloc(n+1);
printf("please input the string:\n");
gets(p);
if(HuiWen(*p,n))
{printf("%s is HuiWen");}
else
{printf("Not");}
}
#include<stdio.h>
#include<malloc.h>
int HuiWen(char *p,int len)
{
for(int i = 0;i<len/2;i++)
{
if(p[i]!=p[len-1-i]) return 0;
}
return 1;
}
void main()
{
char *p;int n;
printf("please input the length of the string:\n");
scanf("%d",&n);
p = (char*) malloc(n+1);
printf("please input the string:\n");
gets(p);
if(HuiWen(*p,n))
{printf("%s is HuiWen");}
else
{printf("Not");}
}
#23
用堆栈和队列
bool SymStringsMatch()
//P24-3.17,严蔚敏、吴伟民,《C语言版数据结构题集》,1999.2
{
SqStack S;
SqQueue Q;
SElemType se;
QElemType qe;
char c;
bool bRes = false;
InitStack(S);
InitQueue(Q);
cout << "Input Symmetric or Asymmetric string:" << endl;
c = getchar();
while (c != '@' && c != '&') {Push(S, c); c = getchar();}
if (c == '&')
{
c = getchar();
while (c != '@') {EnQueue(Q, c); c = getchar();}
while (!StackEmpty(S) && !QueueEmpty(Q))
{
Pop(S, se); DeQueue(Q, qe);
if (se != qe) break;
}
if (StackEmpty(S) && QueueEmpty(Q)) bRes = true;
}
return bRes;
}
bool SymStringsMatch()
//P24-3.17,严蔚敏、吴伟民,《C语言版数据结构题集》,1999.2
{
SqStack S;
SqQueue Q;
SElemType se;
QElemType qe;
char c;
bool bRes = false;
InitStack(S);
InitQueue(Q);
cout << "Input Symmetric or Asymmetric string:" << endl;
c = getchar();
while (c != '@' && c != '&') {Push(S, c); c = getchar();}
if (c == '&')
{
c = getchar();
while (c != '@') {EnQueue(Q, c); c = getchar();}
while (!StackEmpty(S) && !QueueEmpty(Q))
{
Pop(S, se); DeQueue(Q, qe);
if (se != qe) break;
}
if (StackEmpty(S) && QueueEmpty(Q)) bRes = true;
}
return bRes;
}
#24
bool isvalid(const char *str)
{
char *head = str;
char *tail = str;
// 跳到最后
while (*tail) ++tail;
// 比较
while (*head++ == *tail--) ;
//
return (head > tail);
}
{
char *head = str;
char *tail = str;
// 跳到最后
while (*tail) ++tail;
// 比较
while (*head++ == *tail--) ;
//
return (head > tail);
}
#25
写错了,在帖
int isvalid(const char *str)
{
char *head = str;
char *tail = str;
// 跳到最后
while (*tail) ++tail;
//
while ( (*head == *tail) && (*head) )
{
// 校验数字
if ( '9' < *head || *head < '0') return false;
if (head == tail) return true;
++head;
// 相差1
if ((*head - *tail) == 1)
--tail;
else
return false;
}
//
return false;
}
int isvalid(const char *str)
{
char *head = str;
char *tail = str;
// 跳到最后
while (*tail) ++tail;
//
while ( (*head == *tail) && (*head) )
{
// 校验数字
if ( '9' < *head || *head < '0') return false;
if (head == tail) return true;
++head;
// 相差1
if ((*head - *tail) == 1)
--tail;
else
return false;
}
//
return false;
}
#26
bzCpp 的方法好
虽然有的没有用库 但是我不知道题目的意思是不是只能把它当整形,比如实参来自一个整数。否则的话123321与 abccba没有区别
其实可以先作为整形输入,再判断位数(这个不难,跟10的幂比较大小),比如得位数n
用n/(10的n-1次幂) 得最高位数字数值。n--
比较即可
效率我觉得比较高。
虽然有的没有用库 但是我不知道题目的意思是不是只能把它当整形,比如实参来自一个整数。否则的话123321与 abccba没有区别
其实可以先作为整形输入,再判断位数(这个不难,跟10的幂比较大小),比如得位数n
用n/(10的n-1次幂) 得最高位数字数值。n--
比较即可
效率我觉得比较高。
#27
用C语言可实现如下:
#define N 100 /*数组的大小,可根据输入位数的大小调节*/
main()
{ char a[N];int i,j,n,flag=0;
scanf("%s",a);
for(i=0;a[i]!='\0';i++); /*统计输入数字的位数*/
n=i; /*用n表示输入数字的位数*/
for(i=0,j=n-1;i<n/2;i++,j--) /*用一个循环,使数字的头尾分别相等,用变量flag作为标志*/
if(a[i]!=a[j])
{ flag=1; break; }
printf("%s",a);
if(flag==0) printf("是对称数\n");
else printf("不是对称数\n");
}
#define N 100 /*数组的大小,可根据输入位数的大小调节*/
main()
{ char a[N];int i,j,n,flag=0;
scanf("%s",a);
for(i=0;a[i]!='\0';i++); /*统计输入数字的位数*/
n=i; /*用n表示输入数字的位数*/
for(i=0,j=n-1;i<n/2;i++,j--) /*用一个循环,使数字的头尾分别相等,用变量flag作为标志*/
if(a[i]!=a[j])
{ flag=1; break; }
printf("%s",a);
if(flag==0) printf("是对称数\n");
else printf("不是对称数\n");
}
#28
太晚了,要睡觉了,有时间帮纠正纠正,算法烂死了,是个傻叉算法,没想到还不对,索引也有误,导致运行错误,正是不能活了~~
基本思路是这样的,MyStr将一个数弄成单个数组成的数组,如int* p = new int[3]; *p = 1;*(p+1)=2,*(p+3) = 4,其中124这个数断成了1,2,4存放在p指向的数组中
#include<assert.h>
#include<iostream>
using namespace std;
class MyStr
{
public:
MyStr(long val)
{
long n = val/10;
long temp = 0;
long n1 = n;
long val1 = val;
static int count = 0;
for(long i=0; i<=n; i++)
{
if( ( temp = (val-10*i) ) < 10 )
{
count++;
for(int k1=1; k1<=n; k1++)
{
if( Muti(10,k1) > val && Muti(10,k1-1)<= val)
{
val -= Muti(10,k1-1)*temp;
}
}
i = 0;
n /= 10;
}
else
continue;
}
pIntArr = new int[count];
_count = count;
for(long i1=0; i1<=n1; i1++)
{
if( ( temp = (val1 - 10*i1) ) <10 )
{
*(pIntArr++) = temp;
for(int k1=1; k1<=n1; k1++)
{
if( Muti(10,k1) > val1 && Muti(10,k1-1)<= val1)
{
val1 -= Muti(10,k1-1)*temp;
}
}
i1 = 0;
n1 /= 10;
}
else
continue;
}
}
int Count()
{
return _count;
}
static long Muti(long lobj,int n)
{
long result = 1;
for(int k1=0; k1<n; k1++)
result *= lobj;
return result;
}
~MyStr()
{
delete[] pIntArr;
}
int operator[](int index)
{
assert( index>=0 && index < _count);
return *(pIntArr+index);
}
private:
int* pIntArr;
int _count;
};
class Data
{
public:
Data(long val = 0) : mystrObj(val)
{
}
bool IsSymmetry()
{
//int* p = mystrObj.Get();
cout<<mystrObj.Count()<<endl;
if( mystrObj.Count() % 2 == 0 )
return false;
int i = 0;
int j = mystrObj.Count() - 1;
while(1)
{
if(i==j)
break;
if( mystrObj[i++] != mystrObj[j--] )
return false;
}
return true;
}
private:
MyStr mystrObj;
};
void main()
{
Data d(1222);
cout<<d.IsSymmetry()<<endl;
}
基本思路是这样的,MyStr将一个数弄成单个数组成的数组,如int* p = new int[3]; *p = 1;*(p+1)=2,*(p+3) = 4,其中124这个数断成了1,2,4存放在p指向的数组中
#include<assert.h>
#include<iostream>
using namespace std;
class MyStr
{
public:
MyStr(long val)
{
long n = val/10;
long temp = 0;
long n1 = n;
long val1 = val;
static int count = 0;
for(long i=0; i<=n; i++)
{
if( ( temp = (val-10*i) ) < 10 )
{
count++;
for(int k1=1; k1<=n; k1++)
{
if( Muti(10,k1) > val && Muti(10,k1-1)<= val)
{
val -= Muti(10,k1-1)*temp;
}
}
i = 0;
n /= 10;
}
else
continue;
}
pIntArr = new int[count];
_count = count;
for(long i1=0; i1<=n1; i1++)
{
if( ( temp = (val1 - 10*i1) ) <10 )
{
*(pIntArr++) = temp;
for(int k1=1; k1<=n1; k1++)
{
if( Muti(10,k1) > val1 && Muti(10,k1-1)<= val1)
{
val1 -= Muti(10,k1-1)*temp;
}
}
i1 = 0;
n1 /= 10;
}
else
continue;
}
}
int Count()
{
return _count;
}
static long Muti(long lobj,int n)
{
long result = 1;
for(int k1=0; k1<n; k1++)
result *= lobj;
return result;
}
~MyStr()
{
delete[] pIntArr;
}
int operator[](int index)
{
assert( index>=0 && index < _count);
return *(pIntArr+index);
}
private:
int* pIntArr;
int _count;
};
class Data
{
public:
Data(long val = 0) : mystrObj(val)
{
}
bool IsSymmetry()
{
//int* p = mystrObj.Get();
cout<<mystrObj.Count()<<endl;
if( mystrObj.Count() % 2 == 0 )
return false;
int i = 0;
int j = mystrObj.Count() - 1;
while(1)
{
if(i==j)
break;
if( mystrObj[i++] != mystrObj[j--] )
return false;
}
return true;
}
private:
MyStr mystrObj;
};
void main()
{
Data d(1222);
cout<<d.IsSymmetry()<<endl;
}
#29
回复人: UPCC(杂食动物) ( ) 信誉:118
if(j%2)
middle = j/2 + 1;
else
middle = j/2;
for(; c<j; c++)
if(s[c] != s[j - c -1]) //看看这!中间middle都没用上!
return false;
return true;
这段代码有问题没?
if(j%2)
middle = j/2 + 1;
else
middle = j/2;
for(; c<j; c++)
if(s[c] != s[j - c -1]) //看看这!中间middle都没用上!
return false;
return true;
这段代码有问题没?
#30
不知道这段代码行不行,绝对没用库函数的!
int main(int argc,char *argv[])
{
char *r[1]=argv[1]; //将主函数参数做为输入值!
int i=-1;
for(;*r!='/o';++i)
++r;
r=r-i-1;
for(int j=0;j<=i/2;++j) //不管数据长度为偶数还是奇数!
{ //也就是不管i/2的模为0还是1,
if(r[j]!=r[i-j]) //因为我们不用考虑最中间那个数!
return false;
}
return true; //不能用函数库,我不知怎么来输入出比较结果!
}
请大家一起来讨论!
int main(int argc,char *argv[])
{
char *r[1]=argv[1]; //将主函数参数做为输入值!
int i=-1;
for(;*r!='/o';++i)
++r;
r=r-i-1;
for(int j=0;j<=i/2;++j) //不管数据长度为偶数还是奇数!
{ //也就是不管i/2的模为0还是1,
if(r[j]!=r[i-j]) //因为我们不用考虑最中间那个数!
return false;
}
return true; //不能用函数库,我不知怎么来输入出比较结果!
}
请大家一起来讨论!
#31
噢!上面语法有点问题,
大家来修改一下!
大家来修改一下!
#32
很多年没见过TC了,回忆着写一下不知行不行:
void main()
{
char ch[256];
int tatolnum=0;
bool yes=true;
for(;;tatolnum++)
{
ch[tatolnum]=getch();
if(ch[tatolnum]==13)/*回车*/
{
tatolnum--;
break;
}
}
for(int i=0;i<tatolnum/2;i++
{
if(ch[i]!=ch[tatolnum-i])
{
yes=false;
break;
}
}
if(yes)
printf("yes");
else
printf("no");
}
void main()
{
char ch[256];
int tatolnum=0;
bool yes=true;
for(;;tatolnum++)
{
ch[tatolnum]=getch();
if(ch[tatolnum]==13)/*回车*/
{
tatolnum--;
break;
}
}
for(int i=0;i<tatolnum/2;i++
{
if(ch[i]!=ch[tatolnum-i])
{
yes=false;
break;
}
}
if(yes)
printf("yes");
else
printf("no");
}
#33
不是不让用字符串库函数吗,设个指针,逐个把字符串读完,直到‘\0’,读的次数就是字符串长度,不就得到strlen()了吗?
#34
int regard(char * c)
{
int n=0,i=0;
char x;
for(;c!='\0';c++)
{
n++;
x=--c;
}
for(;i<n/2;i++)
{
if(!(* c)^(* x)) return 0;
else
{c++; x--;}
}
return 1
}
用异或的方法会快一点吧
{
int n=0,i=0;
char x;
for(;c!='\0';c++)
{
n++;
x=--c;
}
for(;i<n/2;i++)
{
if(!(* c)^(* x)) return 0;
else
{c++; x--;}
}
return 1
}
用异或的方法会快一点吧
#35
晕倒
为什么都是程序 没有算法
cow cow.......
那起来就是程序
晕倒
,,,
pp的研究生
呀呀
。。。
为什么都是程序 没有算法
cow cow.......
那起来就是程序
晕倒
,,,
pp的研究生
呀呀
。。。
#36
不好意思
char x;改成char * x;
char x;改成char * x;
#37
for(;c!='\0';c++) for(;c!='\0';c++)
{ {
n++; ==> n++
x=--c; }
} x=--c;
{ {
n++; ==> n++
x=--c; }
} x=--c;
#38
算法,把这个数颠导看是不是和原来那个相等。相等就OK了
#39
这个是数据结构里面的例子啊 就用堆栈和队列很容易的啊!
#40
同意楼上的说法
#41
如果连这种题目你都做错,或者没有思路的话,我的建议是转行,做程序员会把你给郁闷死的,超级简单的题目
#42
题是很简单,我想华为的人也不是笨蛋,如何设计一种高效的算法才是本意
#43
看看高手们的回答!
#44
首先谢谢大家的回帖!谢谢你们给我的启发。
回pcboyxhy(-273.15℃):研究生会做错这样的题,有这样的可能性。我就是一个典型。对编程还是一个很糟糕的研究生。
回UPCC(杂食动物) :我不知道我不知道我算不算是一个漂亮的研究生,只是别人说我漂亮。我一直以为漂亮或者美丽不仅仅在于那张脸,还要看这个人是否善良,是不是很有修养,她是不是很受大家喜欢,是不是很有气质,是不是很有内涵。。。人的相貌是父母给的,我们不能改变,但是,有很多因素是我们可以让自己漂亮的,我希望自己变得更好。
这道题是我在最后10分钟做的,因为是最后一道,15分,我用双向链表实现的,些的有些乱,出来后感觉很不好。
刚才看了大家的回帖,得到很多启发,再次谢谢你们!
也许太阳女孩不是一个好的研究生吧,不过两年以后会是,我相信自己!
希望大家给我加油!
回pcboyxhy(-273.15℃):研究生会做错这样的题,有这样的可能性。我就是一个典型。对编程还是一个很糟糕的研究生。
回UPCC(杂食动物) :我不知道我不知道我算不算是一个漂亮的研究生,只是别人说我漂亮。我一直以为漂亮或者美丽不仅仅在于那张脸,还要看这个人是否善良,是不是很有修养,她是不是很受大家喜欢,是不是很有气质,是不是很有内涵。。。人的相貌是父母给的,我们不能改变,但是,有很多因素是我们可以让自己漂亮的,我希望自己变得更好。
这道题是我在最后10分钟做的,因为是最后一道,15分,我用双向链表实现的,些的有些乱,出来后感觉很不好。
刚才看了大家的回帖,得到很多启发,再次谢谢你们!
也许太阳女孩不是一个好的研究生吧,不过两年以后会是,我相信自己!
希望大家给我加油!
#45
楼猪MM应聘华为的什么职位?
#46
好可爱的楼猪MM,
要是让我在宿舍里养这么头猪MM多好阿
要是让我在宿舍里养这么头猪MM多好阿
#47
女人只要不做坏事就已经很PP了,
......................
......................
#48
呵呵,收着,学习~
#49
pcboyxhy(-273.15℃)
好可爱的楼猪MM,
要是让我在宿舍里养这么头猪MM多好阿
------------------
你或许是一个编程高手,或者在某个知名公司担任高职,但是说实话,我觉得你挺可悲的
连对他人起码的尊重都不懂。
如果你觉得一个人不好,你可以保持沉默,但是不要伤害别人的自尊,谢谢
好可爱的楼猪MM,
要是让我在宿舍里养这么头猪MM多好阿
------------------
你或许是一个编程高手,或者在某个知名公司担任高职,但是说实话,我觉得你挺可悲的
连对他人起码的尊重都不懂。
如果你觉得一个人不好,你可以保持沉默,但是不要伤害别人的自尊,谢谢
#50
我当时去华为的笔试也考了这道题.
#1
做一个仿字符串的类也不行吗?
#2
#include <stdio.h>
#include <string.h>
bool f(char *s)
{
int j = strlen(s);
int middle = 0;
int c = 0;
if(j%2)
middle = j/2 + 1;
else
middle = j/2;
for(; c<j; c++)
if(s[c] != s[j - c -1])
return false;
return true;
}
int main(int argc, char* argv[])
{
int i = 0;
printf("input number:\n");
scanf("%d", &i);
char s[10];
sprintf(s, "%d", i);
if(f(s))
printf("yes\n");
else
printf("no\n");
return 0;
}
#include <string.h>
bool f(char *s)
{
int j = strlen(s);
int middle = 0;
int c = 0;
if(j%2)
middle = j/2 + 1;
else
middle = j/2;
for(; c<j; c++)
if(s[c] != s[j - c -1])
return false;
return true;
}
int main(int argc, char* argv[])
{
int i = 0;
printf("input number:\n");
scanf("%d", &i);
char s[10];
sprintf(s, "%d", i);
if(f(s))
printf("yes\n");
else
printf("no\n");
return 0;
}
#3
不能用字符串库函数
------------------
不好意思,没有看到这个!
------------------
不好意思,没有看到这个!
#4
楼主可是漂亮的研究生哦!
#5
UPCC(杂食动物) ( ) 信誉:118 2005-03-09 20:21:00 得分: 0
楼主可是漂亮的研究生哦!
真得假得?
吼吼
楼主可是漂亮的研究生哦!
真得假得?
吼吼
#6
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
char str[100], *start=str, *end;
int len;
char tab[][20]={"It is.\n\n","It's Not.\n\n"};
while(scanf("%s", str)!=EOF)
{
start = end = str;
while(*end++);
len = (int)end-(int)start-1;
end-=2;
while((*start==*end) && (start<=end))
{
++start;
--end;
}
printf("%s", tab[start<end]);
}
system("PAUSE");
return 0;
}
#include <stdlib.h>
int main(int argc, char *argv[])
{
char str[100], *start=str, *end;
int len;
char tab[][20]={"It is.\n\n","It's Not.\n\n"};
while(scanf("%s", str)!=EOF)
{
start = end = str;
while(*end++);
len = (int)end-(int)start-1;
end-=2;
while((*start==*end) && (start<=end))
{
++start;
--end;
}
printf("%s", tab[start<end]);
}
system("PAUSE");
return 0;
}
#7
楼主可是漂亮的研究生哦!
~~~~~~~~~~~~~~
研究生可能会做错这个题目?
存在可能性吗?
~~~~~~~~~~~~~~
研究生可能会做错这个题目?
存在可能性吗?
#8
楼主前几天发了个帖子说得很清楚,研究生,问是否去华为合适!!!
你可以搜索看看!而且也不简单了,你看到“不能用字符串库函数”,看看你自己用了没有先……
你可以搜索看看!而且也不简单了,你看到“不能用字符串库函数”,看看你自己用了没有先……
#9
#include <iostream>
#include <cstdlib>
#include <string>
#include <boost/regex.hpp>
using namespace std;
using namespace boost;
bool foobar( int a )
{
int b[ 4 * sizeof( int ) ] , i = 0 , j;
if( a <= 0 ) return !a;
while( a ) b[i++] = a % 10 , a /= 10;
for( j = 0 , --i; j < i && b[i] == b[j] ; ++j , --i );
return b[i] == b[j];
}
bool foobar( const char* s )
{
RegEx regex( "\\s*-?\\d+\\s*" );
if( !regex.Match( s ) ) return false;
return foobar( atoi( s ) );
}
int main( int argc , char* argv[] )
{
if( argc == 1 )
{
string snum ; int num;
cout << "input a number : " << flush;
cin >> snum;
cout << snum << " : " << foobar( snum.c_str() ) << endl;
}
else for( int i = 1; i < argc; ++i )
{
cout << argv[i] << " : " << foobar( argv[i] ) << endl;
}
system( "pause" );
}
#include <cstdlib>
#include <string>
#include <boost/regex.hpp>
using namespace std;
using namespace boost;
bool foobar( int a )
{
int b[ 4 * sizeof( int ) ] , i = 0 , j;
if( a <= 0 ) return !a;
while( a ) b[i++] = a % 10 , a /= 10;
for( j = 0 , --i; j < i && b[i] == b[j] ; ++j , --i );
return b[i] == b[j];
}
bool foobar( const char* s )
{
RegEx regex( "\\s*-?\\d+\\s*" );
if( !regex.Match( s ) ) return false;
return foobar( atoi( s ) );
}
int main( int argc , char* argv[] )
{
if( argc == 1 )
{
string snum ; int num;
cout << "input a number : " << flush;
cin >> snum;
cout << snum << " : " << foobar( snum.c_str() ) << endl;
}
else for( int i = 1; i < argc; ++i )
{
cout << argv[i] << " : " << foobar( argv[i] ) << endl;
}
system( "pause" );
}
#10
非递归方法:
template< typename T >
bool IsRevNum( const T& Num )
{
int nUnit = 1; // used for picking up the digit in highest place
T n = Num;
while( n /= 10 ) nUnit *= 10;
n = Num;
bool bIsRevNum = true;
T Highest, Lowest;
while( bIsRevNum && n )
{
Highest = n / nUnit; // pick up the highest place digit
Lowest = n % 10; // pick up the lowest place digit
if( Highest == Lowest )
{
n -= Highest * nUnit; // get rid of highest didigt
n /= 10; // get rid of lowest digit
nUnit /= 100;
}
else
bIsRevNum = false;
}
return bIsRevNum;
}
template< typename T >
bool IsRevNum( const T& Num )
{
int nUnit = 1; // used for picking up the digit in highest place
T n = Num;
while( n /= 10 ) nUnit *= 10;
n = Num;
bool bIsRevNum = true;
T Highest, Lowest;
while( bIsRevNum && n )
{
Highest = n / nUnit; // pick up the highest place digit
Lowest = n % 10; // pick up the lowest place digit
if( Highest == Lowest )
{
n -= Highest * nUnit; // get rid of highest didigt
n /= 10; // get rid of lowest digit
nUnit /= 100;
}
else
bIsRevNum = false;
}
return bIsRevNum;
}
#11
bzCpp:
这种方式刚才我在洗澡的时候也想过,但觉得不比这样麻烦的,好象我看过这样的离子,是使用取反或者以为移位的,马上就解决了!我现在在回忆中。。。。
这种方式刚才我在洗澡的时候也想过,但觉得不比这样麻烦的,好象我看过这样的离子,是使用取反或者以为移位的,马上就解决了!我现在在回忆中。。。。
#12
不好,
我用了scanf("%s",..);
还有printf( );
还有system( );
别的函数就没有了吧。
不知道算不算字符串函数。
如果输入的数比如说是
1234567891011110198765432112345678910111101987654321
不可能用整形了吧,
只能用字符串了
我用了scanf("%s",..);
还有printf( );
还有system( );
别的函数就没有了吧。
不知道算不算字符串函数。
如果输入的数比如说是
1234567891011110198765432112345678910111101987654321
不可能用整形了吧,
只能用字符串了
#13
UPCC(杂食动物) :
已经很简单了啊,一共才5行代码啊,效率也还好啊O(ln(N)),感觉取反或移位应该很难。
已经很简单了啊,一共才5行代码啊,效率也还好啊O(ln(N)),感觉取反或移位应该很难。
#14
#include<stdio.h>
void main()
{
char ch;
char str[10];
char *s=str;
char *t=str;
int flag=0;
printf("input a integer:\n");
scanf("%s",str);
while(ch=*s)
{
if(ch<'0' || ch>'9')
{
printf("Wrong input");
return;
}
s++;
}
s--;
while(s>t)
{
if(*s!=*str)
flag=1;
s--;
t++;
}
if(flag)
printf("NO");
else
printf("YES");
return;
}
void main()
{
char ch;
char str[10];
char *s=str;
char *t=str;
int flag=0;
printf("input a integer:\n");
scanf("%s",str);
while(ch=*s)
{
if(ch<'0' || ch>'9')
{
printf("Wrong input");
return;
}
s++;
}
s--;
while(s>t)
{
if(*s!=*str)
flag=1;
s--;
t++;
}
if(flag)
printf("NO");
else
printf("YES");
return;
}
#15
bzCpp:
帖子一上网页看起来就比较多!呵呵,我看别人代码的时候总喜欢帖到vc上看!
帖子一上网页看起来就比较多!呵呵,我看别人代码的时候总喜欢帖到vc上看!
#16
哪贴一个短的,其它的只是用来输入并判断输入是否合法地嘛,咔咔:
bool foobar( int a )
{
int b[ 4 * sizeof( int ) ] , i = 0 , j;
if( a <= 0 ) return !a;
while( a ) b[i++] = a % 10 , a /= 10;
for( j = 0 , --i; j < i && b[i] == b[j] ; ++j , --i );
return b[i] == b[j];
}
bool foobar( int a )
{
int b[ 4 * sizeof( int ) ] , i = 0 , j;
if( a <= 0 ) return !a;
while( a ) b[i++] = a % 10 , a /= 10;
for( j = 0 , --i; j < i && b[i] == b[j] ; ++j , --i );
return b[i] == b[j];
}
#17
试一下,我不知道负数是不是对称数,还有初始化多少空间接收输入字符串,特郁闷
#include <stdio.h>
bool isValid(char * c,int length){
int beg=0,end=length-1;
for(;c[beg]==c[end]&&beg<end;beg++,end--);
return c[beg]==c[end];
}
int main(){
char in[50];
int length=0;
do{
printf("input:");
scanf("%s",&in);
while(in[length]>='0'&&in[length]<='9')length++;
if(in[length]!='\0'){
length=0;
continue;
}else{
break;
}
}while(true);
printf("%s",isValid(in,length)==true?"OK":"KO");
return 0;
}
#include <stdio.h>
bool isValid(char * c,int length){
int beg=0,end=length-1;
for(;c[beg]==c[end]&&beg<end;beg++,end--);
return c[beg]==c[end];
}
int main(){
char in[50];
int length=0;
do{
printf("input:");
scanf("%s",&in);
while(in[length]>='0'&&in[length]<='9')length++;
if(in[length]!='\0'){
length=0;
continue;
}else{
break;
}
}while(true);
printf("%s",isValid(in,length)==true?"OK":"KO");
return 0;
}
#18
负数当然不是了,
那个负号在后面不会出现第二次
那个负号在后面不会出现第二次
#19
bool test(char * input)
{
char * p1, * p2;
p1 = input;
p2 = input;
int size = 0;
while(*p1++)size++;
for(int i=0;i<size/2;i++)
{
if(input[size-i-1] != p2[i])
{
return false;
}
}
return true;
}
{
char * p1, * p2;
p1 = input;
p2 = input;
int size = 0;
while(*p1++)size++;
for(int i=0;i<size/2;i++)
{
if(input[size-i-1] != p2[i])
{
return false;
}
}
return true;
}
#20
。。。。。。。。。。。
up!
up!
#21
先读去长度,在取中点,直接比较中点两边是否全相同不就得了
嘿嘿
嘿嘿
#22
回文算法
#include<stdio.h>
#include<malloc.h>
int HuiWen(char *p,int len)
{
for(int i = 0;i<len/2;i++)
{
if(p[i]!=p[len-1-i]) return 0;
}
return 1;
}
void main()
{
char *p;int n;
printf("please input the length of the string:\n");
scanf("%d",&n);
p = (char*) malloc(n+1);
printf("please input the string:\n");
gets(p);
if(HuiWen(*p,n))
{printf("%s is HuiWen");}
else
{printf("Not");}
}
#include<stdio.h>
#include<malloc.h>
int HuiWen(char *p,int len)
{
for(int i = 0;i<len/2;i++)
{
if(p[i]!=p[len-1-i]) return 0;
}
return 1;
}
void main()
{
char *p;int n;
printf("please input the length of the string:\n");
scanf("%d",&n);
p = (char*) malloc(n+1);
printf("please input the string:\n");
gets(p);
if(HuiWen(*p,n))
{printf("%s is HuiWen");}
else
{printf("Not");}
}
#23
用堆栈和队列
bool SymStringsMatch()
//P24-3.17,严蔚敏、吴伟民,《C语言版数据结构题集》,1999.2
{
SqStack S;
SqQueue Q;
SElemType se;
QElemType qe;
char c;
bool bRes = false;
InitStack(S);
InitQueue(Q);
cout << "Input Symmetric or Asymmetric string:" << endl;
c = getchar();
while (c != '@' && c != '&') {Push(S, c); c = getchar();}
if (c == '&')
{
c = getchar();
while (c != '@') {EnQueue(Q, c); c = getchar();}
while (!StackEmpty(S) && !QueueEmpty(Q))
{
Pop(S, se); DeQueue(Q, qe);
if (se != qe) break;
}
if (StackEmpty(S) && QueueEmpty(Q)) bRes = true;
}
return bRes;
}
bool SymStringsMatch()
//P24-3.17,严蔚敏、吴伟民,《C语言版数据结构题集》,1999.2
{
SqStack S;
SqQueue Q;
SElemType se;
QElemType qe;
char c;
bool bRes = false;
InitStack(S);
InitQueue(Q);
cout << "Input Symmetric or Asymmetric string:" << endl;
c = getchar();
while (c != '@' && c != '&') {Push(S, c); c = getchar();}
if (c == '&')
{
c = getchar();
while (c != '@') {EnQueue(Q, c); c = getchar();}
while (!StackEmpty(S) && !QueueEmpty(Q))
{
Pop(S, se); DeQueue(Q, qe);
if (se != qe) break;
}
if (StackEmpty(S) && QueueEmpty(Q)) bRes = true;
}
return bRes;
}
#24
bool isvalid(const char *str)
{
char *head = str;
char *tail = str;
// 跳到最后
while (*tail) ++tail;
// 比较
while (*head++ == *tail--) ;
//
return (head > tail);
}
{
char *head = str;
char *tail = str;
// 跳到最后
while (*tail) ++tail;
// 比较
while (*head++ == *tail--) ;
//
return (head > tail);
}
#25
写错了,在帖
int isvalid(const char *str)
{
char *head = str;
char *tail = str;
// 跳到最后
while (*tail) ++tail;
//
while ( (*head == *tail) && (*head) )
{
// 校验数字
if ( '9' < *head || *head < '0') return false;
if (head == tail) return true;
++head;
// 相差1
if ((*head - *tail) == 1)
--tail;
else
return false;
}
//
return false;
}
int isvalid(const char *str)
{
char *head = str;
char *tail = str;
// 跳到最后
while (*tail) ++tail;
//
while ( (*head == *tail) && (*head) )
{
// 校验数字
if ( '9' < *head || *head < '0') return false;
if (head == tail) return true;
++head;
// 相差1
if ((*head - *tail) == 1)
--tail;
else
return false;
}
//
return false;
}
#26
bzCpp 的方法好
虽然有的没有用库 但是我不知道题目的意思是不是只能把它当整形,比如实参来自一个整数。否则的话123321与 abccba没有区别
其实可以先作为整形输入,再判断位数(这个不难,跟10的幂比较大小),比如得位数n
用n/(10的n-1次幂) 得最高位数字数值。n--
比较即可
效率我觉得比较高。
虽然有的没有用库 但是我不知道题目的意思是不是只能把它当整形,比如实参来自一个整数。否则的话123321与 abccba没有区别
其实可以先作为整形输入,再判断位数(这个不难,跟10的幂比较大小),比如得位数n
用n/(10的n-1次幂) 得最高位数字数值。n--
比较即可
效率我觉得比较高。
#27
用C语言可实现如下:
#define N 100 /*数组的大小,可根据输入位数的大小调节*/
main()
{ char a[N];int i,j,n,flag=0;
scanf("%s",a);
for(i=0;a[i]!='\0';i++); /*统计输入数字的位数*/
n=i; /*用n表示输入数字的位数*/
for(i=0,j=n-1;i<n/2;i++,j--) /*用一个循环,使数字的头尾分别相等,用变量flag作为标志*/
if(a[i]!=a[j])
{ flag=1; break; }
printf("%s",a);
if(flag==0) printf("是对称数\n");
else printf("不是对称数\n");
}
#define N 100 /*数组的大小,可根据输入位数的大小调节*/
main()
{ char a[N];int i,j,n,flag=0;
scanf("%s",a);
for(i=0;a[i]!='\0';i++); /*统计输入数字的位数*/
n=i; /*用n表示输入数字的位数*/
for(i=0,j=n-1;i<n/2;i++,j--) /*用一个循环,使数字的头尾分别相等,用变量flag作为标志*/
if(a[i]!=a[j])
{ flag=1; break; }
printf("%s",a);
if(flag==0) printf("是对称数\n");
else printf("不是对称数\n");
}
#28
太晚了,要睡觉了,有时间帮纠正纠正,算法烂死了,是个傻叉算法,没想到还不对,索引也有误,导致运行错误,正是不能活了~~
基本思路是这样的,MyStr将一个数弄成单个数组成的数组,如int* p = new int[3]; *p = 1;*(p+1)=2,*(p+3) = 4,其中124这个数断成了1,2,4存放在p指向的数组中
#include<assert.h>
#include<iostream>
using namespace std;
class MyStr
{
public:
MyStr(long val)
{
long n = val/10;
long temp = 0;
long n1 = n;
long val1 = val;
static int count = 0;
for(long i=0; i<=n; i++)
{
if( ( temp = (val-10*i) ) < 10 )
{
count++;
for(int k1=1; k1<=n; k1++)
{
if( Muti(10,k1) > val && Muti(10,k1-1)<= val)
{
val -= Muti(10,k1-1)*temp;
}
}
i = 0;
n /= 10;
}
else
continue;
}
pIntArr = new int[count];
_count = count;
for(long i1=0; i1<=n1; i1++)
{
if( ( temp = (val1 - 10*i1) ) <10 )
{
*(pIntArr++) = temp;
for(int k1=1; k1<=n1; k1++)
{
if( Muti(10,k1) > val1 && Muti(10,k1-1)<= val1)
{
val1 -= Muti(10,k1-1)*temp;
}
}
i1 = 0;
n1 /= 10;
}
else
continue;
}
}
int Count()
{
return _count;
}
static long Muti(long lobj,int n)
{
long result = 1;
for(int k1=0; k1<n; k1++)
result *= lobj;
return result;
}
~MyStr()
{
delete[] pIntArr;
}
int operator[](int index)
{
assert( index>=0 && index < _count);
return *(pIntArr+index);
}
private:
int* pIntArr;
int _count;
};
class Data
{
public:
Data(long val = 0) : mystrObj(val)
{
}
bool IsSymmetry()
{
//int* p = mystrObj.Get();
cout<<mystrObj.Count()<<endl;
if( mystrObj.Count() % 2 == 0 )
return false;
int i = 0;
int j = mystrObj.Count() - 1;
while(1)
{
if(i==j)
break;
if( mystrObj[i++] != mystrObj[j--] )
return false;
}
return true;
}
private:
MyStr mystrObj;
};
void main()
{
Data d(1222);
cout<<d.IsSymmetry()<<endl;
}
基本思路是这样的,MyStr将一个数弄成单个数组成的数组,如int* p = new int[3]; *p = 1;*(p+1)=2,*(p+3) = 4,其中124这个数断成了1,2,4存放在p指向的数组中
#include<assert.h>
#include<iostream>
using namespace std;
class MyStr
{
public:
MyStr(long val)
{
long n = val/10;
long temp = 0;
long n1 = n;
long val1 = val;
static int count = 0;
for(long i=0; i<=n; i++)
{
if( ( temp = (val-10*i) ) < 10 )
{
count++;
for(int k1=1; k1<=n; k1++)
{
if( Muti(10,k1) > val && Muti(10,k1-1)<= val)
{
val -= Muti(10,k1-1)*temp;
}
}
i = 0;
n /= 10;
}
else
continue;
}
pIntArr = new int[count];
_count = count;
for(long i1=0; i1<=n1; i1++)
{
if( ( temp = (val1 - 10*i1) ) <10 )
{
*(pIntArr++) = temp;
for(int k1=1; k1<=n1; k1++)
{
if( Muti(10,k1) > val1 && Muti(10,k1-1)<= val1)
{
val1 -= Muti(10,k1-1)*temp;
}
}
i1 = 0;
n1 /= 10;
}
else
continue;
}
}
int Count()
{
return _count;
}
static long Muti(long lobj,int n)
{
long result = 1;
for(int k1=0; k1<n; k1++)
result *= lobj;
return result;
}
~MyStr()
{
delete[] pIntArr;
}
int operator[](int index)
{
assert( index>=0 && index < _count);
return *(pIntArr+index);
}
private:
int* pIntArr;
int _count;
};
class Data
{
public:
Data(long val = 0) : mystrObj(val)
{
}
bool IsSymmetry()
{
//int* p = mystrObj.Get();
cout<<mystrObj.Count()<<endl;
if( mystrObj.Count() % 2 == 0 )
return false;
int i = 0;
int j = mystrObj.Count() - 1;
while(1)
{
if(i==j)
break;
if( mystrObj[i++] != mystrObj[j--] )
return false;
}
return true;
}
private:
MyStr mystrObj;
};
void main()
{
Data d(1222);
cout<<d.IsSymmetry()<<endl;
}
#29
回复人: UPCC(杂食动物) ( ) 信誉:118
if(j%2)
middle = j/2 + 1;
else
middle = j/2;
for(; c<j; c++)
if(s[c] != s[j - c -1]) //看看这!中间middle都没用上!
return false;
return true;
这段代码有问题没?
if(j%2)
middle = j/2 + 1;
else
middle = j/2;
for(; c<j; c++)
if(s[c] != s[j - c -1]) //看看这!中间middle都没用上!
return false;
return true;
这段代码有问题没?
#30
不知道这段代码行不行,绝对没用库函数的!
int main(int argc,char *argv[])
{
char *r[1]=argv[1]; //将主函数参数做为输入值!
int i=-1;
for(;*r!='/o';++i)
++r;
r=r-i-1;
for(int j=0;j<=i/2;++j) //不管数据长度为偶数还是奇数!
{ //也就是不管i/2的模为0还是1,
if(r[j]!=r[i-j]) //因为我们不用考虑最中间那个数!
return false;
}
return true; //不能用函数库,我不知怎么来输入出比较结果!
}
请大家一起来讨论!
int main(int argc,char *argv[])
{
char *r[1]=argv[1]; //将主函数参数做为输入值!
int i=-1;
for(;*r!='/o';++i)
++r;
r=r-i-1;
for(int j=0;j<=i/2;++j) //不管数据长度为偶数还是奇数!
{ //也就是不管i/2的模为0还是1,
if(r[j]!=r[i-j]) //因为我们不用考虑最中间那个数!
return false;
}
return true; //不能用函数库,我不知怎么来输入出比较结果!
}
请大家一起来讨论!
#31
噢!上面语法有点问题,
大家来修改一下!
大家来修改一下!
#32
很多年没见过TC了,回忆着写一下不知行不行:
void main()
{
char ch[256];
int tatolnum=0;
bool yes=true;
for(;;tatolnum++)
{
ch[tatolnum]=getch();
if(ch[tatolnum]==13)/*回车*/
{
tatolnum--;
break;
}
}
for(int i=0;i<tatolnum/2;i++
{
if(ch[i]!=ch[tatolnum-i])
{
yes=false;
break;
}
}
if(yes)
printf("yes");
else
printf("no");
}
void main()
{
char ch[256];
int tatolnum=0;
bool yes=true;
for(;;tatolnum++)
{
ch[tatolnum]=getch();
if(ch[tatolnum]==13)/*回车*/
{
tatolnum--;
break;
}
}
for(int i=0;i<tatolnum/2;i++
{
if(ch[i]!=ch[tatolnum-i])
{
yes=false;
break;
}
}
if(yes)
printf("yes");
else
printf("no");
}
#33
不是不让用字符串库函数吗,设个指针,逐个把字符串读完,直到‘\0’,读的次数就是字符串长度,不就得到strlen()了吗?
#34
int regard(char * c)
{
int n=0,i=0;
char x;
for(;c!='\0';c++)
{
n++;
x=--c;
}
for(;i<n/2;i++)
{
if(!(* c)^(* x)) return 0;
else
{c++; x--;}
}
return 1
}
用异或的方法会快一点吧
{
int n=0,i=0;
char x;
for(;c!='\0';c++)
{
n++;
x=--c;
}
for(;i<n/2;i++)
{
if(!(* c)^(* x)) return 0;
else
{c++; x--;}
}
return 1
}
用异或的方法会快一点吧
#35
晕倒
为什么都是程序 没有算法
cow cow.......
那起来就是程序
晕倒
,,,
pp的研究生
呀呀
。。。
为什么都是程序 没有算法
cow cow.......
那起来就是程序
晕倒
,,,
pp的研究生
呀呀
。。。
#36
不好意思
char x;改成char * x;
char x;改成char * x;
#37
for(;c!='\0';c++) for(;c!='\0';c++)
{ {
n++; ==> n++
x=--c; }
} x=--c;
{ {
n++; ==> n++
x=--c; }
} x=--c;
#38
算法,把这个数颠导看是不是和原来那个相等。相等就OK了
#39
这个是数据结构里面的例子啊 就用堆栈和队列很容易的啊!
#40
同意楼上的说法
#41
如果连这种题目你都做错,或者没有思路的话,我的建议是转行,做程序员会把你给郁闷死的,超级简单的题目
#42
题是很简单,我想华为的人也不是笨蛋,如何设计一种高效的算法才是本意
#43
看看高手们的回答!
#44
首先谢谢大家的回帖!谢谢你们给我的启发。
回pcboyxhy(-273.15℃):研究生会做错这样的题,有这样的可能性。我就是一个典型。对编程还是一个很糟糕的研究生。
回UPCC(杂食动物) :我不知道我不知道我算不算是一个漂亮的研究生,只是别人说我漂亮。我一直以为漂亮或者美丽不仅仅在于那张脸,还要看这个人是否善良,是不是很有修养,她是不是很受大家喜欢,是不是很有气质,是不是很有内涵。。。人的相貌是父母给的,我们不能改变,但是,有很多因素是我们可以让自己漂亮的,我希望自己变得更好。
这道题是我在最后10分钟做的,因为是最后一道,15分,我用双向链表实现的,些的有些乱,出来后感觉很不好。
刚才看了大家的回帖,得到很多启发,再次谢谢你们!
也许太阳女孩不是一个好的研究生吧,不过两年以后会是,我相信自己!
希望大家给我加油!
回pcboyxhy(-273.15℃):研究生会做错这样的题,有这样的可能性。我就是一个典型。对编程还是一个很糟糕的研究生。
回UPCC(杂食动物) :我不知道我不知道我算不算是一个漂亮的研究生,只是别人说我漂亮。我一直以为漂亮或者美丽不仅仅在于那张脸,还要看这个人是否善良,是不是很有修养,她是不是很受大家喜欢,是不是很有气质,是不是很有内涵。。。人的相貌是父母给的,我们不能改变,但是,有很多因素是我们可以让自己漂亮的,我希望自己变得更好。
这道题是我在最后10分钟做的,因为是最后一道,15分,我用双向链表实现的,些的有些乱,出来后感觉很不好。
刚才看了大家的回帖,得到很多启发,再次谢谢你们!
也许太阳女孩不是一个好的研究生吧,不过两年以后会是,我相信自己!
希望大家给我加油!
#45
楼猪MM应聘华为的什么职位?
#46
好可爱的楼猪MM,
要是让我在宿舍里养这么头猪MM多好阿
要是让我在宿舍里养这么头猪MM多好阿
#47
女人只要不做坏事就已经很PP了,
......................
......................
#48
呵呵,收着,学习~
#49
pcboyxhy(-273.15℃)
好可爱的楼猪MM,
要是让我在宿舍里养这么头猪MM多好阿
------------------
你或许是一个编程高手,或者在某个知名公司担任高职,但是说实话,我觉得你挺可悲的
连对他人起码的尊重都不懂。
如果你觉得一个人不好,你可以保持沉默,但是不要伤害别人的自尊,谢谢
好可爱的楼猪MM,
要是让我在宿舍里养这么头猪MM多好阿
------------------
你或许是一个编程高手,或者在某个知名公司担任高职,但是说实话,我觉得你挺可悲的
连对他人起码的尊重都不懂。
如果你觉得一个人不好,你可以保持沉默,但是不要伤害别人的自尊,谢谢
#50
我当时去华为的笔试也考了这道题.