為什么用系統時間來獲取亂數一直是一樣的,就是關掉之后再次打開產生的數還是這樣
uj5u.com熱心網友回復:
#include<iostream>using namespace std;
#include<ctime>
#include<cstdlib>
class Q
{
public:
int getnumber1()
{
int t;
int srand((unsigned int)time(0));
t=rand()%100+1;
return t;
}
int getnumber2()
{
int t;
int srand((unsigned int)time(0));
t=rand()%100+1;
return t;
}
int getA()
{
loop1:int x=getnumber1();
int y=getnumber2();
if((x+y)<=100&&(x-y)>=0)
goto loop2;
else
goto loop1;
loop2:double g=getnumber1()%2;
if(g==1)
{
cout<<x<<"+"<<y<<"="<<endl;
int m=x+y;
return m;
}
else
{
cout<<x<<"-"<<y<<"="<<endl;
int n=x-y;
return n;
}
}
};
class A
{
private:
Q q1;
static int sum;
public:
void all_test()
{
int R,S,T;
for(int i=1;i<11;i++)
{
cout<<"第"<<i<<"題"<<endl;
int h=q1.getA();
cin>>R;
if (R==h)
{
cout<<"正確!"<<endl;
sum=sum+10;
continue;
}
else
{
cout<<"回答錯誤,還有兩次機會"<<endl;
cin>>S;
if(S==h)
{
cout<<"正確"<<endl;
sum=sum+7;
continue;
}
else
{
cout<<"回答錯誤,還有一次機會"<<endl;
cin>>T;
if(T==h)
{
cout<<"正確"<<endl;
sum=sum+5;
continue;
}
else cout<<"很遺憾,回答錯誤。"<<endl;
cout<<"正確答案為"<<h<<endl;
}
}
}
}
void print()
{
cout<<"總分數為"<<sum<<endl;
}
void judge()
{
if(sum>=90)
cout<<"SMART"<<endl;
else if(sum>=80&&sum<90)
cout<<"GOOD"<<endl;
else if(sum>=70&&sum<80)
cout<<"OK"<<endl;
else if(sum>=60&&sum<70)
cout<<"PASS"<<endl;
else cout<<"TRY AGAIN"<<endl;
}
};int A::sum=0;
int main()
{
A a1,a2,a3;
cout<<"*****二年級數學測驗*****"<<endl;
cout<<" 下面開始做題 "<<endl;
cout<<"選擇一套試題,并輸入序號。"<<endl;
int p=0;
cin>>p;
switch(p)
{
case 1:
{
a1.all_test();
a1.print();
a1.judge();
break;
}
case 2:
{
a2.all_test();
a2.print();
a2.judge();
break;
}
case 3:
{
a3.all_test();
a3.print();
a3.judge();
break;
}
}
system ("pause");
return 0;
}
我的設想是輸入不同的數產生的試題就不一樣,可不管輸123那個,一直是一樣的題,何杰?
uj5u.com熱心網友回復:
需要先使用隨機種子函式:randomize(); // 隨機種子函式,在整個程式中只需呼叫一次即可(不可重復呼叫,否則每秒內生成的亂數的序列相同)需要注意的是,這個隨機種子函式只需要呼叫一次即可,可以放在程式開始啟動的部分
uj5u.com熱心網友回復:
可是我已經有了一個獲取亂數和函式啊,就是我發的程式的開頭部分的 int srand((unsigned int)time(0));轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/113016.html
標籤:基礎類
下一篇:求大神幫忙
