C 打破未选择正确选项时出现问题。

C 打破未选择正确选项时出现问题。,c,C,我是新来的,正在学习编程,我不能让它正常地“中断”。 如果硬币不是0、5、10或25,那么它应该“断裂”(最后一个if)。该程序应该像自动售货机一样,只使用一角硬币、五分镍币和四分之一硬币,当有人输入“0”时,它会停止计数硬币 #include <stdio.h> #define NICKEL 5 #define DIME 10 #define QUARTER 25 int main(void) { int coins; int sum = 0; printf("Ins

我是新来的,正在学习编程,我不能让它正常地“中断”。 如果硬币不是0、5、10或25,那么它应该“断裂”(最后一个if)。该程序应该像自动售货机一样,只使用一角硬币、五分镍币和四分之一硬币,当有人输入“0”时,它会停止计数硬币

#include <stdio.h>
#define NICKEL 5
#define DIME 10
#define QUARTER 25

int main(void)
{
int coins;
int sum  = 0;

    printf("Insert Coins: ");
    scanf("%d",&coins);

    while (coins != 0){
    sum += coins;
        if (coins == NICKEL){
            printf("Insert coins: ");
            scanf("%d",&coins);}
        else {continue;}

        if (coins == DIME){
            printf("Insert Coins: ");
            scanf("%d",&coins);}
        else {continue;}

        if (coins == QUARTER){
            printf("Insert Coins: ");
            scanf("%d",&coins);}
        else {continue;}

     if (coins != NICKEL || coins != DIME || coins != QUARTER || coins !=0){
            break;
            printf("wrong coin");}

        printf("the amount you put in: %d",sum);

    }
#包括
#定义镍5
#定义10美分
#定义第25季度
内部主(空)
{
整版硬币;
整数和=0;
printf(“插入硬币:”);
scanf(“%d”和硬币);
而(硬币!=0){
总和+=硬币;
如果(硬币=镍){
printf(“插入硬币:”);
scanf(“%d”、&coins);}
否则{继续;}
如果(硬币=一角硬币){
printf(“插入硬币:”);
scanf(“%d”、&coins);}
否则{继续;}
如果(硬币=四分之一){
printf(“插入硬币:”);
scanf(“%d”、&coins);}
否则{继续;}
如果(硬币!=镍币!=一角硬币!=四分之一硬币!=0){
打破
printf(“错误的硬币”);}
printf(“您投入的金额:%d”,总和);
}

我认为您正在尝试这样做

#include <stdio.h>
#define NICKEL 5
#define DIME 10
#define QUARTER 25

int main(void)
{
  int coins;
  int sum  = 0;

  do {
    printf("Insert Coins:");
    scanf("%d", &coins);
    if(coins == NICKEL || coins == DIME || coins == QUARTER) {
      sum += coins;
    } else if(coins == 0) {
      break;
    } else {
      printf("Wrong Coin\n");
    }
  }while(1); // Infinite Loop.

  printf("The amount you put in %d\n", sum);
}
#包括
#定义镍5
#定义10美分
#定义第25季度
内部主(空)
{
整版硬币;
整数和=0;
做{
printf(“插入硬币:”);
scanf(“%d”和硬币);
如果(硬币==镍币| |硬币==一角硬币| |硬币==四分之一){
总和+=硬币;
}否则如果(硬币==0){
打破
}否则{
printf(“错误的硬币”);
}
}while(1);//无限循环。
printf(“您放入%d\n中的金额”,总和);
}

我认为您正在尝试这样做

#include <stdio.h>
#define NICKEL 5
#define DIME 10
#define QUARTER 25

int main(void)
{
  int coins;
  int sum  = 0;

  do {
    printf("Insert Coins:");
    scanf("%d", &coins);
    if(coins == NICKEL || coins == DIME || coins == QUARTER) {
      sum += coins;
    } else if(coins == 0) {
      break;
    } else {
      printf("Wrong Coin\n");
    }
  }while(1); // Infinite Loop.

  printf("The amount you put in %d\n", sum);
}
#包括
#定义镍5
#定义10美分
#定义第25季度
内部主(空)
{
整版硬币;
整数和=0;
做{
printf(“插入硬币:”);
scanf(“%d”和硬币);
如果(硬币==镍币| |硬币==一角硬币| |硬币==四分之一){
总和+=硬币;
}否则如果(硬币==0){
打破
}否则{
printf(“错误的硬币”);
}
}while(1);//无限循环。
printf(“您放入%d\n中的金额”,总和);
}

问题在于您的in while语句没有中断

0==0true0!=0false

在控制语句(如if-else、for、while)中,在条件检查中,它总是评估条件,并根据结果作出决定


您已经编写了
while(coins!=0)
当有人输入0时,在计算该
while(0)
之后,它会变成
while(0!=0)
,这会导致循环终止

问题在于您的in-while语句没有中断

0==0true0!=0false

在控制语句(如if-else、for、while)中,在条件检查中,它总是评估条件,并根据结果作出决定


当有人输入0时,你已经写了
while(coins!=0)
,在计算该
while(0)后,它变成
while(0!=0)
这会导致循环终止

硬币!=五分硬币!=一角硬币!=四分之一硬币!=0
总是正确的。你可能想使用
&
而不是
|
。此外,当询问错误行为时,你通常应该说明你期望的行为和你实际的行为我试着做的是寻找镍币、硬币、一角硬币、四分之一硬币和“0”,如果使用的不是上面提到的任何其他东西,会导致循环“中断”并打印出我们的“错误硬币”。我看到的是,当我放入一个#而不是,o,5,10,25时,它只是在不确定状态下运行,它不会执行或停止。你明白为什么使用
|
检查是错误的吗?至于“不确定状态”问题,你为什么不试着在精神上运行该程序?提示:如果第一枚硬币不是五分硬币,会发生什么?(
continue
可能并不代表您认为它的作用。)
硬币!=镍币!=一角硬币!=四分之一硬币!=0
总是正确的。大概你是想用
&
而不是
|
?另外,当问到错误行为的问题时,你通常应该说明你期望的行为和你实际观察到的行为。我想做的是为了尼克l、 硬币、一角硬币、二角五分硬币和“0”,如果上面提到的任何其他硬币被使用,都会导致循环“中断”并打印出我们的“错误硬币”。我看到的是,当我放入一个除o、5、10、25以外的硬币时,它只是在不确定的状态下消失,它不会执行或停止。你明白为什么使用
|
进行检查是错误的吗?至于“陷入困境”的问题,你为什么不试着在精神上运行这个程序呢?提示:如果第一枚硬币不是一枚镍币,会发生什么情况呢?(
continue
可能并不意味着你认为它是什么。)还有一个主要问题是
continue
语句导致循环在不应该的时候过早地重新迭代。还有一个主要问题是
continue
语句导致循环在不应该的时候过早地重新迭代。