排队问题 c语言

排队问题 c语言,第1张

//compiler:GCC

//如果你的编译器不支持C99,那么你需要把arr[t][10000]和ming[t]中的t换成一个具体数字

#include <stdioh>

int main(int argc, char argv)

{

int t;

scanf("%d", &t);

int arr[t][10000];//存放T组M人的编号

int ming[t][2];//存放小明在t组队伍中的编号和人数

int count;//每组队伍的人数

int i,j;

for(i = 0; i < t; i++)

{

scanf("%d", &count);

for(j = 0; j < count; j++)

scanf("%d", &arr[i][j]);

scanf("%d", &ming[i][0]);

ming[i][1] = count;

}

for(i = 0; i < t; i++)

{

for(j = 0; j < ming[i][1]; j++)

if(arr[i][j] != ming[i][0])

printf("%d ", arr[i][j]);

else

continue;

printf("\n");

}

return 0;

}

#include<stdioh>

#include<stdlibh>

#include<timeh>

void sort(int p)

{int i,j,t,t1;

for(i=0;i<12;i++)

{

for(j=0;j<12-i;j++)

if((p+j)>(p+j+1))

{t=(p+j);

 (p+j)=(p+j+1);

 (p+j+1)=t;

}

}

for(i=0;i<12;i++)

if((p+i)%13==0)

{

t=(p+i);

t1=(p+i)/13;

for(j=i;j<=12&&(p+j)/13==t1;j++)

(p+j-1)=(p+j);

(p+j-1)=t;

i=j-1;

}

}

int main()

{int a[52],i,j,t;

srand(time(0));

for(i=0;i<52;i++)a[i]=i;

for(i=51;i>1;i--) //洗牌、发牌(0~12为第一人,13~25为第二人。。。)

{j=rand()%(i+1);

t=a[i];a[i]=a[j];a[j]=t;

}

for(i=0;i<4;i++)        //排序

sort(&a[i13]);

for(i=0;i<52;i++)

{

  switch(a[i]%13)    //不同点数按不同输出

{

case 1:case 2:case 3:case 4:case 5:case 6:case 7:case 8:

case 9: printf("%c%-2d  ",3+a[i]/13,a[i]%13+1); break;

case 10:  printf("%c%J   ",3+a[i]/13); break;

case 11:  printf("%c%Q   ",3+a[i]/13); break;

case 12:  printf("%c%K   ",3+a[i]/13); break;

case 0:   printf("%c%A   ",3+a[i]/13);

}

if(i%13==12)printf("\n");

}

return 0;

}

以下是C语言代码实现:

#include <stdioh>

#include <stdlibh>

#define MAX 100 // 最大队列长度

typedef struct {

int data[MAX]; // 存储队列中的元素

int front; // 队首指针

int rear; // 队尾指针

} Queue;

// 初始化队列

void init(Queue q)

{

q->front = q->rear = 0;

}

// 判断队列是否为空

int is_empty(Queue q)

{

return q->front == q->rear;

}

// 判断队列是否已满

int is_full(Queue q)

{

return (q->rear + 1) % MAX == q->front;

}

// 入队

void enqueue(Queue q, int x)

{

if (is_full(q)) {

printf("队列已满,无法入队!\n");

exit(1);

}

q->data[q->rear] = x;

q->rear = (q->rear + 1) % MAX;

}

// 出队

int dequeue(Queue q)

{

if (is_empty(q)) {

printf("队列为空,无法出队!\n");

exit(1);

}

int x = q->data[q->front];

q->front = (q->front + 1) % MAX;

return x;

}

int main()

{

Queue q;

init(&q);

int n; // 排队人数

printf("请输入排队人数:");

scanf("%d", &n);

int t; // 每个人需要的时间

for (int i = 1; i <= n; i++) {

printf("请输入第%d个同学需要的时间:", i);

scanf("%d", &t);

enqueue(&q, t);

}

printf("排队打饭开始!\n");

int time = 0; // 当前时间

while (!is_empty(&q)) {

int x = dequeue(&q); // 出队

time += x; // 更新当前时间

printf("第%d个同学打饭用时%d分钟,当前时间为%d分钟\n", n - qrear, x, time);

}

printf("所有同学打饭完成!\n");

return 0;

}

程序运行后,先输入排队人数,然后输入每个人需要的时间,程序会模拟排队打饭的过程,输出每个人的打饭时间和当前时间,最后输出所有同学打饭完成的提示。

最简单的C语言代就是输出“helloWord”,通常是作为初学编程语言时的第一个程序代码。具体代码如下:

#include <stdioh>

int main(){

  printf("Hello, World! \n");

  return 0;

}

扩展资料:

1、程序的第一行#include <stdioh>是预处理器指令,告诉 C 编译器在实际编译之前要包含 stdioh 文件。

2、下一行intmain()是主函数,程序从这里开始执行。

3、下一行printf(...)是C中另一个可用的函数,会在屏幕上显示消息"Hello,World!"。

4、下一行return0;终止main()函数,并返回值0。

参考资料来源:百度百科-c语言

程序实现中用链表来表示排队系统的队列。如果需要考虑并发在队列的入队 *** 作前增加缓冲区域,采用设定的策略来进行优先级选择。系统如果需要图形界面演示则可采用图形库开发界面把后台排队的数据进行展示。

以上就是关于排队问题 c语言全部的内容,包括:排队问题 c语言、C语言,写程序实现一堆扑克牌的排序。、用C语言实现排队打饭,第i个同学需要多长时间等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10217111.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存