當前位置:首頁 » 編程語言 » c語言排隊論
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言排隊論

發布時間: 2023-01-06 08:39:25

c語言排隊問題

#include<stdio.h>

void main()
{
int i;
int j=0;
for(i=10;i<1000;i++)
{
if((i%5==2)&&(i%7==3)&&(i%3==1))
{
if(j==0)
printf("有一下幾種可能性:\n");
printf("第%d可能性是:%d\n",j+1,i);
j++;
}
}
}

㈡ C語言N名同學,排成一排,有多少中排列方法

這個問題需要拆解成兩個部分解決:
1.n個同學排成一排的數學解
2.將上面數學解或者數學過程轉化為程序代碼

於是:
對於第1部分:
這個是一個全排列問題,解為n的階乘,表示為:n!=1*2*3...*n
如果沒學過,稍微解釋一下為什麼:
n個人排一排,那麼顯然肯定是n個位置,我們順序來看,第一個位置:可以隨便放n個人中任何一個,所以n種可能;第二個位置:前面已經放了一個人,也就總共只有n-1個人了,所以只能n-1種可能...到最後一個位置,只剩下最後一個人了,所以只有最後1種可能;
那麼上面乘起來就是n!種情況了

於是第二個部分,實現n!
顯然需要遞歸或者循環,看學過哪個吧~
下面只寫核心部分,聲明就略了
result表示結果,建議考慮用long或者更大位數的,階乘很可怕,結果數值很大

循環(for為例):
for(int i=1;i<=n;i++){
result*=i;
}

遞歸
主函數調用:Func(n);
函數聲明:
long Func(int value){
if(value==1)
return 1;
else
return value*Func(value-1);
}

㈢ C語言程序,關於銀行排隊的。在線等!

#include<stdio.h>
#include<malloc.h>
#define N 10
int main(void)
{
int i,j,x,m,flag=1;
char ch;
m=N;
char (*p)[10]=(char (*)[10])calloc(N,10*sizeof(char));
for(i=0;i<10;i++)
for(j=0;j<10;j++)
p[i][j]='\0';
printf("輸入ID時不超過10位,第一位不能為'*'\n");
i=0;
while(1)
{
while(i<m)
{
printf("請輸入第%d名的ID:",i+1);
ch=getchar();
for(j=0;j<10;j++)
{
if(j==0&&ch=='*')
{
flag=0;
break;
}
if(ch=='\n')
break;
p[i][j]=ch;
ch=getchar();
}
if(flag==0)
break;
i=i+1;
}
if(flag==0)
break;
m=m+N;
p=(char (*)[10])realloc(p,m*10*sizeof(char));
for(x=i;x<m;x++)
for(j=0;j<10;j++)
p[x][j]='\0';
}
for(j=0;j<i;j++)
{
printf("第%d名:",j+1);
printf("%s\n",p[j]);
}
free(p);
return 0;
}

㈣ C語言 列車排隊

#include<stdio.h>

#include<stdlib.h>

typedefstructnode

{

intn;

structnode*next;

}Node;

voidprintLink(Node*head)

{

if(head==NULL)return;

Node*p=head->next;

while(p)

{

printf("%d",p->n);

p=p->next;

}

printf(" ");

}

voidcountLink(Node*head)

{

if(head==NULL)return;

Node*p=head->next;

intcnt=0;

while(p)

{

cnt++;

p=p->next;

}

printf("%d ",cnt);

}

voidprintReverseLink(Node*&head)

{

if(head==NULL)return;

Node*p=head->next,*q;

head->next=NULL;//斷開頭結點和結點

//以下循環將所有結點逆序連接,然後調用printLink來輸出就是逆序了

while(p)

{

q=p->next;

p->next=head->next;//讓當前節點指向頭結點的下一個結點,

head->next=p;//讓頭結點的next指向當前結點,那麼當前結點就會成為頭結點的下一個節點了

//以上逆轉結點的過程你必須會,可以通過畫圖看看,指針是對CC++來說很重要的東西

p=q;

}

printLink(head);

}

voidcreateLink(Node*&head)

{

if(head==NULL)

head=newNode;

head->next=NULL;

head->n=0;

Node*p=head,*q;

intn;

while(scanf("%d",&n)!=-1)

{

if(n==0)break;

q=newNode;

q->next=NULL;

q->n=n;

p->next=q;//這個添加結點的過程你必須會,可以通過畫圖看看,指針是對CC++來說很重要的東西

p=q;

}

}

intmain()

{

Node*head=NULL;

createLink(head);

printLink(head);

countLink(head);

printReverseLink(head);

system("pause");

return0;

}


㈤ C語言銀行排隊系統

你所指的隊列是線程嗎?
線程操作,大概思路如下:
1. 創建4個線程,表示四個窗口,用semaphore來等待客戶進入(WaitForSingleObject).
2. 創建n個線程表示客戶,每創建一個客戶增加一個ReleaseSemaphore,以讓窗口處理(記錄相關信息,隨機時間可以用srand獲取),窗口要設定為while循環,可以多次處理,條件可以設置為處理多少個客戶就可以退出.
3. 共用資源記得設置臨界區CriticalSection.

㈥ C語言:有n個人圍成一圈,順序排號。從第一個人開始報數(從1到3報 數),凡報到3的人退出圈子,

#include&lt;stdio.h&gt;

#define N 5//人數

void main()

{

int a[N]={0},i=0,out_n=0,call_n=0,*p;

p=a;

while(1){//循環報數

if(*p==0){//如果健在

if(out_n==(N-1))break;//如果僅剩一人

call_n++;//報數

call_n%=3;//最大為3,到了3就從0開始

if(call_n==0){*p=1;out_n++;}//為0(即3)出局

}

p++;if(p==a+N)p=a;//循環轉向下一人

}

printf("最後剩餘者的編號是:%d ",p+1-a);

}

(6)c語言排隊論擴展閱讀:

printf()函數是格式化輸出函數,一般用於向標准輸出設備按規定格式輸出信息。在編寫程序時經常會用到此函數。

函數的原型為:int printf(const char*format,...);函數返回值為整型。若成功則返回輸出的字元數,輸出出錯則返回負值。

printf()函數的調用格式為:

printf("&lt;格式化字元串&gt;",&lt;參量表&gt;);

其中格式化字元串包括兩部分內容:一部分是正常字元;這些字元將按原樣輸出;另一部分是格式化規定字元,以"%"開始,後跟一個或幾個規定字元,用來確定輸出內容格式。

參量表是需要輸出的一系列參數,其個數必須與格式化字元串所說明的輸出參數個數一樣多,各參數之間用","分開,且順序一一對應,否則將會出現意想不到的錯誤。

規定符

%d十進制有符號整數

%u十進制無符號整數

%f浮點數

%s字元串

%c單個字元

%p指針的值

%e指數形式的浮點數

%x,%X無符號以十六進製表示的整數

%o無符號以八進製表示的整數

%g把輸出的值按照%e或者%f類型中輸出長度較小的方式輸出

%p輸出地址符

%lu 32位無符號整數

%llu 64位無符號整數