作者:kingkongkoil | 来源:互联网 | 2023-07-08 12:34
以下代码应提示用户输入价格并将其添加到总计中。如果用户输入-1
,则添加循环必须终止,并且程序应打印总计并退出。但是由于某种原因,这没有发生。
#include
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++;
来增加价格。如果这是为了避免价格为-1且不想从总和中减去的情况,则应检查循环内的exit是否为-1,并使用break
关键字。
这不是最大的问题,但是您应该按照惯例格式化代码(例如,正确缩进,标识符旁边的操作员地址等)。
,
您应该使用 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);
}
}
,
您好,您现在看一下您将int exit命名为init的问题是什么吗?
但是您只将exit设置为int变量,并且内存未过滤,因此计算机从别的东西获取内存,而不是-1,您需要将%d价格放进wile
int price;
do
{
block_of_command
}
While(price!=-1);
或
int exit;
int price
do
{
scanf("%d",&price);
exit=price;
}
while(exit!=-1);
,
我更新了代码,但我不知道如何在退出前添加所有用户输入的价格。这是我的代码。
#include
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;
}