使用結構體鏈表模擬彩票的搖獎機,來保證每次隨機都是不同的數字。
創新互聯公司2013年成立,先為永定等服務建站,永定等地企業,進行企業商務咨詢服務。為永定企業網站制作PC+手機+微官網三網同步一站式服務解決您的所有建站問題。
數組也可以模擬,但是刪除元素比較麻煩,用鏈表更快捷。
定義數組指針,動態分配內存。
#include?stdio.h
#include?stdlib.h
#include?time.h
typedef?struct?List?{
int?number;
struct?List*next;
}?ArrayList;
ArrayList*createList(int);//創建鏈表,參數是鏈表的節點數?
void?freeList(ArrayList*);//循環釋放所有節點的內存
int?deleteNode(ArrayList*,int);//刪除節點,返回節點的數據?
main()?{
//動態創建內存
int*numbers=(int*)calloc(7,sizeof(int));
int*inNumbers=(int*)calloc(7,sizeof(int));
//動態創建數組鏈表存放1-33個編號
ArrayList*balls=?createList(33);
int?i;
srand((unsigned)time(NULL));
printf("請輸入7個不同的數字(1-33):\n");
for(i=0;?i7;?i++)?{
*(numbers+i)=deleteNode(balls,rand()%(33-i));
scanf("%d",inNumbers+i);
}
printf("隨機產生的7個數字是:\n");
for(i=0;?i7;?i++)?{
printf("%d?",*(numbers+i));
}
printf("\n相同的數字:\n");
//查找
int?j;
for(i=0;?i7;?i++)?{
for(j=0;?j7;?j++)?{
if(*(numbers+i)==*(inNumbers+j))?{
printf("%d?",*(numbers+i));
break;
}
}
}
//釋放內存
free(numbers);
free(inNumbers);
freeList(balls);
}
ArrayList*createList(int?n)?{
ArrayList*head=NULL,*end=NULL,*node=NULL;
end=head=(ArrayList*)malloc(sizeof(ArrayList));//head在刪除和插入節點時有用。?不能刪除head,也不能插入到head前面
int?i;
for(i=1;?i=n;?i++)?{
node=(ArrayList*)malloc(sizeof(ArrayList));
node-number=i;
end-next=node;
end=node;
}
end-next=NULL;
return?head;
}
void?freeList(ArrayList*head)?{
ArrayList*node=head;
while(head!=NULL)?{
head=head-next;
free(node);
node=head;
}
}
int?deleteNode(ArrayList*head,int?index)?{?//index節點索引(0-32),返回被刪除的球的編號
ArrayList*node=head-next,*temp=head;
int?i=0,number;
while(iindexnode!=NULL)?{
temp=node;
node=node-next;
i++;
}
if(node!=NULL)?{
number=node-number;
temp-next=node-next;
free(node);
}
return?number;
}
運行結果
前算法沒錯、
C(3,30) 的算法數字表述是多少?是不是 30*29*28 ?
不是,是 30*29*28 /3!
3個紅球的概率: (30/90)* (29/89)*(28/88)
3個不同顏色球概率: (30/90)*(30/89)*(30/88)
前面對、后面錯、、、因為你后面規定了球的順序、、非要這樣做的話是這樣的、、第一個球隨便取、概率1 第二個球、除了第一種球的顏色 概率60/89 第三個球、除了前兩種的顏色,概率30/88 所以概率為1*60/89*30/88、、、、、、、其實就是你的答案再乘上3!讓3個不同顏色的球任意排列就行、、、、
可能有點亂、、不明白的地方追問下、、
第一題:題目不是很明確。我覺得答案是0.7
第二題:
#includestdio.h
void?main()
{
int?red,yellow,green;
for(red=0;?red=3;?red++)
for(yellow=0;?yellow=3;?yellow++)
for(green=0;?green=6;?green++)
{
if(red+yellow+green?==?8)
printf("紅色:%d,黃色:%d,綠色:%d\n",red,yellow,green);
}
return;
}
第三題:
#includestdio.h
#includemath.h
void?main()
{
long?one,two,three;
long?n;
for(n=100000;?n1000000;?n++)
{
one?=?(int)sqrt(n);
two?=?(int)sqrt(n/1000);
three?=?(int)sqrt(n%1000);
if((one*one?==?n)??(two*two?==?(n/1000))??(three*three?==?(n%1000)))
printf("%d是一數三平方:\n??%d=%d*%d,??%d=%d*%d,??%d=%d*%d\n",n,n,one,one,n/1000,two,two,n%1000,three,three);
}
return;
}
C語言是編程中的基礎,如果你是想制作網絡游戲,那么C語言是不可缺少的。因為網絡游戲依賴高效率的服務程序來控制。如果是自學C語言的話,要做好吃苦的準備.我推薦學習C語言的書籍是:CPrimerPlus中文版開發工具是:VS2008或者VS2010你也百度一下,80X86匯編小站網站里面有篇文章是寫給C/C++語言初學者的.標題是:如何正確的入門Windows系統下C/C++學習領域.希望這篇文章對你有幫助,其實入門學習C語言,重要的是選擇一本好書和一個好的開發工具,如果有條件可以配備一個老師,這樣你學習效率將會有很大的提升,當然最重要還是你的學習態度和毅力.
文章名稱:三色球分組c語言用函數 三色球分組c語言用函數嗎
分享地址:http://vcdvsql.cn/article4/doiehie.html
成都網站建設公司_創新互聯,為您提供網站制作、云服務器、品牌網站制作、全網營銷推廣、域名注冊、建站公司
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯