-1
我試圖正確地獲取這個程序的輸出,但是我無法做到。這是因爲我無法在行「printf(」輸入要插入的字符串= \ n「)之後的insert()函數中輸入任何字符串;」雖然我正在使用gets()和正確的頭文件。 我得到的輸出是這樣的:C中的循環隊列打印
Choice 1 : Enter element into Queue
Choice 2 : Delete element from Queue
Choice 3 : Display
Any other choice : Exit
Enter your choice
1
Enter the string to be inserted =
Choice 1 : Enter element into Queue
Choice 2 : Delete element from Queue
Choice 3 : Display
Any other choice : Exit
Enter your choice
1
Enter the string to be inserted =
Choice 1 : Enter element into Queue
Choice 2 : Delete element from Queue
Choice 3 : Display
Any other choice : Exit
Enter your choice
1
Enter the string to be inserted =
Choice 1 : Enter element into Queue
Choice 2 : Delete element from Queue
Choice 3 : Display
Any other choice : Exit
Enter your choice
3
The contents of the queue are
Choice 1 : Enter element into Queue
Choice 2 : Delete element from Queue
Choice 3 : Display
Any other choice : Exit
Enter your choice
2
Deleted string is =
Choice 1 : Enter element into Queue
Choice 2 : Delete element from Queue
Choice 3 : Display
Any other choice : Exit
Enter your choice
3
The contents of the queue are
Choice 1 : Enter element into Queue
Choice 2 : Delete element from Queue
Choice 3 : Display
Any other choice : Exit
Enter your choice
2
Deleted string is =
Choice 1 : Enter element into Queue
Choice 2 : Delete element from Queue
Choice 3 : Display
Any other choice : Exit
Enter your choice
3
The contents of the queue are
Choice 1 : Enter element into Queue
Choice 2 : Delete element from Queue
Choice 3 : Display
Any other choice : Exit
Enter your choice
2
Deleted string is =
Choice 1 : Enter element into Queue
Choice 2 : Delete element from Queue
Choice 3 : Display
Any other choice : Exit
Enter your choice
3
Queue is empty
Choice 1 : Enter element into Queue
Choice 2 : Delete element from Queue
Choice 3 : Display
Any other choice : Exit
Enter your choice
4
我寫的程序如下:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define MAX 5
int front = 0;
int rear = -1;
char queue_array[MAX][30];
void insert();
void Delete();
void display();
int main()
{
int choice;
while(1)
{
printf("Choice 1 : Enter element into Queue\n");
printf("Choice 2 : Delete element from Queue\n");
printf("Choice 3 : Display\n");
printf("Any other choice : Exit\n");
printf("Enter your choice\n");
scanf("%d", &choice);
switch(choice)
{
case 1: insert();
break;
case 2: Delete();
break;
case 3: display();
break;
default:exit(0);
} // End of switch()
} // End of while()
} // End of main()
void insert()
{
char add_item[30];
if((front == 0 && rear == MAX - 1) || (front != 0 && rear == front - 1))
printf("Queue is full\n");
else
{
printf("Enter the string to be inserted = \n");
gets(add_item);
if(rear == MAX - 1 && front != 0)
{
rear = 0;
strcpy(queue_array[rear], add_item);
}
else
{
rear = rear + 1;
strcpy(queue_array[rear], add_item);
}
}
}
void Delete()
{
char del_item[30];
if(front == 0 && rear == -1)
{
printf("Queue is empty\n");
return;
}
if(front == rear)
{
strcpy(del_item, queue_array[front]);
front = 0;
rear = -1;
}
else if(front == MAX - 1)
{
strcpy(del_item, queue_array[front]);
front = 0;
}
else
{
front = front + 1;
strcpy(del_item, queue_array[front]);
}
printf("Deleted string is =\n");
puts(del_item);
} // End of delete()
void display()
{
int i, j;
if(front == 0 && rear == -1)
{
printf("Queue is empty\n");
return;
}
printf("The contents of the queue are ");
if(front > rear)
{
for(i = 0; i <= rear; i++)
puts(queue_array[i]);
for(j = front; j < MAX - 1; j++)
puts(queue_array[j]);
}
else
{
for(i = front; i <= rear; i++)
puts(queue_array[i]);
}
printf("\n");
} // End of display()
我真的很感激任何幫助。感謝提前:)
謝謝,男人!用scanf()替換獲取工作。但是,我仍然只能通過80%的測試用例來解決這個問題! –