程序到底哪里有问题?

#include<stdio.h>
int main()
{
int m,n,c,b,k,p,q,r,leap;
scanf("%d%d",&m,&n);
r=0;
leap=0;
for(k=m;k>=m&&k<=n;k++)
{
b=0;
p=k;
while(k>0)
{
c=k%10;
b=b*10+c;
k=k/10;
}
if(b==p)
{
for(q=2;q<p;q++)
if(p%q==0)
break;
if(q==p)
{
leap=1;
r=r+1;
}
else
leap=0;
}
else
leap=0;
}
if(leap=1)
printf("%d",p);
while(r%5==0)
printf("\n");
return 0;
}

小唯快跑啊
浏览 126回答 1
1回答

BIG阳

程序开始部分没什么问题,结尾一个接一个是自己想乱了还是着急了?如果刚学C 最好还是先列个流程 然后再写,不容易出错改正后的程序如下,原因见注释#include<stdio.h>int&nbsp;main(){&nbsp;int&nbsp;m,n,c,b,k,p,q,r,leap;&nbsp;scanf("%d%d",&m,&n);&nbsp;r=0;&nbsp;leap=0;&nbsp;for(k=m;k>=m&&k<=n;k++)&nbsp;{&nbsp;&nbsp;b=0;&nbsp;&nbsp;p=k;&nbsp;&nbsp;while(k>0)&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;c=k%10;&nbsp;&nbsp;&nbsp;b=b*10+c;&nbsp;&nbsp;&nbsp;k=k/10;&nbsp;&nbsp;}&nbsp;&nbsp;if(b==p)&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;for(q=2;q<p;q++)&nbsp;&nbsp;&nbsp;&nbsp;if(p%q==0)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;&nbsp;&nbsp;&nbsp;if(q==p)&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;leap=1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r=r+1;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;else&nbsp;&nbsp;&nbsp;&nbsp;leap=0;&nbsp;&nbsp;}&nbsp;&nbsp;else&nbsp;&nbsp;&nbsp;leap=0;&nbsp;&nbsp;k&nbsp;=&nbsp;p;//恢复k的值,下次循环用用的&nbsp;&nbsp;//输出语句移到循环内,对每个回文素数做输出&nbsp;if(leap==1)//&nbsp;==判断&nbsp;{//只有本身为回文素数时,判断是否需要输出换行&nbsp;&nbsp;printf("%d&nbsp;",p);&nbsp;if(r%5==0)//一次判断&nbsp;不然死循环输出换行了&nbsp;&nbsp;printf("\n");&nbsp;}&nbsp;}&nbsp;return&nbsp;0;}&nbsp;
打开App,查看更多内容
随时随地看视频慕课网APP