需要协助审查计划

时间:2015-03-22 20:55:11

标签: c if-statement

我正在尝试创建一个程序,您可以从中选择四个数字中的一个,每个数字除了其中两个之外还会给出不同的结果。选择10将对其进行平方,得到答案100.选择9将要求您选择不同的数字,选择2或3会将数字乘以99.

我遇到的问题是四个数字中的一个有效,如果输入9,它将提示用户选择不同的数字,这是正确的。但是,选择10,3或2将给出答案0,这是不正确的。虽然直接键入10,3或2将无法提供正确的答案,但如果先输入9,然后选择2或3,它将输出正确的答案,输入10将给你990。

这就是我所拥有的。我哪里做错了?提前谢谢!

#include <stdio.h>
int main (void)
{
int num1, answer;
num1=answer=0;

   printf ("Choose a number 2, 3, 9, 10: "); 
   scanf ("%d", &num1); 

while (num1 == 9) 
 {
   if (num1 == 10)
  {    answer = num1^2;
  }
     if (num1 == 9)
   {     printf ("Please choose another number: ");
       scanf ("%d", &num1); 
   }
       if (num1 == 2||3)
         answer = num1 * 99; 
 }
 printf ("Your answer is: %d", answer);
return 0;
}

2 个答案:

答案 0 :(得分:2)

在C中,num1^2不会计算num1的平方,但2的值将bitwise XOR


除此之外,

if (num1 == 2||3)

与:

相同
if ((num == 2) || (3))

总是如此。

答案 1 :(得分:1)

要修复的示例

#include <stdio.h>

int main (void){
    int num1, answer;
    num1=answer=0;

    printf("Choose a number 2, 3, 9, 10: "); 
    scanf("%d", &num1); 

    while (num1 == 9){
        printf ("Please choose another number: ");
        scanf ("%d", &num1);
    }
    if (num1 == 10){
        answer = num1 * num1;
    } else if (num1 == 2 || num1 == 3){
        answer = num1 * 99; 
    } else {
        ;//choice other number!!
    }
    printf ("Your answer is: %d\n", answer);

    return 0;
}