主题:为什么循环不行啊
chalk
[专家分:0] 发布于 2009-03-28 17:56:00
#include<stdio.h>
#include<conio.h>
#include<time.h>
#include<stdlib.h>
#include<ctype.h>
int main()
{int red[33],blue[16],num1=6,num2=1,max_mid1=33,max_mid2=16,i,j;
int chosered[6],choseblue,choice_r,choice_b;
char ch1,ch2;
printf("**********欢迎购买中国福利彩票------双色球**************\n");
printf("~~~~奉献一份爱心,收获一份意外的喜悦,祝你好运!~~~~~~~~~~~~~~\n" );
printf(" 您是否采用机选(y/n):");
scanf("%c",&ch1);
if(toupper(ch1)=='Y')
{do
{printf("机选开始\n");
for(i=0;i<max_mid1;i++) /*所有的红球*/
{
red[i]=i+1;
}
srand((unsigned)time(NULL)); /*随机取出6红球*/
for(i=0;i<num1;i++)
{choice_r=rand()%max_mid1;
chosered[i]=red[choice_r];
for(j=choice_r;j<max_mid1;j++)
{red[j]=red[j+1];
}
max_mid1--;
}
for(i=0;i<max_mid2;i++) /*所有的蓝球*/
{
blue[i]=i+1;
}
srand((unsigned)time(NULL)); /*随机取出1蓝球*/
choice_b=rand()%max_mid2;
choseblue=blue[choice_b];
printf("本注双色球机选的号码为:"); /*号码输出*/
printf("红球为:");
for(i=0;i<num1;i++)
{printf(" %d",chosered[i]);
}
printf(" 蓝球为:%d",choseblue);
printf("\n是否再选一注(y/n)");
scanf("%c",&ch2);
}while(toupper(ch2)=='Y');
}
else
{printf("请输入你所选的号码");
}
getch();
return 0;
}
回复列表 (共10个回复)
沙发
chaosuper85 [专家分:380] 发布于 2009-03-28 18:44:00
#include<stdio.h>
#include<conio.h>
#include<time.h>
#include<stdlib.h>
#include<ctype.h>
int main()
{
int red[33],blue[16],num1=6,num2=1,max_mid1=33,max_mid2=16,i,j;
int chosered[6],choseblue,choice_r,choice_b;
char ch1,ch2;
printf("**********欢迎购买中国福利彩票------双色球**************\n");
printf("~~~~奉献一份爱心,收获一份意外的喜悦,祝你好运!~~~~~~~~~~~~~~\n" );
printf(" 您是否采用机选(y/n):");
scanf("%c",&ch1);
if (toupper(ch1)=='Y')
{
do
{
printf("机选开始\n");
for (i=0;i<max_mid1;i++) /*所有的红球*/
{
red[i]=i+1;
}
srand((unsigned)time(NULL)); /*随机取出6红球*/
for (i=0;i<num1;i++)
{
choice_r=rand()%max_mid1;
chosered[i]=red[choice_r];
for (j=choice_r;j<max_mid1;j++)
{
red[j]=red[j+1];
}
max_mid1--;
}
for (i=0;i<max_mid2;i++) /*所有的蓝球*/
{
blue[i]=i+1;
}
srand((unsigned)time(NULL)); /*随机取出1蓝球*/
choice_b=rand()%max_mid2;
choseblue=blue[choice_b];
printf("本注双色球机选的号码为:"); /*号码输出*/
printf("红球为:");
for (i=0;i<num1;i++)
{
printf(" %d",chosered[i]);
}
printf(" 蓝球为:%d",choseblue);
printf("\n是否再选一注(y/n)");
[color=FF0000] fflush(stdin);[/color] scanf("%c",&ch2);
}while(toupper(ch2)=='Y');
}
else
{
printf("请输入你所选的号码");
}
getch();
return 0;
}
再次输入要刷新缓冲区
现在循环可以运行
板凳
chalk [专家分:0] 发布于 2009-03-28 19:23:00
为什么我循环了6次后又不行了
是内存中缓存太小了吗
不可能吧
3 楼
Screenager [专家分:840] 发布于 2009-03-28 20:05:00
问题出在:max_mid1--;你每选一注red[]的size减小6。
5次之后,red[]只有3个元素了,你还怎么选?
do
{ max_mid1=33;//do后面加这个就行了
4 楼
chaosuper85 [专家分:380] 发布于 2009-03-28 20:25:00
不是
是你的程序中
此语句
max_mid1--;
经过几次的循环,变成了0
而你的程序
此语句
choice_r=rand()%max_mid1;
就会产生错误.
除数不能为0,为0了就不行了.
明白了吧
你再自己改改.
5 楼
chaosuper85 [专家分:380] 发布于 2009-03-28 20:30:00
#include<stdio.h>
#include<conio.h>
#include<time.h>
#include<stdlib.h>
#include<ctype.h>
int main()
{
int red[33],blue[16],num1=6,num2=1,max_mid1=33,max_mid2=16,i,j;
int chosered[6],choseblue,choice_r,choice_b;
char ch1,ch2;
printf("**********欢迎购买中国福利彩票------双色球**************\n");
printf("~~~~奉献一份爱心,收获一份意外的喜悦,祝你好运!~~~~~~~~~~~~~~\n" );
printf(" 您是否采用机选(y/n):");
scanf("%c",&ch1);
if (toupper(ch1)=='Y')
{
do
{
max_mid1=33
printf("机选开始\n");
for (i=0;i<max_mid1;i++) /*所有的红球*/
{
red[i]=i+1;
}
srand((unsigned)time(NULL)); /*随机取出6红球*/
for (i=0;i<num1;i++)
{
choice_r=rand()%max_mid1;
chosered[i]=red[choice_r];
for (j=choice_r;j<max_mid1;j++)
{
red[j]=red[j+1];
}
max_mid1--;
}
for (i=0;i<max_mid2;i++) /*所有的蓝球*/
{
blue[i]=i+1;
}
srand((unsigned)time(NULL)); /*随机取出1蓝球*/
choice_b=rand()%max_mid2;
choseblue=blue[choice_b];
printf("本注双色球机选的号码为:"); /*号码输出*/
printf("红球为:");
for (i=0;i<num1;i++)
{
printf(" %d",chosered[i]);
}
printf(" 蓝球为:%d",choseblue);
printf("\n是否再选一注(y/n)");
fflush(stdin);
scanf("%c",&ch2);
}while(toupper(ch2)=='Y');
}
else
{
printf("请输入你所选的号码");
}
getch();
return 0;
}
6 楼
强强 [专家分:4740] 发布于 2009-03-28 20:49:00
彩票这个东西你再怎么选,它也是随机的,有什么用?
7 楼
Screenager [专家分:840] 发布于 2009-03-28 22:04:00
同意四楼的说法,在选第六注时,选完三个红球后,max_mid1==0。再去选第四个红球就出错了。
5楼改程序不能去掉此语句
max_mid1--;否则选号有问题,不能出现同号的。你没买过彩票吧?
8 楼
xing_cq [专家分:30] 发布于 2009-03-28 22:08:00
可以啊。。。
9 楼
chalk [专家分:0] 发布于 2009-03-28 23:26:00
thank you every one!
10 楼
moke9 [专家分:30] 发布于 2010-09-02 07:47:00
你好.我是全职网赚工作者.
如果你有时间有电脑.
想在网络上创业.请联系我..
项目绝对真实.详情QQ空间资料
加盟请联系 QQ908889846
我来回复