/** 做者:程鵬遠 題目:30道2年紀四則運算題目 */ #include <iostream.h> #include <stdlib.h> #include <conio.h> int main() { //初始化 int a,b,c; int num1,num2; int num; int chufa; int k,jiange; int zhengchu; int j=0; int chengfa; int con; //請輸入數的範圍,中間用空格隔開: cout<<"請輸入數的範圍,中間用空格隔開:"; cin>>num1>>num2; if(num1>num2) { cout<<"第一個數應該小於第二個數,請重輸:"; cin>>num1>>num2; } //控制題目的個數,num cout<<"其輸入要出多少道題目:"; cin>>num; if(num>(4*(num2-num1)^2)) { cout<<"您輸入的題目數量太多,會形成重複,請從新輸入數目:"; cin>>num; } //打印格式 cout<<"一行幾道題,行間距是幾,中間空格:"; cin>>k>>jiange; if(jiange>=5||jiange<0) { cout<<"您輸入的間距太大或爲負數,請重輸:"; cin>>jiange; } //是否要除法 cout<<"是否要除法?是輸入1,否輸入0:"; cin>>chufa; if(chufa==1) { cout<<"是否要有餘數,是輸入1,否輸0:"; cin>>zhengchu; } //是否要乘法 cout<<"是否要乘法,是輸入1,否輸入0:"; cin>>chengfa; cout<<endl; for(int i=0;i<num;i++) { cout<<i+1<<"、"; a=(rand()%(num2-num1+1))+num1; b=(rand()%(num2-num1+1))+num1; if(chufa==1) { if(chengfa==1) { c=rand()%4;//0-3 } else { c=rand()%3;//0-2 } } else { if(chengfa==1) { c=rand()%3+1;//1-3 } else { c=rand()%2+1;//1-2 } } switch (c) { case 1: cout<<a<<"+"<<b<<"="<<"\t"; break; case 2: if(a>b) { cout<<a<<"-"<<b<<"="<<"\t"; } else { cout<<b<<"-"<<a<<"="<<"\t"; } break; case 3: cout<<a<<"*"<<b<<"="<<"\t"; break; case 0://除法 if(zhengchu==1)//有餘數 { if(b==0) { cout<<b<<"/"<<a<<"="<<"\t"; } else { cout<<a<<"/"<<b<<"="<<"\t"; } } else { while((j<100000)&&(a!=0)&&(b!=0)&&(a%b==0)) { cout<<a<<"/"<<b<<"="<<"\t"; j++; } if((a!=0)&&(b!=0)&&(a%b==0)) { cout<<a<<"/"<<b<<"="<<"\t"; //i++; } else { int j=0; while(j<100000) { a=(rand()%(num2-num1+1))+num1; b=(rand()%(num2-num1+1))+num1; if((a!=0)&&(b!=0)&&(a%b==0)) { cout<<a<<"/"<<b<<"="<<"\t"; //i++; j=100000; j++; } else { j++; } } } } break; } if((i+1)%k==0) { cout<<endl; for(int m=0;m<jiange;m++) { cout<<endl; } } } //繼續嗎? cout<<"繼續嗎?是輸入1,否輸入0:"<<endl; cin>>con; if(con==1) { cout<<endl; main(); } else { return 0; } getch(); return 0; }
2、單元測試項目ios
編寫相關測試程序:源代碼以下:單元測試
/** 做者:程鵬遠 題目:30道2年紀四則運算題目 */ #include <iostream.h> #include <stdlib.h> #include <conio.h> int main() { cout<<"請輸入8個數據,分別表示num1,num2,num,k(一行幾個),jiange,chufa,yushu,chengfa"<<endl; //測試模塊 int a[8]; for(int n=0;n<8;n++) { cin>>a[n]; } //初始化 int s,b,c; //int a[0],a[1]; //int a[2]; //int a[5]; //int a[3],a[4]; //int a[6]; int j=0; //int a[7]; int con; //請輸入數的範圍,中間用空格隔開: //cout<<"請輸入數的範圍,中間用空格隔開:"; //cin>>a[0]>>a[1]; if(a[0]>a[1]) { cout<<"第一個數應該小於第二個數,請重輸:"; cin>>a[0]>>a[1]; } //控制題目的個數,a[2] //cout<<"其輸入要出多少道題目:"; //cin>>a[2]; if(a[2]>(4*(a[1]-a[0])^2)) { cout<<"您輸入的題目數量太多,會形成重複,請從新輸入數目:"; cin>>a[2]; } else if(a[2]<=0) { cout<<"請輸入大於0的題目數:"; cin>>a[2]; } //打印格式 //cout<<"一行幾道題,行間距是幾,中間空格:"; //cin>>a[3]>>a[4]; if(a[4]>=5) { cout<<"您輸入的間距太大,請重輸:"; cin>>a[4]; } if(a[4]<0) { cout<<"您輸入的間距爲負數,請重輸:"; cin>>a[4]; } //是否要除法 //cout<<"是否要除法?是輸入1,否輸入0:"; //cin>>a[5]; //cout<<"是否要有餘數,是輸入1,否輸0:"; //cin>>a[6]; //是否要乘法 //cout<<"是否要乘法,是輸入1,否輸入0:"; //cin>>a[7]; cout<<endl; for(int i=0;i<a[2];i++) { cout<<i+1<<"、"; s=(rand()%(a[1]-a[0]+1))+a[0]; b=(rand()%(a[1]-a[0]+1))+a[0]; if(a[5]==1) { if(a[7]==1) { c=rand()%4;//0-3 } else { c=rand()%3;//0-2 } } else { if(a[7]==1) { c=rand()%3+1;//1-3 } else { c=rand()%2+1;//1-2 } } switch (c) { case 1: cout<<s<<"+"<<b<<"="<<"\t"; break; case 2: if(s>b) { cout<<s<<"-"<<b<<"="<<"\t"; } else { cout<<b<<"-"<<s<<"="<<"\t"; } break; case 3: cout<<s<<"*"<<b<<"="<<"\t"; break; case 0://除法 if(a[6]==1)//有餘數 { if(b==0) { cout<<b<<"/"<<s<<"="<<"\t"; } else { cout<<s<<"/"<<b<<"="<<"\t"; } } else { while((j<100000)&&(s!=0)&&(b!=0)&&(s%b==0)) { cout<<s<<"/"<<b<<"="<<"\t"; j++; } if((s!=0)&&(b!=0)&&(s%b==0)) { cout<<s<<"/"<<b<<"="<<"\t"; //i++; } else { int j=0; while(j<100000) { s=(rand()%(a[1]-a[0]+1))+a[0]; s=(rand()%(a[1]-a[0]+1))+a[0]; if((s!=0)&&(b!=0)&&(s%b==0)) { cout<<s<<"/"<<b<<"="<<"\t"; //i++; j=100000; j++; } else { j++; } } } } break; } if((i+1)%a[3]==0) { cout<<endl; for(int m=0;m<a[4];m++) { cout<<endl; } } } //繼續嗎? cout<<"繼續嗎?是輸入1,否輸入0:"<<endl; cin>>con; if(con==1) { cout<<endl; main(); } else { return 0; } getch(); return 0; }
1.測試結果是否正確:測試
有三種狀況:(1)數據是:0 900 90 4 0 1 1 1;其意義是顯示0-900之間不重複的每行4個間距爲0的90道有加減乘除(除法有餘數)的四則運算題,結果正確 如截圖spa
(2)數據是:0 900 80 5 1 1 0 1;其意義是顯示0-900之間不重複的每行5個間距爲1的80道有加減乘除(除法無餘數)的四則運算題,結果正確 如截圖代碼規範
(3)數據是:0 900 80 4 0 0 0 0;其意義是顯示0-900之間不重複的每行4個間距爲0的80道有加減無乘除的四則運算題,結果正確 如截圖code
2.邊界值測試:blog
(1)數據範圍若是前邊的數大於後邊的數:結果是要求用戶充新輸入,並提示第一個數應該小於第二個數。若是用戶從新輸入正確的數,會獲得正確的結果;ci
題目數量不能超過數據範圍,超過會重複;結果要求用戶從新輸入,並提示應輸入一個小點的書。若是用戶從新輸入正確的數,會獲得正確的結果;get
間距不能太大,不然影響作題,不能爲負數;結果要求用戶從新輸入,並提示相關信息。若是用戶從新輸入正確的輸,會獲得正確的結果;it
測試結果正確,以下截圖:
經以上結果能夠看出,基本知足用戶的功能要求。