福彩3D爱好者 数据结构高手 为什么我的程序不能运行到结束
操作方式:首先输入购买3D 彩票的号码,然后输入购买方式:直选,还是组选,然后再输入坚持守号 1000期。
程序发生在 组选里无法继续运行??但是在直选方式,一定能买中3D 号码。
我这个C语言程序目的: 随便输入一组号码,就一直摇出随机号码,直到中奖才停止程序运行。
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void main()
{
void ThreeBall(int En[],int n,int method,int count); //3D彩票游戏玩法开奖结果函数声明
void RecordEnter(int En[],int n);//记录彩民购买3D幸运号码
void Prize(int En[],int Ball[],int n,int method); //3D彩票中奖查询函数
void GameRule(int En[],int n); //3D彩票游戏玩法规则函数
srand((unsigned)time(NULL));
int i,En[3],method; //method变量代表购买彩票方式,比如直选,还是组选(组选三,组选六)。
int sing[3],count; //sing提示输入出错而发警报声 count变量代表购买彩票的期数
printf(" 欢迎进入福利彩票阿浪摇奖系统 \n\n");
printf("*******************************************************\n");
printf("请在0-9范围内输入任意3个数字:\n");
for(i=0;i<3;i++)
scanf("%d",&En[i]);
GameRule(En,3);
RecordEnter(En,3);
printf("请确定您购买彩票方式:\n直选 请按1 \n 组选 请按2\n");
scanf("%d",&method);
while(method!=1&&method!=2)
{
for(i=0;i<3;i++)
sing[i]=7;
for(i=0;i<3;i++)
printf("%c",sing[i]); //提示输入出错而发警报声
printf("您购买彩票方式出错 请重新选择: \n 直选 请按1\n组选 请按 2\n");
scanf("%d",&method);
}
printf("请输入您计划购买多少期3D彩票:\n");
scanf("%d",&count);
while(count<0)
{
printf("您输入了非法数值:\n");
printf("请输入您计划购买多少期3D彩票:\n");
scanf("%d",&count);
}
if(count==0)
printf("目前您没有购买彩票:\n");
else
ThreeBall(En,3,method,count);
}
void RecordEnter(int En[],int n) //记录彩民购买3D幸运号码
{
int i;
printf("下面显示您所购买的3D彩票号码:\n");
for(i=0;i<n;i++)
printf("%d ",En[i]);
printf("\n");
}
void GameRule(int En[],int n) //3D彩票游戏玩法规则函数定义
{
int i,j,sing[3]; //sing[3]发出警报声
for(j=0;j<3;j++)
sing[j]=7;
for(i=0;i<n;i++)
while(En[i]<0||En[i]>9)
{
for(j=0;j<3;j++)
printf("%c",sing[j]); //警报声提示非法输入
printf("您输入的3D号码 %d 不符合3D游戏玩法规则 \n请在0-9范围内重新输入\n",En[i]);
scanf("%d",&En[i]);
}
}
void Prize(int En[],int Ball[],int n,int method) //中奖号码查询 函数定义
{
int i,j,k;
int mark=0,sing=7; //mark代表中奖方式 sing发出中奖提示声
int sameEn=0,sameBa=0;//sameEn代表购买号码里相同的个数 ,sameBa开奖号码里相同的个数
if(method==1) //直选查询中奖号码
{
for(i=0;i<n;i++)
{
if(En[i]==Ball[i])
mark=mark+1;
}
if(mark==3)
{
printf("%c",sing); //中奖提示声
printf("*****************************************\n");
printf("恭喜您 您直选号码中奖了 奖金1000块\n");
printf("*****************************************\n");
exit(1);
}
else
{
printf("此期开奖没有中奖哦\n感谢您对福利彩票事业的支持 欢迎您下次再来\n");
}
}
if(method==2) //组选查询中奖号码
{
for(i=0;i<n-1;i++)
{
k=i;
for(j=i+1;j<n;j++)
if(En[k]==En[j])
sameEn=sameEn+1; //sameEn可能值:0,1,3.
/*
0表示三个数里没有相同号码,1表示三个数里有1对号码相同,
3表示三个数里都相同
*/
}
for(i=0;i<n-1;i++)
{
k=i;
for(j=i+1;j<n;j++)
if(Ball[k]==Ball[j])
sameBa=sameBa+1; //sameBa可能值:0,1,3.
}
if(sameEn==0&&sameBa==0)
{
for(i=0;i<n;i++)
{
k=i;
for(j=0;j<n;i++)
if(En[k]==Ball[j])
mark=mark+1;
}
if(mark==3)
{
printf("%c",sing); //中奖提示声
printf("*****************************************\n");
printf("恭喜您 您组选六中奖了 奖金160块\n");
printf("*****************************************\n");
exit(1);
}
else
printf("此期开奖没有中奖哦\n感谢您对福利彩票事业的支持 欢迎您下次再来\n");
}
if(sameEn==1&&sameBa==1)
{
for(i=0;i<n;i++)
{
k=i;
for(j=0;j<n;i++)
if(En[k]==Ball[j])
mark=mark+1;
}
if(mark==5)
{
printf("%c",sing); //中奖提示声
printf("*****************************************\n");
printf("恭喜您 您组选三中奖了 奖金320块\n");
printf("*****************************************\n");
exit(1);
}
else
printf("此期开奖没有中奖哦\n感谢您对福利彩票事业的支持 欢迎您下次再来\n");
}
if(sameEn==3&&sameBa==3)
{
if(En[0]==Ball[0])
{
printf("%c",sing); //中奖提示声
printf("*****************************************\n");
printf("恭喜您 您组选三中奖了 奖金320块\n");
printf("*****************************************\n");
exit(1);
}
else
printf("此期开奖没有中奖哦\n感谢您对福利彩票事业的支持 欢迎您下次再来\n");
}
}
}
void ThreeBall(int En[],int n,int method,int count) //3D彩票游戏玩法开奖结果函数定义
{
int Ball[3]; //记录开奖号码
int i,j;
printf("\n欢迎您进入3D游戏玩法界面:\n下面预测出未来%d期内的开奖号码\n",count);
for(j=1;j<=count;j++)
{
printf("******************************************\n");
printf("\n第 %d 期随机筛选的3D彩票开奖号码:\n",j);
for(i=0;i<3;i++)
{
Ball[i]=rand()%10;
printf(" %d ",Ball[i]);
}
printf("\n");
Prize(En,Ball,3,method);
}
printf("\n购彩有风险 请适量投资\n\n祝君恭喜发财\n\n");
}
[解决办法]
才看到。。。。。。。。。。。。不然就给你解决了。。。。