要加入单式,复试和胆拖
自选的时候有点小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;
}
但他的程序有点问题。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;
}