8个回答
展开全部
#include<stdio.h>
#include<string.h>
#define MAX 100 //预定义数组长度
int reverse(char a[])//判断是否回文,数字也当字符处理,所以,不管是数字还是字符串,都能判断
{
int n=strlen(a);
int i;
for(i=0;i<n;i++)
{
if(a[i]!=a[n-i-1])
return 0; //从首尾开始比较,有任一不相等,不是回文,返回0
if(i==n-i-1) //全相等,是回文。返回1
return 1;
}
}
int main(){
char a[MAX];
while(scanf("%s",a)!=EOF)//接受输入,将输入当字符串来处理 CTRL+Z结束输入
{
if(reverse(a))
printf("YES\n");
else
printf("NO\n");
}
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include<stdio.h>
main()
{ int n,i,j,k,l,m,sum,a[100],b[100];
while(1){
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
for(i=0;i<n;i++){
m=a[i];k=0;l=0;sum=0;
b[0]=m%10;sum=b[0];
while(m){
m/=10;
k++;
b[k]=m%10;
sum+=b[k];
}
for(j=0;j<k/2;j++)
if(b[k-j-1]==b[j]) l++;
if(l>=k/2) printf("%d\n",sum);
else printf("NO\n");
}
printf("\n");
}
}
如图所示,望采纳。。。。。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
c语言判断回文数方法:生成逆向数,判断与原数是否相同,相同则是,不同则不是。
参考代码:
#include <stdio.h>
void main()
{
int x=1, y,t;
printf("input n: "); scanf("%d", &x ); //输入数据
y=0;
t=x; //保存下原数
do {
y=y*10+t%10;
t/=10;
} while(t); //原数逆序
if ( y==x )
printf("yes!\n");
else
printf("no!\n");
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
main()
{
int i,len,flag,cnt=1,num,numrev,addnum;
char str[20]={0},strRev[20]={0},hui[20]={0};
gets(str); //输入数字 以字符串方式接收
num=atoi(str); //转为数字
strcpy(strRev,strrev(str)); //将接收的字符串逆序
numrev=atoi(strRev); //转换成逆序的数字
while (1)
{
addnum = num+numrev; //两个数字相加
printf("STEP%d:%d+%d=%d\n",cnt,num,numrev,addnum); //输出
itoa(addnum,hui,10); //将相加后的数字 转为字符串
len=strlen(hui); //求长度
flag=0; //标识是否是回文
for (i=0;i<len;i++) //判断是否回文
{
if (hui[i]!=hui[len-i-1])
{
flag=1; //如果不是回文 继续
break;
}
}
if (!flag ) //根据上面标识符判断是否回文
{
printf("%d %d\n",cnt,addnum); // 是户
break;
}else if (cnt++>=30) //判断是否大于等于30次
{
printf("0\n");
break;
}
num =addnum; //将和 作为下次运算的第一个数字
strcpy(strRev,strrev(itoa(num,str,10)));//根据第一个数逆序出第二个数
numrev=atoi(strRev); //字符串转数字
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询