/*有已知一个三位数:232 (可自由设置)
然后从0-9中随机抽取三个数组成一个三位数,如果这个三位数与已知的三位数相同则继续从0-9中随机抽取三个数组成另一组三位数并输出,一共输出10组(输出数量可自由设置)如果不同则返回重新抽取
*/
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <conio.h>
int main()
{
int i=0,a,b;
scanf("%d",&a);
if(a<100||a>1000)
{
printf("Error!!\n");
return 0;
}
srand(time(NULL));
while (i<10)
{
printf(".");//给点提示,不然程序看上去没有反应,感觉上死掉了
if (rand()%900+100==a)
{
printf("\n[%d]%d\n",i,a);
i++;
}
//等一秒时间太久,等50-100毫秒就可以
//sleep(1);//猜中了才改变自变量,这个可能需要很多次循环,所以最好要释放一下CPU
}
getch();//这里就是相当于pause的功能,等待按键再退出
return 0;
}
这段程式由网友编程,但运行的时候,为什么输出的结果都是一样的?!哪里写错了吗?
应该不一样的,你数一下那些..的个数,每次运行都不同的
你的意思是这样吗?
给定一个3位数,自己组成一个,如果组成的数相同:输出10个不同的数,退出;如果组成的数不同,则继续组成直到相同为止。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <conio.h>
int main()
{
int i=0,a,b;
scanf("%d",&a);
if(a<100||a>1000)
{
printf("Error!!\n");
return 0;
}
srand(time(NULL));
b = rand()%900+100;
while(b!=a) b = rand()%900+100;
while(i<10)
{
b = rand()%900+100;
if (b!=a)
{
printf("%d\n",b);
i++;
}
}
getch();
return 0;
}
你的意思是这样吗?
给定一个3位数,自己组成一个,如果组成的数相同:输出10个不同的数,退出;如果组成的数不同,则继续组成直到相同为止。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <conio.h>
int main()
{
int i=0,a,b;
scanf("%d",&a);
if(a<100||a>1000)
{
printf("Error!!\n");
return 0;
}
srand(time(NULL));
b = rand()%900+100;
while(b!=a) b = rand()%900+100;
while(i<10)
{
b = rand()%900+100;
if (b!=a)
{
printf("%d\n",b);
i++;
}
}
getch();
return 0;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答 2007-09-27
如果这个三位数与已知的三位数相同则继续从0-9中随机抽取三个数组成另一组三位数并输出,一共输出10组(输出数量可自由设置)如果不同则返回重新抽取
while (i<10)
{
printf(".");//给点提示,不然程序看上去没有反应,感觉上死掉了
if (rand()%900+100==a)
{
printf("\n[%d]%d\n",i,a);
i++;
}
注意你的if语句,如果随机和a相等,则输出,i++;
如果不相等,当然没输出了,i也不加,再次循环。直到和a相等,才有输出
while (i<10)
{
printf(".");//给点提示,不然程序看上去没有反应,感觉上死掉了
if (rand()%900+100==a)
{
printf("\n[%d]%d\n",i,a);
i++;
}
注意你的if语句,如果随机和a相等,则输出,i++;
如果不相等,当然没输出了,i也不加,再次循环。直到和a相等,才有输出