请帮忙修改程序,该如何解决

请帮忙修改程序
#include   "stdio.h "
double   f(double,double);
main()
{
    double   h,t,y,k1,k2,k3,k4,g;
    int   i,a=0,b=1,n=10;
    h=(b-a)/n;
    t=a;
    printf( "%f\n ",t);
    g=1.0;
    y=g;
 
 
  for   (i=1;i <=n;i++)
    {
        k1=f(t,y);
        k2=f(t+h/2,y+h/2*k1);
        k3=f(t+h/2,y+h/2*k2);  
        k4=f(t+h,y+h*k3);
        y=y+(k1+2*k2+2*k3+k4)*h/6;
        t=a+i*h;
        printf( "%f,%f\n ",t,y);
    }
   
    }
    double   f(double   s,double   q)
    {
      return   (-q+s*s+1);
    }

期望得到的运行结果是:
0.10           1.000325208
0.20           1.002538594
0.30           1.008363723
    .                     .
    .                     .
    .                     .
但我得不到这样的结果,呜呜...

------解决方案--------------------
t=a;  
 g=1.0;
y=g;    你初始化 t=0 ,y=1 
k1=f(t,y);   第一次调用函数 f

double f(double s,double q)
{
return (-q+s*s+1);
}
  函数返回值是零 k1=0
k2=f(t+h/2,y+h/2*k1); //k1=0  h/2*0  h除以0 肯定不行 
当然不会出现你期望的结果
------解决方案--------------------
这个标准四阶龙格-库塔公式,我修改了一处
至于为什么要修改,楼主自己看看吧。

#include "stdio.h "
double f(double,double);
main()
{
double h,t,y,k1,k2,k3,k4,g;
int i,a=0,b=1,n=10;
h=(double)(b-a)/n;////////////////////////
t=a;
printf( "%f\n ",t);
g=1.0;
y=g;


for (i=1;i <=n;i++)
{
k1=f(t,y);
k2=f(t+h/2,y+h/2*k1);
k3=f(t+h/2,y+h/2*k2);
k4=f(t+h,y+h*k3);
y=y+(k1+2*k2+2*k3+k4)*h/6;
t=a+i*h;
printf( "%f,%f\n ",t,y);
}
}

double f(double s,double q)
{
return (-q+s*s+1);
}