C程序不显示错误,但不显示';不显示输出

C程序不显示错误,但不显示';不显示输出,c,C,罗伊想在Facebook上更改他的个人资料图片。现在Facebook对我们可以上传的图片尺寸有一些限制。 图片的最小尺寸可以是L x L,其中L是正方形边的长度 现在罗伊有N张不同尺寸的照片。 照片的尺寸表示为W x H 式中,W-照片宽度和H-照片高度 上传任何照片时,可能会发生以下事件: 如果任何宽度或高度小于L,将提示用户上载另一个。在这种情况下,打印“上载另一个” 如果宽度和高度都足够大 (a) 如果照片已经是方形的,那么它是可以接受的。在这种情况下,打印“已接受”。 (b) 否则会提示

罗伊想在Facebook上更改他的个人资料图片。现在Facebook对我们可以上传的图片尺寸有一些限制。 图片的最小尺寸可以是L x L,其中L是正方形边的长度

现在罗伊有N张不同尺寸的照片。 照片的尺寸表示为W x H 式中,W-照片宽度和H-照片高度

上传任何照片时,可能会发生以下事件:

  • 如果任何宽度或高度小于L,将提示用户上载另一个。在这种情况下,打印“上载另一个”
  • 如果宽度和高度都足够大 (a) 如果照片已经是方形的,那么它是可以接受的。在这种情况下,打印“已接受”。 (b) 否则会提示用户裁剪它。在这种情况下打印“裁剪” 代码:

    #包括
    #包括
    内部主(空)
    {
    int len;/*len是正方形边的长度*/
    scanf(“%d”和“len”);
    智力测验;
    扫描频率(“%d”和测试);
    而(测试--)
    {
    int w,h;
    /*w-照片的宽度和h-照片的高度*/
    scanf(“%d%d”,&w,&h);
    如果(w==len&&h==len)
    {
    printf(“已接受的”);
    }
    else如果(w>len | | w==len&&h>len | h==len)
    {
    printf(“裁剪它”);
    }
    其他的
    {
    printf(“上载另一个\n”);/*打印*/
    }
    }
    返回0;/*成功*/
    }
    
    它将显示输出,但程序运行速度比您预期的快。一旦显示输出,它将立即关闭。它不会等到你读了它。
    所以使用
    getch()
    conio.h
    中声明,以便在打印完所有输出后(就在
    return
    语句之前)获得一个按键作为输入。它将使程序等待用户按键后退出。

    这是屏幕截图。它在我身上运行,没有错误

    注意:这不是答案。但这只是给出图片示例的唯一方法:)无需放弃

    也许你只需要把
    getchar()在返回前的代码末尾,让屏幕暂停一段时间。它正以非常快的速度退出

    ,原因是

    相当于:

        else if(w>len || (w==len && h>len) || h==len)
    
    您需要使用的是:

        else if( (w>len || w==len) && (h>len || h==len) && (w == h) )
    
    您可以将其简化为:

        else if( w >= len  && h >= len && w == h )
    
    可进一步简化为:

        else if( w >= len  && w == h )
    

    如果您的问题是根本看不到输出,很可能是因为它在IDE中运行,并且输出窗口在您看到它之前就关闭了。在
    main()
    的末尾明智地使用
    getchar()
    可能就是解决这个问题所需的全部,尽管我可能更喜欢从命令行运行它

    在任何情况下,由于
    &&
    的优先级高于
    |
    ,因此第二个条件实际上是:

    else if ((w > len) || (w == len && h > len) || (h == len))
    
    这显然是错误的,因为如果照片的宽度大于所需的宽度,则无论其他子条件如何,都会导致裁剪请求

    您最好更仔细地遵循文本规范,这样您就可以更轻松地检查它。这将需要一些类似的东西(稍微简化的规范仍然符合最初的意图):

    • 如果任何宽度或高度小于
      L
      ,系统将提示用户上载另一个
    • 否则两者都足够大。如果照片已经是方形的,那么它是可以接受的
    • 否则会提示用户裁剪它
    这方面的代码要简单得多:

    if ((w < len) || (h < len)) {
        puts ("UPLOAD ANOTHER");
    } else if (h == w) {    // Both large enough otherwise previous
        puts ("ACCEPTED");  //   condition would have been true.
    } else {
        puts ("CROP IT");
    }
    
    if((w
    Gosh,请充分识别您的代码。这将使我们和您的事情变得更容易。请提供输入值。当你说“不显示输出”时,你的意思是根本没有输出,还是它没有显示你期望的输出?最后,与其让别人帮你调试,不如学着有效地调试——特别是学着使用调试器,这对你更有好处。只需将getch()放在return之前的末尾,不要忘记检查输入操作是否有效。例如,如果您键入的尺寸为
    250x325
    ,您就会遇到麻烦。不管怎样,还有一个其他的。。。如果有输出的话,它会输出。@jace,我怀疑没有输出。我认为OP没有得到他们所期望的输出。或者,如果(w>=len&&w==h)
    或者,由于前面的检查已经确定
    h
    w
    都足够大,或者进一步简化为
    ,否则如果(w==h)
    :-)C中既没有
    conio.h
    也没有
    getch()
    ,尽管印度教育机构倾向于继续教授技术已死的人:——)
    else if ((w > len) || (w == len && h > len) || (h == len))
    
    if ((w < len) || (h < len)) {
        puts ("UPLOAD ANOTHER");
    } else if (h == w) {    // Both large enough otherwise previous
        puts ("ACCEPTED");  //   condition would have been true.
    } else {
        puts ("CROP IT");
    }