首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >“程序已停止工作”

“程序已停止工作”
EN

Stack Overflow用户
提问于 2013-10-31 15:53:50
回答 2查看 119关注 0票数 0

当我运行程序时,第一个for循环运行得很好,但是在进入第二个while循环之前,我得到了"Program has stopped working"消息。我的代码中有错误吗?如果有,我如何修复它?

代码语言:javascript
运行
复制
#include<stdio.h>

double Combat(int x, int y, char mons[20]);


int  main(void)
{
    int monsters, i, target, alive;

    while(1)
    {
        printf("ENTERING COMBAT\n\nHow many monsters?> ");
        scanf(" %d", &monsters);
        char monster[monsters][20];
        int monstermaxhp[monsters];
        int monsterhp[monsters];
        for(i=0;i<monsters;++i)
        {
            printf("\n\nNO SPACES\n\nEnter Monster %d's name> ", i+1);
            scanf("%s", &monster[i]);
            printf("\n\nEnter %s's hitpoints> ", monster[i]);
            scanf("%d", &monstermaxhp[i]);
            monsterhp[i]=monstermaxhp[i];
        }
            alive=1;
            while(alive==1)
        {
          for(i=0;i<monsters;++i)
        {
            printf("\n\n%d:%s%3c%3d/%d", i+1, ' ',monsterhp[i],monstermaxhp[i]);
        }
        printf("\n\nSelect Target> ");
        scanf("%d", &target);
        i=target-1;
        monsterhp[i]=Combat(monsterhp[i],monstermaxhp[i],monster[i]);
        for(i=0;i<monsters;++i)
        {
            if(monsterhp[i]<=0)
                alive=0;
        }
        }
    }
    return(0);
}


double Combat(int x, int y, char mons[20])
{
    int damage, plrroll, monroll;

    printf("\nRoll for %s> ", mons);
    scanf("%d", &monroll);
    printf("\nRoll for Player> ");
    scanf("%d", &plrroll);
    if(plrroll>monroll)
    {
        printf("\nHIT! Roll for damage> ");
        scanf("%d", &damage);
        x=x-damage;
    }
    else
    {
        printf("\nMISS! :P\n");
    }
    return(x);
}
EN

回答 2

Stack Overflow用户

发布于 2013-10-31 16:03:50

更改:

代码语言:javascript
运行
复制
printf("\n\n%d:%s%3c%3d/%d", i+1, ' ',monsterhp[i],monstermaxhp[i]);

代码语言:javascript
运行
复制
printf("\n\n%d: %s   %3d/%d", i+1, monster[i], monsterhp[i], monstermaxhp[i]);

您尝试以错误的顺序打印f。我想你漏掉了怪物的名字!这3个空格也不需要使用%c,所以我在您的格式字符串中内联了空格。

现在,您将获得如下输出:

1:良好的1/1

2:邪恶2/2

票数 2
EN

Stack Overflow用户

发布于 2013-10-31 16:06:30

好的,你的代码有几个问题:

monstermaxhp和

  1. 每次循环到外部时都会声明数组: monster,
  2. it
  3. return(0);。它的return 0;
  4. in for循环执行post增量(将++i更改为将您的printf语句更改为以下内容:

printf("\n\n%d:%s%3c%3d/%d", i+1, monsterhp[i], ' ', monstermaxhp[i]);

  • Also更改:

scanf("%s", &monster[i]);

要这样做:

scanf("%s", monster[i]);

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19700972

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档