C++程序,自守数为什么不能每行输出5个啊

来源:百度知道 编辑:UC知道 时间:2024/05/29 19:20:44
帮忙看一下,很着急。要求每行输出5个数。我运行的时候第一次可以保证每行输出5个,可是再继续输入的话,每行就不输出5个了。我知道是我计数时候初始值出了问题,可是不知道怎么改,帮帮我啊~~非常感谢,谢谢了谢谢了。

#include <iostream.h>
#include <math.h>

double type5(double m) //保证每行输出5个自守数
{
static int p=0;
cout<<m<<"\ ";
p++;
if(p%5==0)
cout<<endl;
return 0;
}

double weishu(double c,double d) //判断输入数字的位数并判断是否是自守数
{

int i=100;
double y;
while((int)c/i!=0) i=i*10;

if(fmod(d,(double)i)==0)
{
type5(c);
}
return 0;
}

double if_zss(double a,double b) //计算平方数与输入数的差
{
double x,m,n;
for(x=a;x<=b;x++)
{
m=x*x;
n=m-x;
weishu(x,n);
}
return 0;
}

void main()
{
double n,m;

cout<<"请输入您想要求的的自守数的范围下限,结束程序请输入0"<<end

没错啊 

你输出不是5个只是你的数据问题啊 

因为符合条件的就不足5个

if(p%5==0) 

cout<<endl; 

改成if(p%5==0) {cout<<endl;  p=0; }

我看了一下,感觉你的程序没有问题,输出控制也没有问题。

这个程序是在你给定的范围求自守数的,在给定范围有几个自守数,就会输出几个,输出个数控制只能说是在大于5的情况下每行最多输出5个数。
如果你的上下限设置为10到50,那么输出只有一个,那就是25.
(自守数就是一个数的平方的尾数和他本身相等)

double type5(double m) //保证每行输出5个自守数
{
static int p = 0;
if(p%5 == 0)
c