導航:首頁 > 編程語言 > 編程題3排隊游戲

編程題3排隊游戲

發布時間:2022-06-22 01:14:58

1. C語言編程題目 實現銀行的電子排隊業務 急~ 40分

這次完全改好了:

#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
typedef struct node
{
int num;
char name[20];
}LNode;
LNode QUEUE[20];
int front=0;
int rear=0;
int i=0;
int main()
{
int MAINX(LNode QUEUE[20]/*,int front,int rear*/); //改動
MAINX(QUEUE/*,front,rear*/);//改動
return 0;
}

int MAINX(LNode QUEUE[20]/*,int front,int rear*/)
{
int ADDCQ(LNode QUEUE[20]/*,int front,int rear*/);
int dayin(LNode QUEUE[20]/*,int front,int rear*/);
int pan(LNode QUEUE[20]/*,int front,int rear*/);
while(1)
{
ADDCQ(QUEUE/*,front,rear*/);
dayin(QUEUE/*,front,rear*/);
pan(QUEUE/*,front,rear*/);
}
return 0;
}

int pan(LNode QUEUE[20]/*,int front,int rear*/) //判斷
{
int dayin(LNode QUEUE[20]/*,int front,int rear*/);
int DELCQ(LNode QUEUE[20]/*,int front,int rear*/);
char operation;
printf("處理完畢請輸入Y 需要新客戶服務請輸入N:");
scanf("%s",&operation);
if (operation=='Y')
{
DELCQ(QUEUE/*,front,rear*/);
dayin(QUEUE/*,front,rear*/);
pan(QUEUE/*,front,rear*/);//改動
}
return 0;
}

int ADDCQ(LNode QUEUE[20]/*,int front,int rear*/) //添加
{
int pan(LNode QUEUE[20]/*,int front,int rear*/);
printf("請客戶輸入姓名以得到服務編號:");
if((rear+1)%20==front)
{
printf("隊列已滿,請稍候再領取服務編號。\n");
pan(QUEUE/*,front,rear*/); //改動
}
else
{
//getchar();
//gets(QUEUE[(++rear)%20].name);
scanf("%s",&QUEUE[(++rear)%20].name);
i++;
QUEUE[rear%20].num=i;
}
return 0;
}

int DELCQ(LNode QUEUE[20]/*,int front,int rear*/) //刪除
{
int pan(LNode QUEUE[20]/*,int front,int rear*/);
if(front==rear)
{
printf("輸入錯誤。");
pan(QUEUE/*,front,rear*/);//改動
}
else
{
front=(front+1)%20;
}
return 0;
}

int dayin(LNode QUEUE[20]/*,int front,int rear*/) //列印等待列表
{
int j,k;
printf("當前客戶等待情況:\n");
if(i==1&&front==rear)
printf("無等待。\n");
else
{
k=front+2;
for(j=QUEUE[front+2].num;j<=i;j++,k++)
{
k=k%20;
printf("處理編號:%d 客戶姓名:%s\n",QUEUE[k].num,QUEUE[k].name);
}
}
return 0;
}

2. C語言編程問題:小白鼠排隊

我發現了以下幾個問題:
1,你的本意是想定義幾個字元數組,來裝這幾個老鼠的名字。但是,你只定義了一個字元數組,說明只能裝一個名字,所以是不行的。建議定義成二維的字元,如a[100][100],這樣你就能裝最多100個老鼠的名字了。
2,字元串的末尾是需要有'\0'作為結束標志的,而你的程序沒有這一項,這也是不可以的,建議在定義的時候就初始化成0。
3,q=color[i];
color[i]=color[i+1];
color[i+1]=q;
這個地方,說明你對字元串這一塊還不是很了解,建議找相關書籍看一下。字元串是不能直接這樣相互復制的,需要調用strcpy函數。而且,你定義的q只是一個簡單的字元,不是字元串,字元串是不能直接賦值給字元的,所以這個地方不對。q要定義字元串,比如q[100]。
由於我是定義了二維數組,所以此時color[i]不是第i個老鼠的名字,而是這個存放老鼠名字的首地址。
4,建議在輸入前輸入提示符,這樣便於別人閱讀和運行。我把我改的給你,你看看,也許還有問題,請你自己完善吧。。。
有什麼不懂的,請追問。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{ int a[100],p;
char color[10][100]={0},q[100]={0};
int n,i,k;
printf("How many numbers do you want to put in?\n");
scanf("%d",&n);
printf("Please input the numbers and names:\n");
for(i=0;i<n;i++)
{
scanf("%d %s",&a[i],color[i]);
//gets(color[i]);
}
for(k=n-1;k>0;k--)
{
for(i=0;i<k;i++)
{
if(a[i]<a[i+1])
{ p=a[i];
a[i]=a[i+1];
a[i+1]=p;
strcpy(q,color[i]);
strcpy(color[i],color[i+1]);
strcpy(color[i+1],q);
}
}
}
for(i=0;i<n;i++)
{
printf("%d %s\n",a[i],color[i]);
}
return 0;
}

3. 有道編程題,模擬銀行排隊取號辦理業務,每個人辦理業務時間隨機,櫃台開發數隨機,要求能動態開發櫃台,

這個如果是在Windows下用可視化編程話,那是極其容易的,在dos可以模擬這個過程,演算法如下:
1、數據結構
櫃台:①處理狀態,忙還是閑還是休息
②正在處理的顧客號
③開始處理的時間
顧客:①顧客編號
②辦理業務需要的時間
③處理狀態,等待或正在處理

2、程序流程
程序開始
創建櫃台對列(櫃台數組);
創建空的顧客隊列

進入循環:
①檢查櫃台數組有無正在處理業務的櫃台,並根據電腦時間看看是否處理完畢,如果處理完畢則要清理顧客隊列;
②檢查顧客隊列是否有待處理的顧客,如果有,則要檢查櫃台,隨機安排可用的櫃台
③檢查有無鍵盤輸入,如果沒有,繼續下輪循環,如果有,看是什麼,如果是創建顧客的按鍵,則創建一個隨機時間的顧客,加入隊列;如果是增減櫃台,則增減櫃台可用數,如果是退出,則退出程序,如果是無效輸入則可提示輸入幫助
循環體結束

為了增強效果,有處理狀態變化時,可以顯示出來,如幾號顧客開始等待/開始處理/處理完畢用時多少等等

希望對你有所啟示
代碼還得你自己寫

4. 數據結構排隊問題編程

為了提高模仿程度,肯定需要好幾個窗體程序之間獨立運行 但是又必須互通數據,這樣做是不是需要一個伺服器?另外,像銀行那樣 多台機子服務客戶,怎樣做好相互通信?不知道這樣說是不是聽的明白,請問主要需要

5. C語言編程題目 實現銀行的電子排隊業務 急~

這次終於改好了:

#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
typedef struct node
{
int num;
char name[20];
}LNode;
LNode QUEUE[20];
int front=0;
int rear=0;
int i=0;
int main()
{
int MAINX(LNode QUEUE[20]/*,int front,int rear*/); //改動
MAINX(QUEUE/*,front,rear*/);//改動
return 0;
}

int MAINX(LNode QUEUE[20]/*,int front,int rear*/)
{
int ADDCQ(LNode QUEUE[20]/*,int front,int rear*/);
int dayin(LNode QUEUE[20]/*,int front,int rear*/);
int pan(LNode QUEUE[20]/*,int front,int rear*/);
while(1)
{
ADDCQ(QUEUE/*,front,rear*/);
dayin(QUEUE/*,front,rear*/);
pan(QUEUE/*,front,rear*/);
}
return 0;
}

int pan(LNode QUEUE[20]/*,int front,int rear*/) //判斷
{
int dayin(LNode QUEUE[20]/*,int front,int rear*/);
int DELCQ(LNode QUEUE[20]/*,int front,int rear*/);
char operation;
printf("處理完畢請輸入Y 需要新客戶服務請輸入N:");
scanf("%s",&operation);
if (operation=='Y')
{
DELCQ(QUEUE/*,front,rear*/);
dayin(QUEUE/*,front,rear*/);
pan(QUEUE/*,front,rear*/);//改動
}
return 0;
}

int ADDCQ(LNode QUEUE[20]/*,int front,int rear*/) //添加
{
int pan(LNode QUEUE[20]/*,int front,int rear*/);
printf("請客戶輸入姓名以得到服務編號:");
if((rear+1)%20==front)
{
printf("隊列已滿,請稍候再領取服務編號。\n");
pan(QUEUE/*,front,rear*/); //改動
}
else
{
//getchar();
//gets(QUEUE[(++rear)%20].name);
scanf("%s",&QUEUE[(++rear)%20].name);
i++;
QUEUE[rear%20].num=i;
}
return 0;
}

int DELCQ(LNode QUEUE[20]/*,int front,int rear*/) //刪除
{
int pan(LNode QUEUE[20]/*,int front,int rear*/);
if(front==rear)
{
printf("輸入錯誤。");
pan(QUEUE/*,front,rear*/);//改動
}
else
{
front=(front+1)%20;
}
return 0;
}

int dayin(LNode QUEUE[20]/*,int front,int rear*/) //列印等待列表
{
int j,k;
printf("當前客戶等待情況:\n");
if(i==1&&front==rear)
printf("無等待。\n");
else
{
k=front+2;
for(j=QUEUE[front+2].num;j<=i;j++,k++)
{
k=k%20;
printf("處理編號:%d 客戶姓名:%s\n",QUEUE[k].num,QUEUE[k].name);
}
}
return 0;
}

6. C語言模擬排隊編程,急求完整答案

這個題有夠無聊的,
不過這明顯是個基礎教學用PPT,是幫助理解的案例,不是用來考人的,
那這些模擬數字應該都是直接寫入的吧:
//state1
int q[10];
//state2
q[0] = 9;
q[1] = 5;
q[2] = 2;
q[3] = 7;
//state3
q[4] = 6;
q[5] = 4;
//state4
for(int i = 0;i < 4;i++){q[i] = q[i+2];}
q[4] = 0;q[5] = 0;
//state5
for(int i = 4;i >= 3;i--){q[i] = q[i-1];}
q[4] = 3;
//state6
int k;
for(int i = 0;i <= 4;i++){if(q[i] == 3){k = i;break;}}
//state7
for(int i = k;i < 4;i++){q[i] = q[i+1];}
q[4] = 0;
//state8
for(int i = 0;i < 4;i++){cout<<q[i];}

7. C語言編程題目

#include<stdio.h>
intmain()
{intn,i,f=0;
scanf("%d",&n);
for(i=2;i<=n;i++)f=(f+3)%i;
if(!f)f=n;
printf("%d ",f);
return0;
}

8. C語言編程題,13個人圍成圈編號1~13數到3的出列,然後從第四個開始為1繼續數到3的出列,最後剩下的是幾號

結果是13號!
代碼:
#include<stdio.h>

#define N 13

int main()
{
int flag[N+1] = {0}; //標志已出列的人,第0位不用
int i,j,out = 0;
i=1; //i為人的標號,初始值為1
j=0; //j為數的數字,當j=3時,對應的人出列
while(out < N) //out為已出列的人數,當out=N-1時,循環退出
{
if(flag[i] == 0) j++;
if(j == 3)
{
flag[i] = 1; //標志此人出列
j = 0; //重新開始數數字
out ++; //出列人數加1
}
i ++;
if(i == N) i = 0; //重新從1號人開始數
}

i = 1;
while(flag[i] == 1) i++;

printf("最後剩下的小孩為%d號!\n",i);

return 0;
}

9. 求編程題(看病要排隊)的代碼,必須用C語言解答,越基礎越容易看懂越好,不要從別處來

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;
}

10. C語言程序設計題目:編寫模擬同學排隊打飯程序

代碼: #include"stdio.h"
#include"stdlib.h"
#include"conio.h"
#include"string.h"
#include"io.h"

#define ESC 27
#define ENTER 13
#define Y 89
#define y 121
#define N 78
#define n 110

void vmenu1();
char choose();
void password();
char *getps();
void mimam();
void build();
void save();
void buy();
void open1();
void modify();
void modifyM();
void XnumM();
void XclassM();
void XnameM();
void add();
void xuehaoA();
void xingmingA();
void query();
void xuehaoQ();
void xingmingQ();
void delete1();
void xuehaoD();
void xingmingD();
void sort();
void sortX();
void sortN();
void sortA();
void all();
void help();
void lock();
void exit1();

struct record
{
char cnumber[15];
char cclass[15];
char cname[15];
char cmoney[10];
char cspend[10];
struct record *next;
};
struct sot
{
char ccnumber[15];
struct sot *pnext;
};
struct address
{
char *adss;
struct address *anext;
};
struct sot *chead=NULL;
struct record *head=NULL,*ppointer=NULL,*temp;
struct record *modf;
struct address *ahead=NULL;
FILE *fp;

int Fflag=0;
int counts=0;
int loop=0;

void main()
{
char menu;
password();
while(loop==0)
{
system("CLS");
vmenu1();
menu=choose();
switch(menu)
{
case '1':build();break;
case '2':count++;
if(count==1)
{
buy();
break;
}
else
{
chead=NULL;
buy();
break;
}
case '3':open1();break;
case '4':modify();k=0;break;
case '6':query();break;
case '7':delete1();break;
case '9':all();break;
case 'b':help();break;
case 'c':lock();break;
case 'd':{loop=1;exit1();break;}
default:
printf("----------------------------請輸入菜單上的序號 ------------------------\n");
printf("---------------------------按任意鍵重新開始選擇 -----------------------\n");
fflush(stdin);
a=getch();
}

}
}
void password()
{
char password[15];
char *password1;
char *password2;
char p1[15];
char p2[15];
char a;
int i;
int count=0;
if(access("c:\\mima.txt",00)!=0)
{
while(1)
{
system("CLS");
for(i=0;i<5;i++)
printf("\n");
printf("\t\t歡迎使用學生打飯系統!\n\n");
printf("\n");
printf("\n----------------------------請創建管理員密碼:--------------------------------\n");
password1=getps();
for(i=0;i<15;i++)
p1[i]=*(password1++);
printf("\n");
printf("\n----------------------------請再輸入一次密碼:--------------------------------\n");
password2=getps();
for(i=0;i<15;i++)
p2[i]=*(password2++);
if(!strcmp(p1,p2))
{
if((fp=fopen("c:\\mima.txt","w"))==NULL)
{
printf("錯誤!\n");
exit(0);
}
else
{
fprintf(fp,"%s",p1);
printf("\n密碼創建完畢!\n");
fclose(fp);
system("cmd.exe /c attrib c:\\mima.txt +h");
break;
}
}
else
{
printf("兩次輸入不一致,請重新輸入密碼:\n");
}
}
}
else
{
while(1)
{
count++;
for(i=0;i<5;i++)
printf("\n");
printf("----------------------------請輸入管理員密碼:----------------------------------\n");
password1=getps();
for(i=0;i<15;i++)
p1[i]=*(password1++);
if((fp=fopen("c:\\mima.txt","r"))==NULL)
{
printf("錯誤!\n");
exit(0);
}
else
{
fscanf(fp,"%s",password);
fclose(fp);
if(!strcmp(p1,password))
break;
else
printf("\n密碼錯誤!\n");
}
if(count<=9)
{
printf("\n您還有%d次機會。。。。。。\n",10-count);
printf("\n\n\n-------------------請按除ESC外的任意按鍵重新輸入密碼!----------------------\n");
a=getch();
if(a==ESC)
exit(0);
}
if(count==10)
{
printf("\n\n您無權使用本系統!\n");
printf("按任意鍵退出。。。。。。\n");
fflush(stdin);
a=getch();
exit(0);
}
}
}
printf("\n\n\n是否要對密碼進行修改?\n");
printf("\t按Y或y更改,其餘按鍵進入系統。\n");
fflush(stdin);
a=getchar();
if(a==Y||a==y)
{
mimam();
}
system("CLS");
for(i=0;i<5;i++)
printf("\n");
printf("\t\t歡迎使用學生打飯系統!\n\n");
printf(" ");
printf("\t\t按任意鍵進入系統。。。。。。\n\n");
a=getch();
}
char *getps()
{
char p[15];
password=p;
while(1)
{
fflush(stdin);
*password=getch();
if(*password==ENTER)
{
break;
}
putchar('*');
password++;
}
*password='\0';
password=p;
return(password);
}

閱讀全文

與編程題3排隊游戲相關的資料

熱點內容
二進制流轉pdf 瀏覽:913
php判斷爬蟲 瀏覽:567
960除24除4簡便演算法 瀏覽:786
關於解壓英語翻譯 瀏覽:565
python控制鍵盤右鍵 瀏覽:920
php沒有libmysqldll 瀏覽:828
時政新聞app哪個好 瀏覽:906
手機已加密怎麼辦 瀏覽:201
安卓手機截屏怎麼傳到蘋果 瀏覽:527
京管家app哪裡下載 瀏覽:33
文件夾橫向排列的豎向排列 瀏覽:453
51單片機驅動攝像頭模塊 瀏覽:689
政府文件加密沒法轉換 瀏覽:373
android判斷棧頂 瀏覽:331
憑證軟體源碼 瀏覽:860
androidwebview滾動事件 瀏覽:11
如何將電腦上的圖片壓縮成文件包 瀏覽:899
程序員轉金融IT 瀏覽:837
黑馬程序員培訓效果如何 瀏覽:915
本地集成編譯 瀏覽:528