所谓回文数,就是说一个数字从左边读和从右边读的结果是一模一样的,例如12321。判断给出的整数是否是回文数;若是,则输出该整数各位数字之和;否则输出该数不是一个回文数。

原理大致为:任何一个数除以10的余数就是该数最后一位;任何一个数除以10的商就是排除掉最后一位后的数;所以 ,一个数1234 就可以通过这种方法得到 123 和 4;接下来对 123 进行同样的操作,就得到 12 和 3;接下来得到 1 和 2;接着得到 0 和 1;整个过程是个循环,当商不是 0 的时候就一直如此;每次拿到一个余数,都用来构造新数,新数=新数*10+余数;所以经过四次循环后,我们得到新数 4321 ,如果是回文,那么新数应该等于原数,否则,说明不是回文。

首先,我们来判断一下一个数是否为回文数:

#include <stdio.h>
void main(){
	int num,s,y=0;
	printf("Please input numbers: ");
	scanf("%d", &num);
	s=num;
	while(s>0){
		y=y*10+s%10;
		s=s/10;
	}
	if(y==num){
		printf("%d是一个回文数!\n", num);
	}else{
		printf("%d不是一个回文数!\n", num);
	}
}

接下来小编为我们判断一下一个字符串是否为回文数:

方法一:

#include <stdio.h> 
#include<string.h>              //strlen函数的头文件 
int main() 
{ 
    int j,i,n; 
    char a[999],b[999]; 
	printf("Please input string: ");
    scanf("%s",a);              //输入字符串 
    n=strlen(a);                //用strlen函数读取字符串长度(长度到\0停止) 
    for(i=0,j=n-1;i<n;i++,j--)  //循环将字符串a逆序赋值给b 
        b[j]=a[i];
    for(i=0;i<n;i++) 
    { 
        if(b[i]!=a[i]) 
		 break;                 //判断是否回文 
    } 
    if(i==n) printf("是一个回文数!\n");     //如果从第1位到n都相同 则输出回文数 
    else printf("不是一个回文数!\n"); 
    return 0; 
} 

方法二:

#include <stdio.h>
#define N 80
int fun(char *str)
{
    int i,n=0,fg=1;                 //设置标志位
    char *p=str;
    while(*p){                      //将指针p置位到字符串末尾,并统计字符数
        n++;
        p++;
    }
    for(i=0;i<n/2;i++){             //循环比较字符
        if(str[i]==str[n-1-i]);     //相同,什么都不作
        else{                       //否则,直接跳出循环
            fg=0;
            break;
        }
    }
    return fg;
}

main()
{
	 char s[N];
	 FILE *out;
         char *test[]={"1234321","123421","123321","abcdCBA"};
	 int i;
	 printf("Enter a string : ");
	 gets(s);
	 printf("\n\n");
	 puts(s);
	 if(fun(s))
		printf("YES\n");
	 else
		printf("NO\n"); 
	 /************************************/
	 out=fopen("out.dat","w");
	 for(i=0;i<4;i++)
	 	if(fun(test[i]))
			fprintf(out,"YES\n");
		else
			fprintf(out,"NO\n");
	 fclose(out);
	 /************************************/
}

版权声明:本文为博主原创文章,未经博主允许不得转载。https://blog.csdn.net/qq_42680327

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐