判断回文数c语言程序

#include <iostream>?

using namespace std;?

int main(){

int m;//待输入的数

int i=0,j=0;

int array[10];//将每个数分解

cout<<"请输入一个数"<<endl;

cin>>m;

while(m)

{

array[i++]=m%10;

m/=10;

}

i--;//while中的多自加了一个

while(i>j)

{

if(array[j++]!=array[i--])//首位递增,末位递减,直到首位不再小于末位

break;

} ?

if(j>i)

cout<<"是回文数"<<endl;

else

cout<<"不是回文数"<<endl; ?

return 0;

}

扩展资料

判断语句:

1、if...else if...else语句

格式:

if(条件1)

{

语句1 ;

}

else if(条件2)

{

语句2 ;

}

else

{

语句N;

}

解释:如果条件1成立,则执行语句1,如果条件1不满足则判断条件2是否成立,如果成立则执行条件2,如果不成立则执行条件N。

2、if中嵌套if

格式:

if(条件1)

{

if(条件2)

{

语句2;

}

else

{

语句3;

}

}

else

{

语句N;

}

解释:如果条件1不成立,则执行语句N,如果条件1满足则进入到第一个if中,然后判断条件2,如果成立执行语句2,否则执行语句3。

题目:

题目:如果一个数从左边读和从右边读都是同一个数,就称为回文数。例如6886就是一个回文数,从给出的数据中统计出既是回文数又是素数的数(<109)。

思路分析:

首先,你输入的是整数(x),计算机不能像人脑一样直接得到每个数位(数组a[10])。

所以,要先判断数位(n),然后只要数位数组中a[i]=a[n-i]即可。

关于素数,设置一个for循环,只要从1到x都不存在能整除x的数,就是素数了。

代码如下:

#include <stdio.h>

#include<windows.h>

int main()

{

int

a[1000];

int

n;//输入整数的个数

printf("请输入整数的个数:\n");

scanf("%d",&n);

int

i;

printf("请输入这%d个整数:\n",n);

for(i=0;i<n;i++)

scanf("%d",&a[i]);

int

result_1;//值为1表示是回文数,值为0表示不是。

int

result_2;//值为1表示是质数,值为0表示不是。

int

palindrome(int y);//判断回文数的函数

int

prime(int y);//判断质数的函数

int

y;//y是要代入函数里的参数

int

num=0;//num用来计总共有几个符合条件的数

int

b[1000];//b[1000]是符合要求的数组

for(i=0;i<n;i++)

{

result_1=0;//先使初值=0。

result_2=0;

y=a[i];

result_1=palindrome(y);

result_2=prime(y);

if((result_1==1)&&(result_2==1))

{

b[num]=a[i];

num++;

}

}

if(num>0)

{

printf("总共有%d个既是回文数又是质数的数:\n",num);

for(i=0;i<num;i++)

printf("

%d",b[i]);

printf("\n");

}

else

printf("输入的整数均不符合要求\n");

system("pause");

return 0;

}

int palindrome(int y)

{

int

a[10];//a[10]表示y的各个数位的值

int

i=0;

while(y>=1)

{

a[i]=y%10;//y%10就得到y的末位

y=y/10;//让倒数第二位变成了末位

i++;//i最后又自加了一次,所以i就表示y有多少位

}

int

j;

int

z=1;

for(j=0;j<=(i-1)/2;j++)

{

if(a[j]!=a[(i-1)-j])

{

z=0;

break;

}

else

continue;

}

return

(z);

}

int prime(int y)

{

int

i,z;

z=1;

for

(i=2;i<y;i++)

{

if(y%i==0)

{

z=0;

break;

}

else

continue;

}

return(z);

}

测试数据:

n = 168

2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53

59 61 67 71 73 79 83 89 97 101 103 107 109 113 127 131 137 139 149 151 157 163

167 173 179 181 191 193 197 199 211 223 227 229 233 239 241 251 257 263 269 271

277 281 283 293 307 311 313 317 331 337 347 349 353 359 367 373 379 383 389 397

401 409 419 421 431 433 439 443 449 457 461 463 467 479 487 491 499 503 509 521

523 541 547 557 563 569 571 577 587 593 599 601 607 613 617 619 631 641 643 647

653 659 661 673 677 683 691 701 709 719 727 733 739 743 751 757 761 769 773 787

797 809 811 821 823 827 829 839 853 857 859 863 877 881 883 887 907 911 919 929

937 941 947 953 967 971 977 983 991 997

测试结果:

请输入整数的个数:

168

请输入这168个整数:

2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53

59 61 67 71 73 79 83 89 97 101 103 1

07 109 113 127 131 137 139 149 151 157 163

167 173 179 181 191 193 197 199 211 2

23 227 229 233 239 241 251 257 263 269 271

277 281 283 293 307 311 313 317 331 3

37 347 349 353 359 367 373 379 383 389 397

401 409 419 421 431 433 439 443 449 4

57 461 463 467 479 487 491 499 503 509 521

523 541 547 557 563 569 571 577 587 5

93 599 601 607 613 617 619 631 641 643 647

653 659 661 673 677 683 691 701 709 7

19 727 733 739 743 751 757 761 769 773 787

797 809 811 821 823 827 829 839 853 8

57 859 863 877 881 883 887 907 911 919 929

937 941 947 953 967 971 977 983 991 9

97

总共有20个既是回文数又是质数的数:

2 3

5 7 11 101 131 151 181 191 313 353 373 383 727 757 787 797 919 929

请按任意键继续. . .

本文来自作者[诗梦]投稿,不代表巨鲨号立场,如若转载,请注明出处:https://jvsha.com/jvs/474.html

(15)
诗梦的头像诗梦签约作者

文章推荐

发表回复

作者才能评论

评论列表(3条)

  • 诗梦的头像
    诗梦 2025年09月25日

    我是巨鲨号的签约作者“诗梦”

  • 诗梦
    诗梦 2025年09月25日

    本文概览:#include <iostream>?using namespace std;?int main(){ int m;//待输入的数 int i=0,j=0...

  • 诗梦
    用户092511 2025年09月25日

    文章不错《判断回文数c语言程序》内容很有帮助

联系我们

邮件:巨鲨号@gmail.com

工作时间:周一至周五,9:30-17:30,节假日休息

关注微信