答案中,cin和cout用scanf和printf函数,而scanf可以scanf("%d",&a,&b)表示, printf 函数一样,但是cin和cout不行,想问一下为什么?
#include<iostream>
#define M 3
#define N 6
#define price 3
using namespace std;
typedef struct
{
int CarNumber[M], cartime[M];
int top;
}SqStack;
void InitStack(SqStack*& e)
{
e = (SqStack*)malloc(sizeof(SqStack));//malloc函数构造指针
e->top = -1;
}
bool StackEmpty(SqStack* e)
{
return (e->top == -1);
}
bool StackFull(SqStack* e)
{
return(e->top == 9);
}
bool Push(SqStack*& e, int c1,int c2)
{
if (e->top == 9)return false;
e->top++;
e->CarNumber[e->top] = c1;
e->cartime[e->top] = c2;
return true;
}
bool Pop(SqStack*& e, int&c1,int&c2)
{
if (e->top == -1)return false;
c1 = e->CarNumber[e->top];
c2 = e->cartime[e->top];
e->top--; return true;
}
void DisStack(SqStack* e)
{
for (int i = 0; i < 9; i++)
{
cout << e->CarNumber[e->top] << e->cartime[e->top]<<endl;
e->top--;
}
}
typedef struct
{
int CarNumber[N];
int front, rear;
}SqQueue;
//采用环形队列
void InitQueue(SqQueue*& q)
{
q = (SqQueue*)malloc(sizeof(SqQueue));
q->front = q->rear = 0;
}
bool QueueEmpty(SqQueue* q)
{
return(q->front == q->rear);
}
bool QueueFull(SqQueue* q)
{
return(q->rear == N - 1);
}
bool enQueue(SqQueue*& q, int e)
{
if ((q->rear+1)%N==q->front)return false;
q->rear = (q->rear + 1) % N;
q->CarNumber[q->rear] = e; return true;
}
bool deQueue(SqQueue*& q, int& e)
{
if (q->front == q->rear)return false;
q->front = (q->front + 1) % N;
e = q->CarNumber[q->front]; return true;
}
//显示队中元素
void DisQueue(SqQueue*& q)
{
int i = (q->front + 1) % N;
cout << q->CarNumber[i];
while ((q->rear - i + N) % N > 0)
{
i = (i + 1) % N;
cout << q->CarNumber[i];
}cout << endl;
}
int main()
{
SqStack* S, * s;
SqQueue* t;
InitStack(S); InitStack(s);
InitQueue(t);
int number, time ;
int e1, e2, order, i, j;
do
{
static int number;
cout << "输入指令:1到达,2离开,3停车场,4候车场,0退出" << endl;
cin >> order;
switch (order)
{
case 1:
cout << "请输入车号和到达时间"; cin >> number >> time;
if (!StackFull(S))
{
Push(S, number, time);
cout << "停车场位置\n" << S->top+1<<endl;
}
else if (!QueueFull(t))
{
enQueue(t, number);
cout << "候车场位置\n" << t->rear;
}
else cout << "候车场已满,不能停车"; break;
case 2:
cout << "请输入车号和离开时间"; cin >>number >> time;//这里的time是即时时间
for ( i = 0; i <= S->top && S->CarNumber[i] != number; i++)
{
if (i > S->top)cout << "未找到该编号的车" << endl;
else {
for (j = i; j <= S->top; j++)
{
Pop(S, e1, e2);
Push(s, e1, e2);
}Pop(S, e1, e2);
cout << number << "汽车需要支付的费用是" << (time - e2) * price << endl;
while (!StackEmpty(s))
{
Pop(s, e1, e2);
Push(S, e1, e2);
}
if (!QueueEmpty(t))
{
deQueue(t, e1);//出队和入栈
Push(S, e1, time);
}
}
}break;
case 3:
if (!StackEmpty(S))
{
cout << "停车场车辆:"; DisStack(S);
}
else cout << "停车场中无车";
break;
case 4:
if (!QueueEmpty(t))
{
cout << "候车场车辆:"; DisQueue(t);
}
else cout << "候车场无车"; break;
case 0:
if (!StackEmpty(S))
{
cout << "停车场车辆:"; DisStack(S);
}if (!QueueEmpty(t))
{
cout << "候车场车辆:"; DisQueue(t);
}break;
default:cout << "输入错误"; break;
}
} while (order!=0);
}
一个是C语言的输入输出,一个是C++的输入输出。。