㈠ 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語言編寫體育彩票10選7(7個號碼可以重復)的程序,哪位幫幫忙
在vc下是用不了的;
好像vc沒有random函數。
#include "stdlib.h" /*調用隨機函數*/
main()
{
int i,n,j;
clrscr();/*清屏*/
printf("please input the groups: \n");
scanf("%d",&n);
j=n+1;
while(n)
{
randomize(); /*初始化隨機數產生器*/
printf("the %3d groups: ",j-n);
for(i=1;i<8;i++)
printf("%d ",random(10)); /*產生0到(10-1)之間的隨機數*/
printf("\n");
n--;
getch();
}
}
㈢ 幫忙用C語言編寫一個類此彩票3D生成的隨機數的程序
數字三『彩神通』(包含3D和P3玩法)免費版彩票軟體(原名3D『彩神通』免費版 注已改名).數字三『彩神通』免費版是數字三『彩神通』專業版的簡化版本。數字三『彩神通』免費版在操作上與數字三『彩神通』專業版一樣方便、靈活。數字三『彩神通』免費版採用自行設計的第三代數據處理引擎,是國內外少有的一款功能強大、運算速度極快、設計合理、使用方便的數字選三型彩票軟體。
數字三『彩神通』免費版採用了XP的設計風格,圖表畫面顯示更加流暢,其界面美觀大方,色彩淡雅,視覺舒適,界面的設計更加合理、更加實用、更加方便。
㈣ 關於彩票的c語言,結果不對,求大神指點。
1、c語言的數組下標從0開始
所以你的r[6]這個數組,它的有效下標是0到5.
你的
scanf("%d,%d,%d,%d,%d,%d,%d",&cai[1].re.r[1],&cai[1].re.r[2],&cai[1].re.r[3],&cai[1].re.r[4],&cai[1].re.r[5],&cai[1].re.r[6],&cai[1].y);
還有
for(j=1;j<7;j++){
for(q=1;q<7;q++){
if(cai[1].re.r[j]==cai[i].re.r[q])
m=m+1;
}
}
裡面的下標都是從1到6的,這些都需要改為從0到5.
2、你的i沒什麼作用
在while循環里,每次都有
i=1;
i=i+1;
這樣每次都用的是i=2,沒有繼續加下去。
從你的代碼看,i是沒什麼用的。
struct caipiao cai[177];
這個也不需要,只要定義兩個caipiao變數就夠了
㈤ c語言程序設計——彩票問題
以下的 C 小程序將輸出所有 28 個和值的出現的概率(輸出貼在程序下面)。
可見概率最高 0.075,最低 0.001,所以已開出的 1000 期彩票中出現頻率最高的和值是 13 和 14,
連續未出現期數最長的和值則是 0 和 27 (假設實際概率和理論概率吻合)。
#include<stdio.h>
/* 返回 number 中所有數字的和 */
unsigned sumOfAllDigits( unsigned number );
void main( ) {
/* 最低和值是 0,最高和值是 27,所以共有 28 個和值。*/
#define NUMBER_OF_SUM 28
unsigned chance[ NUMBER_OF_SUM ] = { 0 },
i;
for ( i = 0; i <= 999; i++ )
++chance[ sumOfAllDigits( i ) ];
puts( "和值\t出現的概率" );
puts( "一一\t一一一一一" );
for ( i = 0; i < NUMBER_OF_SUM; i++ )
printf( "%2u\t%.3f\n", i, chance[ i ] / 1000. );
}
unsigned sumOfAllDigits( unsigned number ) {
unsigned sum = 0;
for ( ; number; number /= 10 )
sum += number % 10;
return sum;
}
一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一
輸出:
和值出現的概率
一一一一一一一
00.001
10.003
20.006
30.010
40.015
50.021
60.028
70.036
80.045
90.055
100.063
110.069
120.073
130.075
140.075
150.073
160.069
170.063
180.055
190.045
200.036
210.028
220.021
230.015
240.010
250.006
260.003
270.001
㈥ 彩票選號程序 C語言
自己寫程序,然後別人幫你改..沒人會幫你寫得....
㈦ 彩票兌獎程序 C語言
這是我寫的程序 如有問題請發消息給我
#include<stdio.h>
int fun(int *a,int *b)
{ int i,j=0;
for(i=0;i<6;i++)
{if(a[i]==b[i]&&a[i+1]==b[i+1])
j++ ;
else
j=0;
}
return j;
}
void main()
{int i,k;
int b[7],a[7]={0,1,2,3,4,5,6};
for(i=0;i<7;i++)
scanf("%d",&b[i]);
k=fun(a,b);
if(a[6]==b[6]&&k==6)
printf("特等獎");
else
switch(k)
{ case 0:printf("謝謝");break;
case 4:printf("三等獎");break;
case 5:printf("二等獎");break;
case 6:printf("一等獎");break;
}
}
㈧ 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("沒中獎 ");
}
㈨ 用c語言寫一個彩票55選5的代碼,怎麼寫
22選5程序如下。 55選5隻需改為v = 55 即可。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void main()
{
int i,j,x[5];
int v = 22;
srand((unsigned)time(NULL));
x[0] = rand() % v +1;
for (i=0;i<5;i++) {
Lab: x[i] = rand() % v +1;
for (j=0;j<i;j++) { if (x[i] == x[j]) goto Lab;}
}
for(i=0;i<5;i++) printf("%02d\n",x[i]);
}
====================
計算有多少種?用組合公式計算 就可以了,太簡單,就不給你寫了
[C 下22 上 5 ,排列組合學過吧]。