这两段代码运行不理想,请教一下是什么原因呀?

代码一

#include <stdio.h>
int fun(int n)//功能:将整数n的值进行逆序转换,其结果通过函数值返回 
{
    int m,y;
    y=0;
    if(n>=0)
       m=n;
    else
       m=-n;
    while(m!=0)
    {
        y=y*10+m%10;//
        m=m/10;//
    }
    y=(n>=0)?y:-y;
    return y;//
}
int main()
{
    int m1,m2;
    scanf("%d%d",&m1,&m2);
    printf("%d的逆向是%d\t",m1,fun(m1));
    printf("%d的逆向是%d\n",m2,fun(m2));
    return 0;
}//输入后无输出 

代码二

#include <stdio.h>
#include <math.h>
int fun(long n)
//功能:给定一个整数n(n<10000),如果n加上100后是一个完全平方数(即开方后是整数的数),
//并且n加上268后也是一个完全平方数,则函数值返回1,否则返回0 
{//
    int s1,s2;
    s1=sqrt((double)n+100);
    s2=sqrt((double)n+268);
    if(s1==sqrt((double)n+100)&&s2==sqrt((double)n+268))
       return 1;
    else return 0;
}//
int main()
{
    long i;
    FILE *fp=fopen("out.dat","w");
    for(i=1;i<10000;i++)
    {
        if(fun(i))
        {
            printf("%ld\n",i);
            fprintf(fp,"%ld\n",i);
        }
    }
    return 0;
}//结果恒定,无法输入 

img

代码二没有输入

代码一无问题

img