/*数组越界*/
#include
#include
#include
int main(void)
{
int a,b = 0;
int c=10;
int str[80];
int i=0;
for(a = 2;a <= 1000 && b < 65535; a++)
{ b = a * a;
c = 10;
while( a/c != 0)
c=c*10;
if( (b-a) % c == 0)
{
str[i] = a;
i++;
}
}
i--;/*若少此句,则越界,所以出现负数,况且这个数是不定的,不同编译器不同值*/
printf("守形数有:\n");
for(; i >= 0 ;i--)
printf("%5d ",str[i]);
getch();
return 0;
}
#include
#include
#include
int main(void)
{
int a,b;
int c=10;
int str[80];
int i=0;
for(a=2;a<=1000;a++)
{ b=a*a;
c=10;
while(a/c!=0)
c=c*10;
if((b-a)%c==0)
{ str[i]=a;
i++;
}
}
i--;//前边的最后一次i++后数组里没有放任何东西所以要减1
printf("守形数有:\n");
for(;i>=0;i--)
printf("%d、",str[i]);
getch();
}
for(a=2;a<=1000;a++)
{ b=a*a
这里的b早就越界了,是int型