1

我正在尝试制作一个具有菜单系统的程序,用户可以在其中选择一个选项,输入所需的数字,然后执行一些操作(在这种情况下,位移),然后返回菜单......但是,在测试这个到目前为止的代码是输出:

                 Main Menu    
                ---------    
1. Perform Left Bit Shift Operation (one value)
2. Perform Right Bit Shift Operation (one value)
3. Perform Binary AND Operation (two values)
4. Perform Binary OR Operation (two values)
5. Perform Binary One's Complement (~) Operation (one value)
6. Perform Binary XOR Operation (two values)
7. Quit 
1


Entered Integer: 0
Left Shifted: 0

它完全跳过了我接下来的两个 scanf 语句,只打印了我初始化的值。是什么导致了这个问题?另外,显示表示为位的整数的最简单方法是什么?我想让 showbit(int inttobit) 做的是接受一个整数并打印它的二进制表示(带有 32 个占位符):EX:1234 = 00000000000000000000010011010010 无论如何,这是我当前的代码如下:

#include <stdio.h>
#include <string.h>
#include <math.h>

void leftShift(int bit, int shift);
void showBits(int inttobit);

int main(void)
{
  int option;
  int value1=0,value2=0;

  while (option != 7)
    {
      printf("\n");
      printf("                Main Menu    \n ");
      printf("               ---------    \n");
      printf("1. Perform Left Bit Shift Operation (one value)\n");
      printf("2. Perform Right Bit Shift Operation (one value)\n");
      printf("3. Perform Binary AND Operation (two values)\n");
      printf("4. Perform Binary OR Operation (two values)\n");
      printf("5. Perform Binary One's Complement (~) Operation (one value)\n");
      printf("6. Perform Binary XOR Operation (two values)\n");
      printf("7. Quit \n");

      scanf("%d",&option);

      if (option == 1)
        {
          scanf("Enter a base 10 Integer: %d ", &value1);
          printf("\n");
          scanf("Enter number of places to shift bit: %d", &value2);
          printf("\n");
          leftShift(value1, value2);
        }
      else if (option == 7)
        {
        break; /* break out of loop */
        }
      else if (option < 0 || option > 9)
        {
          printf("Not an option... out of bounds\n");
        }
        }
      return(0);
}

void showBits(int inttobit)
{
  printf("\n");
  printf("Integer entered: %d\n", inttobit);
  printf("\n");
}
void leftShift(int bit, int shift)
{
  printf("Entered Integer: %d\n", bit);
  printf("Left Shifted: %d\n", shift);
}

非常感谢任何帮助或指导!

4

1 回答 1

3
scanf("Enter a base 10 Integer: %d ", &value1);

这将尝试扫描整个字符串,包括Enter ...文本。您需要printf提示和scanf输入,例如:

printf ("Enter a base 10 Integer: ");
scanf ("%d ", &value1);

尽管请记住,这仍然不是非常健壮的输入代码。示例代码很好,但您希望生产代码更好一些。

于 2013-10-12T01:10:35.437 回答