[英]continue program in c++
我的程序是
#include<iostream.h>
#include<stdio.h>
#include<stdlib.h>
int main()
{
int exit;
while(1==1)
{
float a,b,c;
printf("Enter length(in metre)");
scanf("%f",&a);
printf("Enter width(in metre)");
scanf("%f",&b);
printf("Enter height(in metre)");
scanf("%f",&c);
if(5.919<a<=12.056 && 2.340<b<=2.347 && 2.380<c<=2.648)
{
printf("40' high cube \n");
}
else if(a<=5.662 && 2.340<b<=2.438 && c<=2.16)
{
printf("20' open top");
}
else
{
printf("40' flat rack");
}
cout << "Would you like to exit?(Yes/No)"<<endl;
cin >> exit;
if(exit == 1)
{
break;
}
}
return 0;
}
但是,代码给出了错误的答案。无论我给什么饲料..它正在选择 40" 高立方体 另外,我想输入是/否以继续,而不是 1。我该怎么做?
不幸的是,虽然以下内容在语法上是有效的,但它并没有达到您的预期:
5.919<a<=12.056
这被解析为(5.919 < a) <= 12.056
并按如下方式工作: a
与5.919
进行比较,并将该比较的结果( 0
或1
)与12.056
进行比较。 由于0
和1
都小于12.056
,因此整个表达式的计算结果始终为1
。
要修复,请将其重写为:
5.919 < a && a <= 12.056
所有其他类似的表达也是如此。
这条线不符合你的想法。
if(5.919<a<=12.056 && 2.340<b<=2.347 && 2.380<c<=2.648)
要执行您似乎想要的操作,您需要将其更改为:
if(5.919<a&& a<=12.056 && 2.340<b&& b<=2.347 && 2.380<c&& c<=2.648)
此行相同:
else if(a<=5.662 && 2.340<b<=2.438 && c<=2.16)
需要改为:
else if(a<=5.662 && 2.340<b && b <=2.438 && c<=2.16)
当你写这个:
2.340 <b <= 2.347
C 和 C++ 理解的是(2.30 < b) <= 2.347
并且对于 b 的所有值总是如此(C 中的 1),因为(2.30 < b)
是 0 或 1,它总是小于或等于 2.347。 这是神秘而倒退的,但这就是 C 和 C++ 看待世界的方式。 我敢肯定这只会咬你一次,现在轮到你了。
此外,将printf
和scanf
与cin
和cout
混合使用是不好的做法,选择您想要如何进行 I/O 并坚持下去,混合它们会带来其他难以解决的微妙错误。
对于问题的最后一部分,您可以执行以下操作:
#include<stdio.h>
#include<string.h>
int main(void){
char answer[16];
printf("Yes or No\n");
scanf("%s",answer);
if (strncmp(answer,"Yes",3)==0){
printf("yes\n");
}else{
printf("no\n");
}
}
对于输入是/否,您可以使用这种方式..
char exit;
// 在while循环中等待用户输入
exit = getch();
if(exit == 'y' || exit == 'Y' )
break;
//else again go for input.
对于第二部分问题:将条件更改为 Y/N 而不是 1 和 0。使用字符数据类型,或字符串或任何类似的内容。 然后您可以将输入与“退出”进行比较。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.