| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 695 人关注过本帖
标题:自己写了一个程序,不知道错那了?帮忙看看~~~
只看楼主 加入收藏
qq471402415
Rank: 2
等 级:论坛游民
帖 子:88
专家分:45
注 册:2013-12-3
结帖率:82.35%
收藏
已结贴  问题点数:20 回复次数:6 
自己写了一个程序,不知道错那了?帮忙看看~~~
Minecraft是一个颠覆性的高自由度游戏,其中文译名叫“我的世界”。之所以会有如此译名,原因在于这个游戏就像一个沙盒世界,玩家就像是个创世神一般。其颠覆性在于它不同于以往那些游戏“要你做
去什么”,相反的,是由玩家去思考“我要做什么”。
说了这么一段,你们是不是很想上网搜一搜怎么玩呢?不过玩之前麻烦先帮Lrc解决一个问题。
这个游戏里面是可以制作逻辑电路的,通过简单的搭建,玩家可以制作出一个简单的TNT大炮。
假设现在Lrc想使用大炮轰地面上炸距离自己s米处的目标,大炮的发射仰角为A(单位角度),炮弹的初速度为v米/秒,TNT在发出后t秒爆炸,爆炸半径为r米(当目标到爆炸点的距离<=r时即视为击中),
炸药落地后不反弹。重力加速度取10m/s^2。问:Lrc能否击中目标?PS:目标与Lrc于同一平面
#include<stdio.h>
#include<math.h>
int main()
{
    double s,a,v,t,r,T,h,l;//定义距离自己s米处的目标,大炮的发射仰角为A(单位角度),炮弹的初速度为v米/秒,TNT在发出后t秒爆炸,爆炸半径为r米
    scanf("%lf%lf%lf%lf%lf",&s,&a,&v,&t,&r);
    T=2*v*sin(a*3.1415926/180)/10;//飞行时间
    if(t>=T)//判断是不是在空中爆炸
    {
        l=v*T*cos(a*3.1415926/180);//水平飞行距离
        if(s-l<=r||l-s<=r)//判断满不满足击中目标
            printf("nice!");
        else printf("T^T");
    }
    if(t<T&&t>t/2)//判断是在空中哪个阶段爆炸
    {
        h=pow(v*sin(a*3.1415926/180),2)/20-(5*pow((t-T/2),2));//离地面高度
        l=v*t*cos(a*3.1415926/180);//水平飞行距离
        if(l-s<=r&&h<=r||s-l<=r&&h<=r)//判断满不满足击中目标
            printf("nice!");
        else printf("T^T");
    }
    if(t<=T/2)//判断是在空中哪个阶段爆炸
    {
        h=v*t*sin(a*3.1415926/180)-5*pow(t,2);//离地面高度
         l=v*t*cos(a*3.1415926/180);//水平飞行距离
        if(l-s<=r&&h<=r||s-l<=r&&h<=r)//判断满不满足击中目标
            printf("nice!");
        else printf("T^T");
    }


}



我写了个这样的程序~~但是无论输入什么数据都是输出nice!
问题出在哪??

[ 本帖最后由 qq471402415 于 2013-12-29 19:20 编辑 ]
搜索更多相关主题的帖子: 创世神 自由度 做什么 中文 
2013-12-29 19:09
qq471402415
Rank: 2
等 级:论坛游民
帖 子:88
专家分:45
注 册:2013-12-3
收藏
得分:0 
2013-12-29 19:19
qq471402415
Rank: 2
等 级:论坛游民
帖 子:88
专家分:45
注 册:2013-12-3
收藏
得分:0 


[ 本帖最后由 qq471402415 于 2013-12-29 19:20 编辑 ]
2013-12-29 19:19
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:20 
s-l<=r||l-s<=r

由于你的s、l、r都是非负实数,所以s-l与l-s中必然有一个是非正实数,所以必然有一个是小于等于r的,所以这个条件永远为真。

t<T&&t>t/2

这句应该是存在笔误,由于t也是大于等于0的,所以t必然 >= t/2。当t>0时,则t>t/2。你的原意应该是 t>T/2对吧?

判断太繁琐,抛体的位移与时间的关系属于初中物理的范畴。

送你一段参考代码
程序代码:
#include<stdio.h>
#include<math.h>
#define PI    3.141592653589793
int main()
{
    double s, a, v, t, r;
    double vh, vv, dh, dv;
    scanf("%lf%lf%lf%lf%lf", &s, &a, &v, &t, &r);
    vh = v * cos(a * PI / 180);
    vv = v * sin(a * PI / 180);
    if(vv / 5 < t) t = vv / 5;
    dh = vh * t - s;
    dv = (vv - 5 * t) * t;
    if(dh * dh + dv * dv <= r * r)
        printf("nice!");
    else
        printf("T^T");
    
    return 0;
}

重剑无锋,大巧不工
2013-12-29 20:23
qq471402415
Rank: 2
等 级:论坛游民
帖 子:88
专家分:45
注 册:2013-12-3
收藏
得分:0 
谢谢~~菜鸟刚刚c的~~·
2013-12-29 22:05
qq471402415
Rank: 2
等 级:论坛游民
帖 子:88
专家分:45
注 册:2013-12-3
收藏
得分:0 
#include<stdio.h>
#include<math.h>
#define PI    3.141592653589793
int main()
{
    double s, a, v, t, r,T;
    double vh, vx, dh, dx;
    scanf("%lf%lf%lf%lf%lf", &s, &a, &v, &t, &r);
    vh=v*sin(a*PI/180);
    vx=v*cos(a*PI/180);
    T=2*vh/10;
    if(t>=T)
    {
        dx=vx*T;
        if(fabs(dx-s)<=r)

            printf("nice!");
        else
            printf("T^T");
    }

    if(t<=T)
    {
        dh=(vh-5*t)*t;
        dx=vx*t-s;
        if(dh*dh+dx*dx<=r*r)
            printf("nice!");
        else
            printf("T^T");
    }
    return 0;
}

谢谢你~~从你代码里我学到好多东西~~~·这是我重新写的~~虽然没你的那么简洁,但是比我刚刚写的好多了~~
2013-12-29 22:28
qq471402415
Rank: 2
等 级:论坛游民
帖 子:88
专家分:45
注 册:2013-12-3
收藏
得分:0 
#include<stdio.h>
#include<math.h>
#define PI    3.141592653589793
int main()
{
    double s, a, v, t, r,T;
    double vh, vx, dh, dx;
    scanf("%lf%lf%lf%lf%lf", &s, &a, &v, &t, &r);
    vh=v*sin(a*PI/180);
    vx=v*cos(a*PI/180);
    T=2*vh/10;
    if(t>=T)
    {
        dx=vx*T;
        if(fabs(dx-s)<=r)

            printf("nice!");
        else
            printf("T^T");
    }

    if(t<=T)
    {
        dh=(vh-5*t)*t;
        dx=vx*t-s;
        if(dh*dh+dx*dx<=r*r)
            printf("nice!");
        else
            printf("T^T");
    }
    return 0;
}

谢谢你~~从你代码里我学到好多东西~~~·这是我重新写的~~虽然没你的那么简洁,但是比我刚刚写的好多了~~
2013-12-29 22:28
快速回复:自己写了一个程序,不知道错那了?帮忙看看~~~
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.023960 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved