为什么我的程序在给出 -1 之前不添加数字?

Why does my program not add numbers until -1 is given?

以下代码应提示用户输入价格并将其添加到总数中。如果用户输入 -1 添加循环必须终止并且程序应该打印总数并退出。但由于某种原因,这并没有发生。

#include <stdio.h>
int main()
{
  int price;
  int sum;
  int exit;

  do
  {
    printf(" Enter a price(-1 to exit)");
    scanf("%d", & price);
    sum = sum + price++;

    printf("the sum of prices is % d ", sum);
  }
  while (exit != -1);

  return 0;
}

问:为什么我的程序在给出 -1 之前不添加数字?

您没有将 exit 分配给任何东西。如果您希望用户输入字符串 -1,则检查 price 是否为 -1 并退出循环。如果您想让用户输入一个值为 -1 的字符,则使用 fgetc(stdin),并检查字符是否为 -1。

此外,要正确计算总和,您不应使用 sum = sum + price++; 增加价格。如果这是为了规避 price 为 -1 的情况并且你不想从总和中减去,你应该检查循环内的 exit 是否为 -1,并使用 break 关键字。

这不是最大的问题,但您应该根据约定格式化您的代码(例如,正确缩进、标识符旁边的操作员地址等)。

你好伙计,现在看看你命名为 int exit 的问题是什么? 但是你只退出 int 变量并且内存未经过滤所以计算机从其他东西获取内存而不是 -1 你需要将 %d 价格放在诡计中

int price;
do
{
 block_of_command
}
While(price!=-1);

int exit;
int price
do
{
scanf("%d",&price);
exit=price;
}
while(exit!=-1);

我更新了代码,但我不知道如何在退出前添加所有用户输入的价格。这是我的代码。

#include<stdio.h>
int main()
{
int price;
int sum = 0;

while(price != -1)
{
    printf(" Enter a price(-1 to exit)");
    scanf("%d", & price);


    if (price == -1)
    {
      sum = sum + price;
      printf(" adds is %d", sum);
      break;
    }

   }



  return 0; 
  }

你应该使用if-else语句来解决它。如下图所示:

while(price != -1)
{
    printf(" \nEnter a price(-1 to exit)");
    scanf("%d", &price);
    if (price == -1)
    {
      break;
    }
    else{
        sum = sum + price;
        printf(" \ntotal sum till now is %d", sum);
    }
}