for i=1000 to 9999
ge=i%10
shi=int(i/10)%10
bai=int(i/100)%10
qian=int(i/1000)
if qian=ge and shi=bai
s=s+i
endif
next
然后,直接点击悔搭感叹号,保存并运行,图:
#include<stdio.h>int fun( char str[] )
{
int i,j,n
n=strlen(str)//测字符串str的长桐判度
/* for 循环的作用是,从两头往中间比较,
如果在到达字符串长度一半之前就出现有不一致的就跳出循环*/
for(i=0,j=n-1i<=(n-1)/2i++,j--)
if(str[i]!=str[j]) break
if(i>j) return 1/*如果跳出循环的,这不是回文数,也就是说i还小于等于字符串长度的一半,
所以i<+j,否则就证明是通过循环结束才跳出的,也就是说该字符串为回文数*/
return 0
}
void main()
{
char a[80]//定义一个字符数组用于存储将要输入的字符串
gets(a)//卖悔输入字符串
if ( fun(a)==1 ) /*根据fun函数的返回值判断是否是回文数,1为回文数,其他(实际上是0)为回文中轮正数 */
printf( "回文\n")//输出
else printf("非回文\n")//输出
}
*问题分析与算法设计回文数的这一形成规则目前还属于一个猜想,尚未得到数学上的证明。有些回文数要经历上百个步聚才能获得。这里通过编程验证。
题目中给出的处理过程很清楚,算法不需要特殊设计。可按照题数早目的叙述直接进行验证。
*程序与程序注释
#include<stdio.h>
#define MAX 2147483647
long re(long int)
int nonres(long int s)
void main()
{
long int n,m
int count=0
printf("Please enetr a number optionaly:")
scanf("%ld",&n)
printf("The generation process of palindrome:\\n")
while(!nonres((m=re(n))+n)) /*判断整数与其反序数相加后是否为回文数*/
{
if(m+n>=MAX)
{
printf(" input error,break.\\n")
break
}
else
{
printf("[%d]:%ld+%ld=%ld\\n",++count,n,m,m+n)
n+=m
}
}
printf("[%d]:%ld+%ld=%ld\\n",++count,n,m,m+n)/*输出最后得到的毕局回文数*/
printf("Here we reached the aim at last!\\n")
}
long re(long int a) /*求输入整数的反序数*/手毕让
{
long int t
for(t=0a>0a/=10) /*将整数反序*/
t=t*10+a%10
return t
}
int nonres(long int s) /*判断给定的整数是否是回文数*/
{
if(re(s)==s) return 1/*若是回文数则返回1*/
else return 0/*否则返回 0*/
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)