C语言编程求回文的程序,我是初学者,以下程序看不懂,求高手解释。

C语言编程求回文的程序,我是初学者,以下程序看不懂,求高手解释。,第1张

回文数的程序:回文数是从右向左读和从左向右读都是一样的。比如15651,

1221等。这个程序是验证用户输入的一个四位数是不是回文数。但是程序好像有错误:

举个例子:用户输入5885。先分离数字,a,b,c,d分别等于5,8,8,5。然后判断a是否等于d且b是否等于c。如果条件满足则是回文数,否则不是。

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

char *chan(int count)

int main(int argc, char* argv[])

{

char *str

int i,n

str=chan(0)

n=strlen(str)

for (i = 0i<(n-1)/2i++) {

if (str[i]!=str[n-1-i]) {

n=0

break

}

}

if (n) {

printf("TRUE\n")

}

else printf("FALSE\n")

free(str)

system("pause")

return 0

}

char *chan(int count)

{

char a

static char * p

if ((a=getchar())!='\n')

{

count++

chan(count)

}

else {

p=malloc(sizeof(char)*(count+1))

*(p+count)=0

return p

}

*(p+count-1)=a

return p

}

//---------------------------------------------------------------------------

如果是回文,则输出"TRUE",否则输出"FALSE"

其中的chan()函数用于确定字符串长度,并且动态创建指定长度的字符数组,再将字符串读入,之后返回字符串。这样可以节省不必要的空间。

#include <stdio.h>

#include <string.h>

#include <ctype.h>

int ispalindrome(char *str) {

int s=0,e=strlen(str)-1,m=(s+e)/2

while(s<=m&&str[s]==str[e])

{

s++

e--

}

if(s>m)

return 1

return 0

}

int main(void) {

char buffer[1024]

gets(buffer)

printf("[%s] is ", buffer)

if (ispalindrome(buffer)) puts("a palindrome")

else puts("not a palindrome")

return 0

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/10945999.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-12
下一篇 2023-05-12

发表评论

登录后才能评论

评论列表(0条)

保存