C程序显示无错误但不显示输出

9gm1akwq  于 2023-06-21  发布在  其他
关注(0)|答案(5)|浏览(149)

罗伊想换他在Facebook上的头像现在Facebook对我们可以上传的图片的尺寸有一些限制。图片的最小尺寸可以是LXL,其中L是正方形的边长。
现在罗伊有N张不同尺寸的照片。照片的尺寸表示为WXH,其中W-照片的宽度,并且H-照片的高度
当上传任何照片时,可能会发生以下事件:
1.如果宽度或高度中的任何一个小于L,则提示用户上传另一个。在这种情况下打印“UPLOAD ANTHER”。
1.如果宽度和高度都足够大,并且(a)如果照片已经是正方形,则可以接受。在这种情况下打印“接受”。(b)否则提示用户对其进行裁剪。在这种情况下打印“CROP IT”。
代码:

#include <stdio.h>
#include <stdlib.h>

int main (void)
{
     int len; /* len is the length of the side of square */
     scanf("%d",&len); 

     int test;
     scanf("%d",&test);

     while(test--)
     {
         int w,h; 
         /* w - width of the photo and h- Height of the photo */

         scanf("%d %d",&w,&h);

         if(w==len && h==len)
         {
             printf("ACCEPTED\n");
         }
         else if(w>len || w==len && h>len || h==len)
         {
             printf("CROP IT\n");
         }
         else
         {
             printf("UPLOAD ANOTHER\n");/* print */
         }
     }

     return 0;/* success */
}
oewdyzsn

oewdyzsn1#

如果您的问题是看不到任何输出,则可能是因为它在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");
}
db2dz4w8

db2dz4w82#

由于operator precedence

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

相当于:

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 )
kq0g1dla

kq0g1dla3#

你可能需要进入文件>首选项>设置>键入'coderunner'>勾选'在终端中运行'
我正在寻找类似的问题并解决了它。

gcuhipw9

gcuhipw94#

它将显示输出,但程序运行速度比您预期的要快。显示输出后,它将立即关闭。它不会等到你读它。因此,使用conio.h中声明的getch();,在打印完所有输出后(正好在return语句之前),获得一次按键作为输入。它将使程序等待用户在退出前按下一个键。

ztyzrc3y

ztyzrc3y5#

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

**注意:**这不是答案。但这仅仅是给予图片示例的唯一方法:)不需要向上

也许你只需要在返回之前将getchar();放在代码的末尾,让屏幕暂停一段时间。它的速度非常快

相关问题