相信第二題一定有更簡潔的方式,期待助教公布。
- #include<stdio.h>
- #include<stdlib.h>
- #include<time.h>
- int main(void){
- int num=0,a1=0,a2=0,a3=0,a4=0,a5=0,a6=0,ran;
-
- srand(time(NULL));
-
- printf("simulate 6000 rolls of six-sided dice \n");
-
- while(num<=6000){
- ran = rand() % 6 + 1;
- num += 1;
- switch(ran){
- case 1:
- a1 += 1;
- break;
- case 2:
- a2 += 1;
- break;
- case 3:
- a3 += 1;
- break;
- case 4:
- a4 += 1;
- break;
- case 5:
- a5 += 1;
- break;
- case 6:
- a6 += 1;
- break;
- }
- }
-
- printf("1:%d \n",a1);
- printf("2:%d \n",a2);
- printf("3:%d \n",a3);
- printf("4:%d \n",a4);
- printf("5:%d \n",a5);
- printf("6:%d \n",a6);
-
- return 0;
- }
複製代碼- n(void){
- int num=0;
- int a2=0,a3=0,a4=0,a5=0,a6=0;
- int a7=0,a8=0,a9=0,a10=0,a11=0,a12=0;
- int ran1,ran2,max=0,ans;
-
- srand(time(NULL));
-
- printf("tosses a pair of six-sided dice. \n");
-
- while(num<=10000){
- ran1 = rand() % 6 + 1;
- ran2 = rand() % 6 + 1;
- num += 1;
- switch(ran1+ran2){
- case 2:
- a2 += 1;
- break;
- case 3:
- a3 += 1;
- break;
- case 4:
- a4 += 1;
- break;
- case 5:
- a5 += 1;
- break;
- case 6:
- a6 += 1;
- break;
- case 7:
- a7 += 1;
- break;
- case 8:
- a8 += 1;
- break;
- case 9:
- a9 += 1;
- break;
- case 10:
- a10 += 1;
- break;
- case 11:
- a11 += 1;
- break;
- case 12:
- a12 += 1;
- break;
- }
- }
-
- if(a2>max){
- max = a2;
- ans = 2;
- }
- if(a3>max){
- max = a3;
- ans = 3;
- }
- if(a4>max){
- max = a4;
- ans = 4;
- }
- if(a5>max){
- max = a5;
- ans = 5;
- }
- if(a6>max){
- max = a6;
- ans = 6;
- }
- if(a7>max){
- max = a7;
- ans = 7;
- }
- if(a8>max){
- max = a8;
- ans = 8;
- }
- if(a9>max){
- max = a9;
- ans = 9;
- }
- if(a10>max){
- max = a10;
- ans = 10;
- }
- if(a11>max){
- max = a11;
- ans = 11;
- }
- if(a12>max){
- max = a12;
- ans = 12;
- }
- printf("%d is most likely to thrown",ans);
- return 0;
- }
複製代碼 |