Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 减法不';I don’我不能工作,我怎样才能修理它?_C - Fatal编程技术网

C 减法不';I don’我不能工作,我怎样才能修理它?

C 减法不';I don’我不能工作,我怎样才能修理它?,c,C,嗨,我是c语言的新手,我正在做一个文本冒险游戏。但是我在做while循环时遇到了一个e减法的问题。问题是这个数字并没有改变,在第二个语句中它保持在95或90。有人能帮我解决这个问题,并向我解释减法是如何在循环中工作的吗?另外,我希望循环在敌人的生命为零时结束 #include <stdio.h> #include <stdlib.h> #include <time.h> #include <unistd.h> #include <signal

嗨,我是c语言的新手,我正在做一个文本冒险游戏。但是我在做while循环时遇到了一个e减法的问题。问题是这个数字并没有改变,在第二个语句中它保持在95或90。有人能帮我解决这个问题,并向我解释减法是如何在循环中工作的吗?另外,我希望循环在敌人的生命为零时结束

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <unistd.h>
#include <signal.h>
struct batman{
    int helath,punch,kick,darts;
};

int main(void) {
    int s=0,sum=0,r,knife=5,gun1=10,punch,enemy=100;

    struct batman b;

    b.helath=100;
    b.punch=5;
    b.kick=10;
    b.darts=100;

    printf("\nPress 1 for punch and 2 for kick");

    srand(time(NULL));
    do{
        scanf("%d",&punch);
        if(punch==1){
            sum=b.punch-enemy;
            printf("\nEnemy's Helath %d",sum);
        }
        else if(punch==2){
            sum=b.kick-enemy;
            printf("\nEnemy's Helath %d",sum);
        }
        r=rand()%2;
        if(r==1){
            s=b.helath-knife;
            printf("\nBatman's Health%d",s);

        }
        else if(r==2){
            s=b.helath-gun1;
            printf("\nBatman's Health%d",s);

        }

    }while(punch==1||punch>=2);

    return 0;
}
#包括
#包括
#包括
#包括
#包括
结构蝙蝠侠{
内击、击、踢、飞镖;
};
内部主(空){
int s=0,sum=0,r,刀=5,枪=10,拳,敌人=100;
结构蝙蝠侠b;
b、 helath=100;
b、 冲压=5;
b、 井涌=10;
b、 省道=100;
printf(“\n按1表示打孔,按2表示打孔”);
srand(时间(空));
做{
scanf(“%d”、&punch);
如果(冲压==1){
sum=b.punch-敌人;
printf(“\nEnemy的直升机路径%d”,总和);
}
否则如果(冲压==2){
sum=b.踢敌人;
printf(“\nEnemy的直升机路径%d”,总和);
}
r=rand()%2;
如果(r==1){
s=b.helath-knife;
printf(“\n阿特曼的健康状况%d”,s);
}
else如果(r==2){
s=b.helath-gun1;
printf(“\n阿特曼的健康状况%d”,s);
}
}而(打孔==1 | |打孔>=2);
返回0;
}

敌人的值永远不会改变,因此除非冲床的值改变,否则这实际上是一个常量。您可能希望执行以下操作:

enemy -= punch;
if (enemy <= 0) {
  printf("Batman wins!");
}
敌方-=punch;

如果(敌方敌方的值从未改变,那么除非冲床的值改变,否则这实际上是一个常量。您可能需要执行以下操作:

enemy -= punch;
if (enemy <= 0) {
  printf("Batman wins!");
}
敌方-=punch;

如果(请格式化您的代码并解释您的问题),您将不得不为要更新的变量分配新值。“问题是数字没有改变,它在第二个语句中保持在95或90。”哪个数字没有改变?什么是“第二个语句”?
while(punch==1 | | punch>=2)
为什么不
while(冲压>=1)
?每次分配给
sum
时,您并不是从旧的
sum
中减去。您只是从
b
中的值中减去,该值不变。请格式化您的代码并解释您的问题。您必须为要更新的变量分配新值。“问题是数字没有改变,它在第二个语句中保持在95或90。”哪个数字没有改变?什么是“第二个语句”?
while(punch==1 | | punch>=2)
为什么不
while(punch>=1)
?每次分配给
sum
时,您并不是从旧的
sum
中减去。您只是从
b
中的值中减去,该值不变。