#include<iostream>
#include<string.h>
using namespace std;
int main(){
char a[101],s[101];
int i,len,mid,next,top;
cin>>a;
len = strlen(a);
mid = len/2 – 1;
top = 0;
for(i = 0;i <= mid ; i++){
s[++top] = a[i];
if(len%2 == 0)
next = mid + 1;
else
next = mid + 2;
for(i = next ; i <= len – 1 ;i++){
if(a[i] != s[top])
break;
top–;
}
if(top == 0 )
cout<<“YES”;
else
cout<<“NO”;
return 0;
}
这是一个判断能否是回文的代码,例如qweewq就是回文,输入的话就会输出yes
本人的问题是
第12行代码 s[++top] = a[i];为什么要是前自增,为什么换成后自增程序就不能正常工作了
求高手指点
#include<string.h>
using namespace std;
int main(){
char a[101],s[101];
int i,len,mid,next,top;
cin>>a;
len = strlen(a);
mid = len/2 – 1;
top = 0;
for(i = 0;i <= mid ; i++){
s[++top] = a[i];
if(len%2 == 0)
next = mid + 1;
else
next = mid + 2;
for(i = next ; i <= len – 1 ;i++){
if(a[i] != s[top])
break;
top–;
}
if(top == 0 )
cout<<“YES”;
else
cout<<“NO”;
return 0;
}
这是一个判断能否是回文的代码,例如qweewq就是回文,输入的话就会输出yes
本人的问题是
第12行代码 s[++top] = a[i];为什么要是前自增,为什么换成后自增程序就不能正常工作了
求高手指点
解决方案
20
这个上面说的都不对
设len为3
++len
是先 len+1,再用len这个数去操作
printf(“%d”,len++); 输出4
len++ 先用len这个数去操作,在len+1
printf(“%d”,len++); 输出3
设len为3
++len
是先 len+1,再用len这个数去操作
printf(“%d”,len++); 输出4
len++ 先用len这个数去操作,在len+1
printf(“%d”,len++); 输出3
40
是前自增还是后自增,你本人分析一下就明白了。
把s[++top] = a[i];拆成两句,top = top + 1;s[top] = a[i]
你是希望top = top + 1在s[top] = a[i]之前呢还是之后呢
把s[++top] = a[i];拆成两句,top = top + 1;s[top] = a[i]
你是希望top = top + 1在s[top] = a[i]之前呢还是之后呢