2

我想要一个程序,它可以从用户那里获取两个整数并将这些输入的总和放入一个变量中,然后检查总和是否大于 5?(我知道我可以用 if 来做到这一点,......但我想用 while 来做)。我自己做了,但它有一些问题,你介意说一下问题是什么,我该如何调试它?这是我的代码:

#include <stdio.h>
int main()
{
    int ui1;
    int ui2;
    puts("Please enter two numbers:");
    scanf("%2i", &ui1, &ui2);
    int sum;
    sum = ui1+ui2;
    while(sum > 5) { 
         printf("Whats up !");
    }
    return 0;
}
4

5 回答 5

6

此行只扫描 1 个整数(%i2格式,表示只取 2 位数字。):

scanf("%2i", &ui1, &ui2);

但是您似乎希望收到两个整数。
这将使第二个参数ui2, 未初始化。(至少
应该成功填充)ui1

请尝试:

scanf("%i %i",  &ui1, &ui2);
于 2013-09-16T15:41:21.727 回答
2

尝试将 scanf 语句包含到循环中,它将不再是无限循环...(还需要取消引用整数,请参阅编辑)

#include <stdio.h>
int main()
{
    int ui1;
    int ui2;
    puts("Please enter two numbers:\n");
    //scanf("%2i", &ui1, &ui2);
    int sum = 10;//(so that it will enter the loop at least once)
    //sum = ui1+ui2;
    while(sum > 4) 
    { 
        printf("enter number 1:\n");
        scanf("%i", &ui1); //EDIT &
        printf("enter number 2:\n");
        scanf("%i", &ui2); //EDIT &
        sum = ui1+ui2;        
    }
    printf("result is:  %d\n", sum);
    getchar();//so you can see the result;
    getchar();
    return 0;
}
于 2013-09-16T16:45:57.067 回答
1

您需要重置“总和”,否则 while 循环将永远为真。其次,输入 scanf 是完全错误的。

这里是正确的代码

#include <stdio.h>
int main()
{
    int ui1;
    int ui2;
    puts("Please enter two numbers:");
    scanf("%d %d", &ui1, &ui2);
    int sum;
    sum = ui1+ui2;
    while(sum > 4) { printf("Whats up !");
    sum=0;}
    return 0;
}
于 2013-09-16T15:42:05.057 回答
1

实际上 while 是一个循环 stmt 而不是条件检查器

如果你想要条件检查器使用 if...else series , switch 等

注意: 在您的代码循环中开始 if (sum > 5) 并且永远不会结束(infinate "Whats up !")

sum = ui1+ui2;
while(sum > 5)  ///loop starts if (sum > 5) and never ends (infinate "Whats up !")
{ 
     printf("Whats up !"); // (infinate "Whats up !")
}

  if(sum > 5)

  {

  //greater stuff
  }

   else

{

   //lower stuff
}

请参阅此处的教程 条件Stmts

于 2013-09-16T15:44:23.570 回答
0

我不确定我是否得到了你想要做的......但如果你只是想使用 while 语句检查两个整数的总和,你可以在 while 循环中放置一个中断,一切都会正常工作:)

#include <stdio.h>
int main()
{
    int ui1;
    int ui2;
    puts("Please enter two numbers:");
    scanf("%2i", &ui1, &ui2);
    int sum;
    sum = ui1+ui2;
    while(sum > 5) { 
         printf("Whats up !");
         break;
    }
    return 0;
}

正如其他人告诉你的那样,使用 if 是最好的解决方案

于 2013-09-16T17:44:31.440 回答