c語言彩
發布時間: 2023-09-24 07:07:05
Ⅰ c語言 實現模擬彩票的程序設計:隨機產生7個數字(用C語言隨機函數產生,[1,33]區間,七個數互
使用結構體鏈表模擬彩票的搖獎機,來保證每次隨機都是不同的數字。
數組也可以模擬,但是刪除元素比較麻煩,用鏈表更快捷。
定義數組指針,動態分配內存。
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
typedefstructList{
intnumber;
structList*next;
}ArrayList;
ArrayList*createList(int);//創建鏈表,參數是鏈表的節點數
voidfreeList(ArrayList*);//循環釋放所有節點的內存
intdeleteNode(ArrayList*,int);//刪除節點,返回節點的數據
main(){
//動態創建內存
int*numbers=(int*)calloc(7,sizeof(int));
int*inNumbers=(int*)calloc(7,sizeof(int));
//動態創建數組鏈表存放1-33個編號
ArrayList*balls=createList(33);
inti;
srand((unsigned)time(NULL));
printf("請輸入7個不同的數字(1-33): ");
for(i=0;i<7;i++){
*(numbers+i)=deleteNode(balls,rand()%(33-i));
scanf("%d",inNumbers+i);
}
printf("隨機產生的7個數字是: ");
for(i=0;i<7;i++){
printf("%d",*(numbers+i));
}
printf(" 相同的數字: ");
//查找
intj;
for(i=0;i<7;i++){
for(j=0;j<7;j++){
if(*(numbers+i)==*(inNumbers+j)){
printf("%d",*(numbers+i));
break;
}
}
}
//釋放內存
free(numbers);
free(inNumbers);
freeList(balls);
}
ArrayList*createList(intn){
ArrayList*head=NULL,*end=NULL,*node=NULL;
end=head=(ArrayList*)malloc(sizeof(ArrayList));//head在刪除和插入節點時有用。不能刪除head,也不能插入到head前面
inti;
for(i=1;i<=n;i++){
node=(ArrayList*)malloc(sizeof(ArrayList));
node->number=i;
end->next=node;
end=node;
}
end->next=NULL;
returnhead;
}
voidfreeList(ArrayList*head){
ArrayList*node=head;
while(head!=NULL){
head=head->next;
free(node);
node=head;
}
}
intdeleteNode(ArrayList*head,intindex){//index節點索引(0-32),返回被刪除的球的編號
ArrayList*node=head->next,*temp=head;
inti=0,number;
while(i<index&&node!=NULL){
temp=node;
node=node->next;
i++;
}
if(node!=NULL){
number=node->number;
temp->next=node->next;
free(node);
}
returnnumber;
}
運行結果
Ⅱ 用c語言寫一個彩票55選5的代碼,怎麼寫
C語言不了解不過思路這樣
用隨即函數產生一個數字
然後做個IF從句再產生一個,和前1個比,一樣的話就再循環再產生一個
總之產生一個數就和前面的所有數字相比,看看有沒有一樣的有一樣的就再循環產生
流程圖
AA:I=I+1
BB:產成一個數
CC: 保存到數組A(I)
DD:如果I不等於1(第一次沒的比),則比較A(I)和(1)~(I-1)數組中的有無相同(這里用FOR語句循環)
EE:有則跳轉到BB,無則跳轉到AA(這里了解FOR的話可以用FOR,不了解的話可以用IF GOTO代替)
Ⅲ c語言彩票兌獎程序
#include<stdio.h>
voidmain()
{
inta[]={1,2,3,4,5,6,7};
intb[7],i,j,count=0,max=0,maxflag;
for(i=0;i<7;i++)
scanf("%d",&b[i]);
i=0;
while(i<7)
{
j=0;
count=0;
if(b[i]==a[j])
while(i<7&&j<7&&b[i]==a[j])i++,j++,count++;
else
i++;
if(max<count){max=count;maxflag=i;}
}
count=max;
if(count==7)printf("特等獎 ");
elseif(count==6)
{
if(maxflag==7)
printf("二等獎 ");
else
printf("一等獎 ");
}
elseif(count==5)
{
if(maxflag==7)
printf("三等獎 ");
else
printf("二等獎 ");
}
elseif(count==4)
{
if(maxflag==7)
printf("四等獎 ");
else
printf("三等獎 ");
}
elseif(count==3)
{
if(maxflag==7)
printf("五等獎 ");
else
printf("四等獎 ");
}
elseif(count==2&&maxflag!=7)
printf("五等獎 ");
else
printf("沒中獎 ");
}
熱點內容