#includestdio.h
10年積累的成都做網(wǎng)站、網(wǎng)站制作經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶(hù)對(duì)網(wǎng)站的新想法和需求。提供各種問(wèn)題對(duì)應(yīng)的解決方案。讓選擇我們的客戶(hù)得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先網(wǎng)站設(shè)計(jì)后付款的網(wǎng)站建設(shè)流程,更有黃浦免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。
#includestdlib.h
#includetime.h
int?main(void)
{
int?ai[3];??//甲的三個(gè)骰子的點(diǎn)數(shù)
int?bi[3];??//乙的三個(gè)骰子的點(diǎn)數(shù)
int?i;
srand((unsigned)time(NULL));??//播時(shí)間種子,產(chǎn)生隨機(jī)數(shù)
for?(i?=?0;?i??3;?i++)
{
ai[i]?=?rand()?%?6?+?1;??//隨機(jī)產(chǎn)生1-6的點(diǎn)數(shù)
bi[i]?=?rand()?%?6?+?1;
}
printf("甲的點(diǎn)數(shù):");
for?(i?=?0;?i3;?i++)
{
printf("%d??",?ai[i]);
}
printf("\n乙的點(diǎn)數(shù):");
for?(i?=?0;?i3;?i++)
{
printf("%d??",?bi[i]);
}
if?(ai[0]?+?ai[1]?+?ai[2]bi[0]?+?bi[1]?+?bi[2])
{
printf("\n\n甲獲勝.\n");
}
else{
printf("\n\n乙獲勝.\n");
}
return?0;
}
實(shí)踐1:函數(shù)編程練習(xí) 1.?dāng)S骰子游戲 編寫(xiě)程序模擬擲骰子游戲。已知擲骰子游戲的游戲規(guī)則為:每個(gè)骰子有6面,這些面包含1、2、3、4、5、6個(gè)點(diǎn),投兩枚骰子之后,計(jì)算點(diǎn)數(shù)之和。如果第一次投的點(diǎn)數(shù)和為7或11,則游戲者獲勝;如果第一次投的點(diǎn)數(shù)和為2、3或12,則游戲者輸;如果第一次投的點(diǎn)數(shù)和為4、5、6、8、9或10,則將這個(gè)和作為游戲者獲勝需要擲出的點(diǎn)數(shù),繼續(xù)投骰子,直到賺到該點(diǎn)數(shù)時(shí)算是游戲者獲勝。如果投擲7次仍未賺到該點(diǎn)數(shù),則游戲者輸。 【思考題】 將游戲規(guī)則改為:計(jì)算機(jī)想一個(gè)數(shù)作為一個(gè)骰子擲出的點(diǎn)數(shù)(在用戶(hù)輸入數(shù)據(jù)之前不顯示該點(diǎn)數(shù)),用戶(hù)從鍵盤(pán)輸入一個(gè)數(shù)作為另一個(gè)骰子擲出的點(diǎn)數(shù),再計(jì)算兩點(diǎn)數(shù)之和。其余規(guī)則相同,然后請(qǐng)讀者重新編寫(xiě)該程序。 2.學(xué)生成績(jī)統(tǒng)計(jì)(一維數(shù)組)要求函數(shù)參數(shù)中包含一維數(shù)組。 從鍵盤(pán)輸入一個(gè)班(全班最多不超過(guò)30人)學(xué)生某門(mén)課的成績(jī),當(dāng)輸入成績(jī)?yōu)樨?fù)值時(shí),輸入結(jié)束,分別實(shí)現(xiàn)下列功能: (1)統(tǒng)計(jì)不及格人數(shù)并打印不及格學(xué)生名單; (2)統(tǒng)計(jì)成績(jī)?cè)谌嗥骄旨捌骄种系膶W(xué)生人數(shù),并打印這些學(xué)生的名單; (3)以直方圖方式統(tǒng)計(jì)各分?jǐn)?shù)段的學(xué)生人數(shù)及所占的百分比。形式如下: 分?jǐn)?shù)段 學(xué)生人數(shù) 圖形 60 3(10%) *** 60-69 8(…) ******** 70-79 7(…) ******* 80-89 8(…) ******** =90 4(…) **** 實(shí)踐2:結(jié)構(gòu)體編程練習(xí) 在屏幕上模擬顯示一個(gè)數(shù)字式時(shí)鐘 按如下方法定義一個(gè)時(shí)鐘結(jié)構(gòu)體類(lèi)型: struct clock { int hour; int minute; int second; }; typedef struct clock CLOCK; 然后,將下列用全局變量編寫(xiě)的時(shí)鐘模擬顯示程序改成用CLOCK結(jié)構(gòu)體變量類(lèi)型重新編寫(xiě)。已知用全局變量編寫(xiě)的時(shí)鐘模擬顯示程序如下: #include stdio.h int hour, minute, second; /*全局變量定義*/ /* 函數(shù)功能:時(shí)、分、秒時(shí)間的更新 函數(shù)參數(shù):無(wú) 函數(shù)返回值:無(wú) */ void Update(void) { second++; if (second == 60) /*若second值為60,表示已過(guò)1分鐘,則 minute值加1*/ { second = 0; minute++; } if (minute == 60) /*若minute值為60,表示已過(guò)1小時(shí),則 hour值加1*/ { minute = 0; hour++; } if (hour == 24) /*若hour值為24,則hour的值從0開(kāi)始計(jì)時(shí)*/ { hour = 0; } } /*函數(shù)功能:時(shí)、分、秒時(shí)間的顯示 函數(shù)參數(shù):無(wú) 函數(shù)返回值:無(wú) */ void Display(void) /*用回車(chē)符'\r'控制時(shí)、分、秒顯示的位置*/ { printf("%2d:%2d:%2d\r", hour, minute, second); } /*函數(shù)功能:模擬延遲1秒的時(shí)間 函數(shù)參數(shù):無(wú) 函數(shù)返回值:無(wú) */ void Delay(void) { long t; for (t=0; t50000000; t++) { /*循環(huán)體為空語(yǔ)句的循環(huán),起延時(shí)作用*/ } } main() { long i; hour = minute = second = 0; /*hour,minute,second賦初值0*/ for (i=0; i100000; i++) /*利用循環(huán)結(jié)構(gòu),控制時(shí)鐘運(yùn)行的時(shí)間*/ { Update(); /*時(shí)鐘更新*/ Display(); /*時(shí)間顯示*/ Delay(); /*模擬延時(shí)1秒*/ } }
用隨機(jī)數(shù)來(lái)模擬搖骰子
#include?stdio.h
#include?time.h?/*用到了time函數(shù)*/
#define?LEN?100?/*隨機(jī)數(shù)個(gè)數(shù)*/
#define?MIN?1?/*隨機(jī)數(shù)最小值*/
#define?MAX?6?/*隨機(jī)數(shù)最大值*/
int?main(void)?{
int?i,randArr[LEN],count[6]={0};
srand((unsigned)?time(NULL));?/*用時(shí)間做種,每次產(chǎn)生隨機(jī)數(shù)不一樣*/
for?(i=0;?iLEN;?i++)?{
randArr[i]?=?rand()?%?(MAX-MIN+1)?+?MIN;?/*產(chǎn)生MIN~MAX的隨機(jī)數(shù)*/
count[randArr[i]-1]?++;
}
printf?("搖%d次骰子的點(diǎn)數(shù)結(jié)果:\n",LEN);
for?(i=0;?iLEN;?i++)?{
printf?("%d\t",randArr[i]);
if?(i+1?%?5?==?0)?/*每輸出5個(gè)數(shù)換一行*/
putchar?('\n');
}
putchar?('\n');
puts?("各點(diǎn)數(shù)出現(xiàn)次數(shù)統(tǒng)計(jì):");
for?(i=0;?i6;?i++)
printf?("%d點(diǎn):%d\n",i+1,count[i]);
putchar?('\n');
getch?();?/*屏幕暫留*/
return?0;
}
運(yùn)行結(jié)果
#include?stdio.h
#include?stdlib.h
#include?time.h
#define?MONEY?200
int?get_num(void)
{
srand(clock());
return?1+rand()%6;
}
int?win(int?me_num,int?computer_num,int?n,int?*me,int?*computer)
{
if(me_num-computer_num??0)
{
printf("太厲害了,您這把贏了呢!\n");
printf("您的財(cái)富?+%d\n",n*2);
*me+=n*2;
printf("計(jì)算機(jī)的財(cái)富?-%d\n",n);
*computer-=n;
printf("您當(dāng)前的財(cái)富為?%d\n計(jì)算機(jī)當(dāng)前的財(cái)富為?%d\n",*me,*computer);
if(*computer??0)
{
printf("太厲害了、太厲害了,計(jì)算機(jī)被你打敗了!\n");
return?-1;
}
return?0;
}
else?if(me_num-computer_num??0)
{
printf("不好,您輸了!\n");
printf("您的財(cái)富?-%d\n",n);
*me-=n;
printf("計(jì)算機(jī)的財(cái)富?+%d\n",n*2);
*computer+=n*2;
printf("您當(dāng)前的財(cái)富為?%d\n計(jì)算機(jī)當(dāng)前財(cái)富為?%d\n",*me,*computer);
if(*me??0)
{
printf("我們非常遺憾地通知您,由于您的帳戶(hù)欠費(fèi),我們做了一個(gè)艱難的決定,把您趕出賭場(chǎng),大賭傷身,小賭宜情,回家好好過(guò)日子吧!\n您被趕出了賭場(chǎng)!\n");
return?-1;
}
return?0;
}
else
{
printf("不分上下,打成平手,讓我們?cè)賮?lái)決戰(zhàn)一次吧!\n");
printf("您的財(cái)富?+%d\n",n);
*me+=n;
printf("計(jì)算機(jī)的財(cái)富?+%d\n",n);
*computer+=n;
printf("您當(dāng)前的財(cái)富為?%d\n計(jì)算機(jī)當(dāng)前財(cái)富為?%d\n",*me,*computer);
return?0;
}
}
int?main(int?argc,char?**argv)
{
int?computer=MONEY;
int?me=MONEY;
int?me_n=0,computer_n=0;
int?me_num=0,computer_num=0;
int?o;
printf("歡迎來(lái)到擲骰子游戲!\n現(xiàn)在是人機(jī)對(duì)戰(zhàn)模式,您和計(jì)算機(jī)現(xiàn)在都擁有%d財(cái)富!\n",MONEY);
printf("游戲規(guī)則:\n按1鍵進(jìn)行下注,不設(shè)置則默認(rèn)按上次下的注計(jì)算\n按0鍵進(jìn)行擲骰子\n按9鍵查看幫助\n按2鍵查看自己的財(cái)富\n按3鍵查看計(jì)算機(jī)的財(cái)富\n按4鍵退出游戲\n");
while(1)
{
printf("輸入操作:");
scanf("%d",o);
switch(o)
{
case?0:
if(me_n?==?0)
{
printf("您還沒(méi)有下注,請(qǐng)先下注!\n");
break;
}
printf("開(kāi)始擲骰子?.?.?.\n");
me_num=get_num();
printf("您擲得的骰子為?%d\n",me_num);
printf("計(jì)算機(jī)開(kāi)始擲骰子?.?.?.\n");
computer_num=get_num();
printf("計(jì)算機(jī)擲得的骰子為?%d\n",computer_num);
if(win(me_num,computer_num,me_n,me,computer)?==?-1)
goto?end;
break;
case?1:
while(1)
{
printf("請(qǐng)輸入您的賭金:");
if(scanf("%d",me_n)?!=?1)
{
printf("輸入的賭金出錯(cuò),請(qǐng)重新輸入!\n");
continue;
}
if(me_n??me)
{
printf("您的賭金不夠,請(qǐng)重新輸入!\n");
continue;
}
if(me_n??computer)
{
printf("啊哦,計(jì)算機(jī)的財(cái)富沒(méi)有這么多哦,您太厲害了,請(qǐng)輸下一個(gè)計(jì)算機(jī)可承受的注吧!\n");
continue;
}
break;
}
break;
case?2:
printf("您當(dāng)前的財(cái)富為:%d\n",me);
break;
case?3:
printf("計(jì)算機(jī)當(dāng)前的財(cái)富為:?%d\n",computer);
break;
case?4:
goto?end;
break;
case?9:
printf("游戲規(guī)則:\n按1鍵進(jìn)行下注,不設(shè)置則默認(rèn)按上次下的注計(jì)算\n按0鍵進(jìn)行擲骰子\n按9鍵查看幫助\n按2鍵查看自己的財(cái)富\n按3鍵查看計(jì)算機(jī)的財(cái)富\n按4鍵退出游戲\n");
break;
default:
printf("\n錯(cuò)誤的操作,請(qǐng)看幫忙!\n");
}
}
end:
printf("游戲結(jié)束!\n");
return?0;
}
#include time.h
#include stdio.h
#include string.h
#define MIDDLE_FLAG 1
#define INITIAL_SCORE 1000
int bet()
{
int rollresult;
rollresult = rand()%6 + 1; //此處rand()為隨機(jī)數(shù),對(duì)6取余結(jié)果為0~5,需要+1修正為1~6
//printf("結(jié)果:%-4d",rollresult);
if (rollresult MIDDLE_FLAG)
return 1;
else
return 0;
}
int main()
{
int betscore,myscore = INITIAL_SCORE;
int resultflag, betflag, betresult;
char cinput[2], sresult[3];
printf("您的初始分?jǐn)?shù)為%d\n",myscore);
srand((int)time(0)); //用時(shí)間創(chuàng)建隨機(jī)數(shù)種子
while(1)
{
while(1)
{
puts("請(qǐng)壓分:");
scanf("%d",betscore);
if(betscore myscore)
printf("您的剩余分?jǐn)?shù)不夠,為%d", myscore);
else
break;
}
fflush(stdin); //強(qiáng)制刷新緩沖區(qū),防止上次輸出影響
puts("請(qǐng)選擇大小G為大L為小,X為退出:");
gets(cinput);
cinput[0] = cinput[0]%32+'A' - 1;
if(cinput[0] == 'X')
break;
else
betflag = (cinput[0] == 'G')?1:0;
//三目運(yùn)算符“?”用法:x=(ab)?a:b;相當(dāng)于if(ab)x=a;else x=b;
betresult = bet();
myscore = (betresult == betflag)?(myscore+2*betscore):(myscore-betscore);
strcpy(sresult, ((betresult!=0)?"大":"小"));
printf("結(jié)果為%s,您當(dāng)前的分?jǐn)?shù)為%d\n",sresult, myscore);
}
return 0;
}
是“擲骰子”吧???!這是擲骰子的程序:題目是這樣子的:編寫(xiě)一個(gè)模擬擲骰子的程序,每個(gè)骰子從1-6,所以?xún)蓚€(gè)骰子組合數(shù)從2-12,隨機(jī)投擲10000次,打印所有組合出現(xiàn)的概率!
#includeiostream.h
#includetime.h
#includestdlib.h
void
main()
{
int
i=0;
float
a[13]={0};
srand((unsigned)time(null));
int
num1=0,num2=0;
for(i=1;i=10000;i++)
{
num1=rand()%6+1;
num2=rand()%6+1;
a[num1+num2]++;
a[0]++;
}
for(i=2;i=12;i++)
{
couti'
''
';
cout(a[i]/a[0])*100'%';
coutendl;
}
}