求编程题(看病要排队)的代码,必须用C语言解答,越基础越容易看懂越好,不要从别处copy来

   更新日期:2024.05.02
struct BR_ //病人结构体;
{
int id; //病人ID;
int lv;//病人等级;
};

int main()
{
int n,i,j,yisheng,binglv,brnum = 0;
BR_ b2y[3][100] = { };//存放每个医生对应的病人;
int bingnum[3] = {}; //存放每个医生对应的病人个数;
char order[5];

//这里可以把所有输入的字串,存起来,再一一解决; 但是你原来的代码,是输入一个处理一个;
//所以 我也输入一个 处理一个了;
//但是题意是 : 输入完成后,再依次输出;
//所以,只能把要输出的东西,存在一个数组里面(下面的数组);等输入完成后再统一依次输出
char print_[300][8] = {}; //用来存放 最后print的字符串; 每一个out 都要处理一下;

int str_num = 0; //字符串的条数;

scanf("%d",&n);
for(j = 0 ; j < n;++j)
{
scanf("%s",order);
if(strcmp(order,"IN") == 0 ) //字符串比较,如果输入的IN,
{
brnum += 1;
scanf("%d",&yisheng);
scanf("%d",&binglv);
BR_ temp;
temp.id = brnum;
temp.lv = binglv;
b2y[ yisheng ][ bingnum[yisheng] ] = temp;
bingnum[yisheng]++;

//排序; 把等级高的 放在前面; 注意使用 稳定排序 的方式;比如下面的选择排序;
int pos = 0;
while(pos != n - 1)
{
for(i = pos + 1; i< n;++i)
{
if(b2y[yisheng][pos].lv < b2y[yisheng][i].lv)
{
BR_ temp1 = b2y[yisheng][pos];
b2y[yisheng][pos] = b2y[yisheng][i];
b2y[yisheng][i] = temp1;
}
}
pos++;
}
}
else if( strcmp(order,"OUT") == 0) //
{
scanf("%d",&yisheng);
if(bingnum[yisheng] <= 0) //如果这个医生当前病人为0 输出empty;
strcpy(print_[str_num++],"EMPTY");

else //不为0;输出排在最前面(也就是等级最高的病人);
{
char temp;
itoa(b2y[yisheng][0].id,print_[str_num++],10);

//最前面的病人 已经处理了,所以把数组后面的元素依次往前移动;
for(i = 0;i < bingnum[yisheng] - 1;++i)
{
b2y[yisheng][i] = b2y[yisheng][i + 1];
}
bingnum[yisheng]--;//病人数量递减;
}
}
}
for(i = 0 ; i < str_num;++i)
printf("%s\n",print_[i]);
return 0;
}

您好,根据您的要求编写代码如下!希望可以帮到您!
#include<stdio.h>
void main()
{
int n,i,j,k; printf("N =");
scanf("%d",&n);

printf("--------(A)--------\n"); //打印A方正 for(i=1;i<=n;i++)
{
if(i%2==0) //整除刚好为倍数
{ k=n*i; }
else //不能整除,则为上行倍数+1
{ k=(i-1)*n+1; }
for(j=0;j<n;j++)
{ printf("%2d ",k+(i%2?j:-1*j)); //为倍数则减,否则为加
}
printf("\n");
}

printf("--------(B)--------\n"); //打印B方正 for(i=0;i<n;i++)
{ for(j=1;j<=n;j++)
{ if(j%2==0) //同上
{ k=j*n; }
else { k=(j-1)*n+1; }
printf("%2d ",k+(j%2?i:-1*i));
}
printf("\n");
}
puts("\n");
}

  • 13523772233 :用c语言编写医院排队看病系统,急啊!!!求大神!!
    长恒使902 :答:qu); break; //显示排队病人 case 4: { printf("若您需要马上就诊,请输入您的号:"); scanf("%d",&quik); quikSee(qu,quik); printf("\n"); } break; //任意顺序就诊 case 5...
  • 13523772233 :采用链队设计一个算法,反应病人看病、排队看医生的情况,在病人排队过 ...
    长恒使902 :答:while(flag==1){ //循环执行 printf("1:排队 2:就诊 3:查看排队 4:不再排队,余下依次就诊 5:下班 请选择:");scanf("%d",&sel);switch(sel){ case 1:printf(" >>输入病历号:");do{ scanf("...
  • 13523772233 :c语言课程设计题目 医院排队看病系统
    长恒使902 :答:qu); break; //显示排队病人 case 4: { printf("若您需要马上就诊,请输入您的号:"); scanf("%d",&quik); quikSee(qu,quik); printf("\n"); } break; //任意顺序就诊 case 5...
  • 13523772233 :java数据结构课程设计病人排队就诊问题!!!
    长恒使902 :答:);binRenNumber++;System.out.println("来了一个病人,号码是:"+binRenNumber);binRenDeque.push(binRenNumber);} //列出所有等待的病人 for(Integer bn:binRenDeque){ System.out.println(bn+"号的病人在排队");...
  • 13523772233 :...个程序模拟病人排队看病,跪求高手解题啊,我要代码
    长恒使902 :答:int NO;Node(int no):NO(no),next(NULL){} };class Deque { private:Node *Head;Node *Tail;int Number;public:Deque():Head(NULL),Tail(NULL),Number(0){} ~Deque(){ if(Number ! =0){ for(int i=...
  • 13523772233 :求病人排队看病的c#代码
    长恒使902 :答:我还以为是实际的医院里病人排队系统呢,没想到是这么个简单东西,没意思
  • 13523772233 :...排队叫号系统,简单的就行。需要程序文件和源代码。如果有好心人请...
    长恒使902 :答:程序很简单,说白了就是对一个数据表(排队号)进行操作啊,客户取号生成排队号(当然可按业务分类取号,如:公司业务、个人业务等),柜台叫号时将当前号置为无效,并取下一个号。熟手半天搞定了。
  • 13523772233 :C编程的一个小题目:有一个已排好序的数组,要求输入一个数后,按原来排序...
    长恒使902 :答:int main(){ int a[11]={1,4,6,9,13,16,19,28,40,100};int temp,i=0,j=0;scanf("%d",&temp);for(i=9;i>=0;i--){ if(temp<a){ a[i+1]=a;}else{ a[i+1]=temp;break;} } for(i=0;...
  • 13523772233 :急!急!简单c语言编程题,求编写代码
    长恒使902 :答://第一题#include<stdio.h>void fun(int n){ int i,j,k,t;for(k=0;k<n;k++)//控制总行数{ for(i=0;i<n-k-1;i++)//控制输出空格,因为空格不好看见,就用*代替 printf("%c",'*'); ...
  • 13523772233 :C++编程题:帮我理解一下这个代码
    长恒使902 :答:首先分析一下这个题目,题目分析清楚了,代码也就清楚了。我们假设摆2*N块砖有dig[n]中方法,根据下面的分析,我们可以dig[n]递归到dig[n-1]和dig[n-2]上,dig[n]可以分解为上图的三种摆法:1. 最后选一块2*1的...
  • 相关链接

    欢迎反馈与建议,请联系电邮
    2024 © 视觉网