问题遇到的现象和发生背景
将C语言转换成java语言
用代码块功能插入代码,请勿粘贴截图
#include <stdio.h>
#include <stdlib.h> //rand()、srand()函数调用
#include <time.h> //使用当前时钟做种子
#include <process.h>
#include <string.h>
int ichoice() /*选择操作参数*/
{
int mychoice;
system("CLS");//清屏
printf("\n");
printf(" 程序设计与实践 实验(一)随机数及其应用\n");
printf("\n");
printf(" ------随机数及其应用------ \n");
printf("\n");
printf(" 1 - 求随机数分布情况.\n");
printf(" 2 - '35选7'福利彩券摇奖器.\n");
printf(" 3 - 'x选y'通用福利彩券摇奖器.\n");
printf(" 0 - 结 束.\n");
printf("\n");
printf(" 请输入你的选择:");
scanf("%d",&mychoice);
return mychoice;
}
int random_100()//1到100随机数
{
int m;
m=rand()%100+1;
return m;
}
int random(int a,int b)//x到y随机数
{
int m;
m=rand()%(b-a+1)+a;
return m;
}
int sjs100()/*求随机数分布情况*/
{
int a[101]={0};//用以计数
int n;
printf("\n");
printf("求随机数分布情况\n");
for(int i=1;i<=10000;i++){
n=random_100();//调用随机数1-100生成函数
a[n]++;
}
for(n=1;n<=100;n+=4){
printf("%3d:--%3d %3d:--%3d %3d:--%3d %3d:--%3d\n",n,a[n],n+1,a[n+1],n+2,a[n+2],n+3,a[n+3]);
}
return 0;
}
int x_x()/*"35选7" 福利彩券摇奖器*/
{
int b[36]={0};//初始化 并登记序号状态 0未取出 1已取出
printf("\n");
printf("‘35选7’福利彩券摇奖器产生的结果:\n");//35 不放回取出
int k;
for(int i=0;i<7;i++){//计数器i,确保最终结果输出7个随机数
k=random(1,35);//1到35随机数
if(b[k]==0){
printf("%5d\n",k);//如果未取出,则输出此数
b[k]=1; //并标记为已取出
}
else i--;//如果该随机数已取出,则计数器i-1
}
return 0;
}
int x_y()/*"x选y"通用福利彩券摇奖器*/
{
int x,y;
printf("\n");
printf("‘x选y’通用彩券摇奖器,请输入x和y:");
scanf("%d%d",&x,&y);
int b[x+1]={0};
printf("‘%d选%d’福利彩券摇奖器产生的结果:\n",x,y);
int k;
for(int i=0;i<y;i++){
k=random(1,x);//1到x随机数
if(b[k]==0){
printf("%5d\n",k);
b[k]=1;
}
else i--;
}
return 0;
}
int main(void)
{
int choice;
srand((unsigned)time(NULL));// 使用每一次运行程序的时间作为随机数种子,之后用rand产生不可预见的随机序列
while((choice=ichoice())!=0)
{
switch(choice)
{
case 1:
sjs100();system("pause");break;/*求随机数分布情况*/
case 2:
x_x();system("pause");break; /*"35选7" 福利彩券摇奖器*/
case 3:
x_y();system("pause");break; /*"x选y"通用福利彩券摇奖器*/
default:
printf("Input Error.");system("pause");break;
}
}
return 0;
}