c++菜鸟的一个问题

C++语言 码拜 8年前 (2016-09-23) 1070次浏览
#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];为什么要是前自增,为什么换成后自增程序就不能正常工作了
求高手指点
解决方案

20

这个上面说的都不对
设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]之前呢还是之后呢

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明c++菜鸟的一个问题
喜欢 (0)
[1034331897@qq.com]
分享 (0)