#include <stdio.h>
#include <string.h>
typedef struct
{
char data[10];
int top;
}seqstack;
main()
{int i;
char a[9],b[9];
int m;
seqstack s;
s=(seqstack)malloc(sizeof(seqstack));
s->top=-1;
printf('请你输入8位的a字符串:');
for(i=0;i<9;i++)
scanf('%c',&a[i]);
i=0;
while(a[i]!='@')
{
s->top++;
s->data[s->top]=a[i];
i++;
}
//printf('%d ',i);
i=7;
while(s->top>=0)
{
b[i]=s->data[s->top];
s->top--;
i--;
}
b[8]='@';
m=strcmp(a,b);
printf('%d',m);
if(m==0)
printf('你所输入的字符串为回文!');
else
printf('你所输入的字符串不是回文!');
getchar();
getchar();
}
有点不知道你想问什么,下面的代码应该是你自己写的,好歹把题目贴上来啊
for(i=0;i<9;i++)
scanf('%c',&a[i]);
这是从键盘输入9个字符。
while(a[i]!='@')
{
s->top++;
s->data[s->top]=a[i];
i++;
}
这里将a中的字符复制到结构体s的data数组中,直到a中的字符是@符合为止,但是如果数组a中没有@字符,这里就会出错,所以建议将while(a[i]!='@')改成while(a[i]!='@' && i<9)。
i=7;
while(s->top>=0)
{
b[i]=s->data[s->top];
s->top--;
i--;
}
这里将结构体s的data数组的元素复制到数组b,并把数组b的最后一个符号设为@符号。但是这里有个问题,你应该是想判断a中的内容是不是回文数,但是这里数组b完全是复制的a的数据,没有做你转处理。这块代码需要修改为:
i=0;
while(s->top>=0)
{
b[i]=s->data[s->top];
s->top--;
i++;//b正序,s->data逆序,因为s->data是复制的a
}
m=strcmp(a,b);
这句话就是判断a和b是否相等,相等的话m就等于0,也就说明a中是回文数