【问题标题】:Why is my Scanf taking input before printf prints the statement to provide input? [duplicate]为什么我的 Scanf 在 printf 打印语句以提供输入之前接受输入? [复制]
【发布时间】:2021-07-30 05:46:29
【问题描述】:

为什么我的 scanf 在我的 printf 之前执行?

在这段代码中,当要求插入一个元素时,光标要求我再输入一个值,后来我意识到这是选择输入。为什么在选择打印之前询问它?而且main()下可能有一些错误。

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

#define MAX 5

int q[MAX];
int front = 0;
int rear = -1;
int item;

void insert()
{
    if(rear == MAX-1)
    {
        printf("Queue Overflow\n");
        return;
    }
    rear = rear + 1;
    q[rear] = item;
}

int delete()
{
    if(front>rear)
    {
        printf("Queue Underflow\n");
        return;
    }
    front = front + 1;
    int itemdeleted = q[front];
}

void display()
{
    if(front>rear)
    {
        printf("Queue Underflow \n");
        return;

    }
    for(int i=front; i<=rear; i++)
    {
        printf("%d\n", q[i]);
    }
    printf("\n");
}

int main()
{
    while(1)
    {
        int choice, itemdeleted;
        printf("Enter your choice\n");
        printf("Choose\n 1. Insert\n 2. Delete\n 3. Display\n 4. Exit\n");
        scanf("%d", &choice);
        switch(choice)
        {
            case 1: printf("Enter items to insert\n");
                    scanf("%d\n", &item);
                    insert();
                    break;

            case 2: delete();
                    printf("The deleted item is %d\n", itemdeleted);
                    break;

            case 3: display();
            break;

            case 4: exit(0);
            break;
        }
    }
}

这是我得到的输出:

    Enter your choice
Choose
 1. Insert
 2. Delete
 3. Display
 4. Exit
1
Enter items to insert
1
3
Enter your choice
Choose
 1. Insert
 2. Delete
 3. Display
 4. Exit
1

Enter your choice
Choose
 1. Insert
 2. Delete
 3. Display
 4. Exit
1
Enter items to insert
5
3
Enter your choice
Choose
 1. Insert
 2. Delete
 3. Display
 4. Exit
1
5

Enter your choice
Choose
 1. Insert
 2. Delete
 3. Display
 4. Exit

【问题讨论】:

    标签: c data-structures


    【解决方案1】:

    switch语句的情况1:

    scanf 函数中,只删除\n 你的问题就会得到解决。

    【讨论】:

      猜你喜欢
      • 2020-07-15
      • 2023-01-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多