#includestdio.h
創(chuàng)新互聯(lián)公司-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價比青島網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式青島網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋青島地區(qū)。費用合理售后完善,十載實體公司更值得信賴。
#includestdlib.h
#includetime.h
int roll_count=0;
int roll_n_dice(int dice,int sides);
int main(void)
{
int dice,roll;
int sides;
srand((unsigned int)time(0));定義隨機函數(shù)的種子為當(dāng)前系統(tǒng)時間
printf("Enter the number of sides per die.0 to stop.\n");
while(scanf("%d",sides)==1sides0) 如果sides有輸入且大于0,循環(huán)急需
{
printf("How many dice?\n");
scanf("%d",dice); 輸入dice的值
roll=roll_n_dice(dice,sides); 將dinc與sides的值傳入函數(shù)roll_n_dice中,roll為接收量
printf("You have rolled a %d using %d %d-sided dice.\n",
roll,dice,sides); 打印著三個值
printf("How many sides? Enter 0 to stop.\n");
}鍵入0停止
printf("The rollem() function was called %d times.\n",
roll_count);打印roll_count的值
printf("GOOD FORTUNE TO YOU!\n");
getch();
}
static int rollem(int sides)
{
int roll;
roll=rand()%sides+1; 隨機函數(shù)
++roll_count;
return roll; 返回roll的值
}
int roll_n_dice(int dice,int sides)
{
int d;
int total=0;
if(sides2)如果輸入的sides小于2
{
printf("Need at least 2 sides.\n");sides最少需要2
return -2;返回-2
}
if(dice1)如果dice小于1
{
printf("Need at least 1 die.\n");
return -1;
}
for(d=0;ddice;d++)
total+=rollem(sides);調(diào)用rollem這個隨機函數(shù)
return total;
不能srand是定義隨機函數(shù)的種子值,也就是起始值,如果不定義的話隨機函數(shù)運行不了,不過現(xiàn)在的vc好像已經(jīng)默認定義種子是當(dāng)前時間了
C和C++對函數(shù)的命名規(guī)則不同(C++需要支持函數(shù)重載,因此函數(shù)名必須包含參數(shù)類型),因此C++不能直接使用C的函數(shù)。而有些編譯器只是按文件的后綴名區(qū)分C源文件和C++源文件,遇到在C++中調(diào)用C函數(shù)時就會報錯……簡單的解決方法就是把pe12-7.cpp的文件名改成pe12-7.c或diceroll.c的文件名改成diceroll.cpp
一.rand()函數(shù)產(chǎn)生0到32767范圍內(nèi)的整數(shù)。 二.有且僅有5種規(guī)則立方體的所有面的形狀和大小都相同(四、六、八、十二、二十面)。 三.算法:
⒈把隨機數(shù)除以6(面數(shù))取余數(shù),余數(shù)在0到5間的整數(shù);
⒉余數(shù)加一,得1到6的整數(shù);
⒊因為骰子有不同的面數(shù),因此把第一步的面數(shù)用變量sides代替。 四.源程序:
#include stdio.h
#include stdlib.h
#include time.h int main(void)
{
int rollem(int);
int roll_n_dice(int,int); int dice,roll,sides; /*骰數(shù)個數(shù),總點數(shù),一個骰子的面數(shù)*/ srand((unsigned int)time(0));
printf("輸入骰子的面數(shù)(輸入0退出):");
while(scanf("%d",sides)==1sides0)
{
printf("輸入骰子的個數(shù):");
scanf("%d",dice);
roll=roll_n_dice(dice,sides);
printf("使用%d個%d面骰子擲%d點。",dice,sides,roll);
printf("\n輸入骰子的面數(shù)(輸入0退出):");
}
return 0;
} int rollem(int sides)
{
int roll; roll=rand()%sides+1;
return roll;
} int roll_n_dice(int dice,int sides)
{
int d;
int total=0; if(sides2)
{
printf("至少兩個面?。?!\n");
return -2;
}
if(dice1)
{
printf("至少一個骰子?。?!\n");
return -1;
}
for(d=0;ddice;d++) total+=rollem(sides);
return total;
}