程序中含有不安全字符(或者为NOI不允许使用的语句):net
我的程序是这样的:
#include "stdio.h"
#include "string.h"
#define T 0.7071
main()
{
double x=0.0,y=0.0;
double vx=0.0,vy=0.0,ax=0.0,ay=0.0,m;
int n,w,di,i;
int l;
double t[201];
char lbj[201][5];
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%lf",&t[i]);
scanf("%s",lbj[i]);
}
scanf("%d",&w);
i=0;
l=0;
while(t[i]<w)
{
l=strlen(lbj[i]);
switch(lbj[i][l-1])
{
case ’S’: m=0.2;break;
case ’W’: m=2;break;
case ’P’: m=10;break;
}
ax=ay=0;
switch(lbj[i][0])
{
case ’D’: ax=m;break;
case ’A’: ax=-m;break;
case ’W’: ay=m;break;
case ’S’: ay=-m;break;
}
switch(lbj[i][1])
{
case ’.’: break;
case ’D’: ax+=m;ay*=T;ax*=T;break;
case ’A’: ax-=m;ay*=T;ax*=T;break;
case ’W’: ay+=m;ay*=T;ax*=T;break;
case ’S’: ay-=m;ay*=T;ax*=T;break;
}
if(ax!=0)
x+=((vx+ax*(t[i+1]-t[i]))*(vx+ax*(t[i+1]-t[i]))-vx*vx)/2/ax;
else
x+=vx*(t[i+1]-t[i]);
if(ay!=0)
y+=((vy+ay*(t[i+1]-t[i]))*(vy+ay*(t[i+1]-t[i]))-vy*vy)/2/ay;
else
y+=vy*(t[i+1]-t[i]);
vx+=ax*(t[i+1]-t[i]);
vy+=ay*(t[i+1]-t[i]);
i++;
}
l=strlen(lbj[i]);
switch(lbj[i][l-1])
{
case ’S’: m=0.2;break;
case ’W’: m=2;break;
case ’P’: m=10;break;
}
ax=ay=0;
switch(lbj[i][0])
{
case ’D’: ax=m;break;
case ’A’: ax=-m;break;
case ’W’: ay=m;break;
case ’S’: ay=-m;break;
}
switch(lbj[i][1])
{
case ’.’: break;
case ’D’: ax+=m;ay*=T;ax*=T;break;
case ’A’: ax-=m;ay*=T;ax*=T;break;
case ’W’: ay+=m;ay*=T;ax*=T;break;
case ’S’: ay-=m;ay*=T;ax*=T;break;
}
if(ax!=0)
x+=((vx+ax*(w-t[i-1]))*(vx+ax*(w-t[i-1]))-vx*vx)/2/ax;
else
x+=vx*(w-t[i-1]);
if(ay!=0)
y+=((vy+ay*(w-t[i-1]))*(vy+ay*(w-t[i-1]))-vy*vy)/2/ay;
else
y+=vy*(w-t[i-1]);
printf("%.1lf\n%.1lf",x,y);
return 0;
}
怎么回事呢?