繁体   English   中英

在 C++ 中继续程序

[英]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并按如下方式工作: a5.919进行比较,并将该比较的结果( 01 )与12.056进行比较。 由于01都小于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++ 看待世界的方式。 我敢肯定这只会咬你一次,现在轮到你了。

此外,将printfscanfcincout混合使用是不好的做法,选择您想要如何进行 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM