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
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)