不使用任何函数
用栈实现回文数的判断,参考代码如下:
#include<stdio.h>
int main()
{
char str[400]="1212121";
char stk[200];
int sp=0,l=0,mid,i=0;
while(str[l]!=0)++l;
mid=l/2;
while(i<mid){
stk[sp++]=str[i];
++i;
}
if(l%2!=0)++i;
while(i<l)
if(stk[--sp]==str[i])
++i;
else break;
printf("%s", str);
if(i==l)
printf("是回文数。");
else
printf("不是回文数。");
return 0;
}
#include<stdio.h>
int main()
{
char str[400]="1212121";
char stk[200];
int sp=0,l=0,mid,i=0;
while(str[l]!=0)++l;
mid=l/2;
while(i<mid){
stk[sp++]=str[i];
++i;
}
if(l%2!=0)++i;
while(i<l)
if(stk[--sp]==str[i])
++i;
else break;
printf("%s", str);
if(i==l)
printf("是回文数。");
else
printf("不是回文数。");
return 0;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答 2018-11-12
不用任何函数?? while( ) , for 都不能用?追问
#include <stdlib.h>
int main()
{
char s[100];
scanf("%s",s); //输入一个字符串
int len=0;
while(s[len++]){} //获取该字符串长度
len--;
int i=0;
for(i;i<len/2;i++) //依次判断第一个和最后一个, 第二个和倒数第二个...是否相等
{
if(s[i]!=s[len-1-i]) //如果有任何一个不相等,则不是回文数
{
break;
}
}
if(i>=len/2)
{
printf("yes");
}
else
{
printf("no");
}
return 0;
}
意思是不使用任何字符串函数,例如strcpy之类的
追答#include <stdio.h>#include <stdlib.h>
int main()
{
char s[100];
scanf("%s",s); //输入一个字符串
int len=0;
while(s[len++]){} //获取该字符串长度
len--;
int i=0;
for(i;i<len/2;i++) //依次判断第一个和最后一个, 第二个和倒数第二个...是否相等
{
if(s[i]!=s[len-1-i]) //如果有任何一个不相等,则不是回文数
{
break;
}
}
if(i>=len/2)
{
printf("yes");
}
else
{
printf("no");
}
return 0;
}