编写程序,求小于等于n的所有自守数。
输入:从键盘随机输入一个正整数n(<10000000)。
输出:输出小于n的所有自守数,每个数之间以一个西文空格间隔。
#include <stdio.h>
int main(){
int n,i,j,flag;
scanf("%d",&n);
for(i=1;i<n;i++){
j=i;
int b;
b=j*j;
if(j%10==b%10)
{flag=1;}
else
{flag=0;break;}
if(flag==1)
printf(" %d",i);}
}
修改如下,供参考:
#include <stdio.h>
int main()
{
int i, n, k, t, s, flg = 0;
scanf("%d", &n);
for (i = 1; i <= n; i++)
{
t = i; k = i * i; s = 1;
while (t) { s *= 10; t /= 10; }
if ((k % s) == i)
printf("%c%d", flg++ == 0 ? '\r' : ' ', i);
}
if (!flg)
printf("No exist");
return 0;
}