求一个c语言程序,一个彩票22选5的程序,要求分机选和自选!

要加入单式,复试和胆拖

自选的时候有点小bug,你再调调就ok了

#include <stdio.h>
#include <time.h>
#include <string.h>
#include <stdlib.h>

#define N 22
#define M 5

void print_result(int *input)
{
int i=0;
printf("The result is:\n");
for(i=0;i<N;i++)
{
if(input[i])
printf("%-3d",i);
}
printf("\n\n");
}

void machine(int *input)
{
int i=0;
int num=0;
while(num<M)
{
int temp = (rand()%N) + 1;
if(input[temp])
continue;
else
{
input[temp] = 1;
num++;
}
}
}

void man(int *input)
{
int i=0,valid=0;
int temp[M]={0};
printf("input your choice:\n");
while(valid == 0)
{
valid = 1;
for(i=0;i<M;i++)
{
scanf("%d",&temp[i]);
input[temp[i]] = 1;
if(!(temp[i]>0 && temp[i] <= 22))
{
//printf("temp:%d\n",temp[i]);
valid = 0;
}
}
if(valid == 0)
printf("Your input number is wrong,please input again!\n");
}
}

int main(void)
{
srand(time(0));
int array[22]={0};
char choice[8]={0};

while(1)
{
memset(array,0x00,sizeof(array));

printf("input 1 for machine-processed...\n");
printf("input 2 for man-made...\n");
printf("input Ctrl+C to EXIT...\n");
scanf("%s",choice);

if(strncmp(choice,"1",1) == 0)
{
machine(array);
print_result(array);
}
else if(strncmp(choice,"2",1) == 0)
{
man(array);
print_result(array);
}

else
continue;
}

return 0;
}

追问

运行第65部有错误

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-01-13
那个,我不太懂彩票,机选的话就是随机,可以用srand和rand,自选的话整个数组就可以了追问

能不能给我一个程序呢?谢谢!

追答

可以采纳下面那位仁兄,我感觉下面那位仁兄的代码应该是对的。至少我找不到语法错误,具体的可以复制到开发工具里调试一下。如果功能不够的话再找我也可以,追问他也行

追问

运行第19部有错误

第2个回答  2015-01-13
参考了:
但他的程序有点问题。i=0的时候 balls[n] = balls[M-i];数组越界了。我的修改后的。追问

这个我不知道啊,你能不能给我说下啊!求救啊!谢谢了!

追答
#include <stdio.h>
#include <stdlib.h>  
#include <time.h>

const int M = 22;  // 号码总数
const int N = 5;   // 摇出的号码数

// 将22个号码装入摇奖机
void init(int* balls )
{
    int i;
for(i=0;i<M;++i)
{
balls[i] = i + 1;
}
}
// 摇奖,将中奖号码摇出到wins数组
void shuffle(int* balls,int* wins)
{
     int i,j;
srand(time(NULL));
for(i = 0; i < N; ++i)
{
int n = rand()%(M - i); 
wins[i] = balls[n];
for(j=n+1;j<N;j++){
            balls[j-1] = balls[j];
        }
}
init(balls);
}
void man(int* mans){
     int i,j;
     printf("请输入五个数字(1-22):\n");
     for(i=0;i<N;i++)
         scanf("%d",&mans[i]);
}
int win(int *wins,int* mans){
    int i;
    for(i=0;i<N;i++){
        if(wins[i] != mans[i])
        return 0;
    }
    return 1;
}
int main(void)
{
int balls[M];
init(balls);
int wins[N];
int mans[N];
shuffle(balls,wins);
man(mans);
if(win(wins,mans)){
        printf("恭喜你中奖了!!!!"); 
    }
    else{
        printf("对不起,谢谢惠顾~~~"); 
    } 
getchar();
getchar();
return 0;
}

 


 

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网