1. c語言問題,求助。擲骰子。
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
intfunc(){
inta,b;
a=rand()%6+1;
b=rand()%6+1;
if(a==b&&a==6){
return8;
}elseif(a==b){
return7;
}else{
return(a<b?a:b);
}
}
voidmain(){
intsumA,sumB,i;
sumA=sumB=0;
srand(time(0));
for(i=0;i<10;i++){
sumA+=func();
sumB+=func();
if(i==4){
if(sumA>1.3*sumB){
printf("A:%d B:%d 5局A獲勝 ",sumA,sumB);
return;
}elseif(sumB>1.3*sumA){
printf("A:%d B:%d 5局B獲勝 ",sumA,sumB);
return;
}
}
}
if(sumA>sumB){
printf("A:%d B:%d 10局A獲勝 ",sumA,sumB);
}elseif(sumB>sumA){
printf("A:%d B:%d 10局B獲勝 ",sumA,sumB);
}else{
printf("A:%d B:%d 平局 ",sumA,sumB);
}
return;
}
2. 與電腦玩擲骰子游戲,游戲規則如下:每次擲三個骰子計算總點數,先由電 腦坐莊,莊家輸了換庄,一局游戲
假定題目的意思是比較兩個人骰子的大小。
1 #include <stdio.h>
2 #include <math.h>
3 int main()
4 {
5 int player_a,robot_b,win_round,lost_round,
6 round,start;
7 float winrate;
8 start=1;
9 win_round=0;
10 lost_round=0;
11 round=0;
12 while(start>0)
13 {
14 round++;
15 player_a=rand()%18+1;
16 robot_b=rand()%18+1;
17 if(player_a>robot_b)
18 win_round++;
19 else if(player_a<robot_b)
20 lost_round++;
21
22 printf("\nTotal round is %d\n",round);
23 printf("Round of win is %d\n",win_round);
24 printf("Round of lost is %d\n",lost_round);
25 printf(" Rating of winning is %.1f%\n",win_round/(round*0.01));
26 printf("****continue??****\n");
27 printf("input 0 to exit\n");
28 scanf("%d",&start);
29 }
30 }
3. 三個骰子投出的數目共有多少種組合請給出具體演算法
三個骰子點數各不相同:C(6,3)三個骰子點數有兩個相同,另外一個不同:C(6,2)×2三個骰子點數都相同:C(6,1)一共有C(6,3)+C(6,2)×2+C(6,1)=20+30+6=56種組合
4. c語言,骰子程序
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
introllDie(void)
{
returnrand()%6+1;
}
voiddrawDic(int*pdic,intn)
{
inti,sum=0;
for(i=0;i<n;i++)
{
pdic[i]=rollDie();
}
for(i=0;i<n;i++)
{
printf("----");
}
printf(" ");
for(i=0;i<n;i++)
{
printf("|%d|",pdic[i]);
sum+=pdic[i];
}
printf(" ");
for(i=0;i<n;i++)
{
printf("----");
}
printf(" sum=%d ",sum);
}
intmain()
{
intdic[100];
intn=1;
inti;
printf("輸入骰子數目:");
scanf("%d",&n);
srand(time(0));
drawDic(dic,n);
return0;
}
結果:
5. 大一C語言oj題,答案錯誤百分之五十,看了好久沒看出錯誤,求大佬幫幫忙,萬分感謝
#include <stdio.h>
int judgebaozi(int a,int b,int c){
if(a==b&&b==c)
return a;
else return 0;
}
int judgeizi(int a,int b,int c){
if(a==b||a==c)
return a;
else if(a!=b&&a!=c&&b!=c)
return 0;
else return b;
}
int judgedianzi(int a,int b,int c){
return a+b+c;
}
int judge1(int a,int b,int c){
if(a==b)
return c;
else if(a==c)
return b;
else if(b==c)
return a;
}
int main()
{
int a1,a2,a3,a4,a5,a6,k,m,o,p,q,r,s,t,j;
int data[9000][6];
scanf("%d",&k);
for(m=0;m<k;m++)
for(j=0;j<6;j++)
scanf("%d",data[m]+j);
for(m=0;m<k;m++){
a1=data[m][0];
a2=data[m][1];
a3=data[m][2];a4=data[m][3];a5=data[m][4];a6=data[m][5];
o=judgebaozi(a1,a2,a3);
p=judgebaozi(a4,a5,a6);
q=judgeizi(a1,a2,a3);
r=judgeizi(a4,a5,a6);
s=judge1(a1,a2,a3);
t=judge1(a4,a5,a6);
if(o!=0&&p!=0){
if(a1==a4)
printf("Draw\n");
else if(a1==1)
printf("lcy\n");
else if(a4==1)
printf("Ypop\n");
else if(a1>a4)
printf("lcy\n");
else
printf("Ypop\n");
}
else if(o!=0)
printf("lcy\n");
else if(p!=0)
printf("Ypop\n");
else if(q!=0&&r!=0){
if(q==r){
if(s==t)
printf("Draw\n");
else if(s==1)
printf("lcy\n");
else if(t==1)
printf("Ypop\n");
else if(s>t)
printf("lcy\n");
else
printf("Ypop\n");
}
else if(q==1)
printf("lcy\n");
else if(r==1)
printf("Ypop\n");
else if(q>r)
printf("lcy\n");
else printf("Ypop\n");
}
else if(q!=0)
printf("lcy\n");
else if(r!=0)
printf("Ypop\n");
else if(judgedianzi(a1,a2,a3)==judgedianzi(a4,a5,a6))
printf("Draw\n");
else if(judgedianzi(a1,a2,a3)>judgedianzi(a4,a5,a6))
printf("lcy\n");
else printf("Ypop\n");
}
return 0;
}
你的程序寫得好,邏輯有一點問題!
6. 用C語言編程骰子游戲
#include<stdio.h>
#include<string.h>
int
main()
{
int
a[6]={1,2,3,4,5,6},i,n,p,empty;
char
b[10];
//printf("請輸入命令條數:\n");
scanf("%d",&n);
//printf("請輸入命令:\n");
for(i=1;i<=n;i++)
{
scanf("%s",b);
p=strcmp(b,"north");
if(p==0)
{
empty=a[0];
a[0]=a[4];
a[4]=a[5];
a[5]=a[1];
a[1]=empty;
continue;
}
p=strcmp(b,"south");
if(p==0)
{
empty=a[0];
a[0]=a[1];
a[1]=a[5];
a[5]=a[4];
a[4]=empty;
continue;
}
p=strcmp(b,"west");
if(p==0)
{
empty=a[0];
a[0]=a[3];
a[3]=a[5];
a[5]=a[2];
a[2]=empty;
continue;
}
p=strcmp(b,"east");
if(p==0)
{
empty=a[0];
a[0]=a[2];
a[2]=a[5];
a[5]=a[3];
a[3]=empty;
}
}
//printf("游戲結束,骰子朝上的字數為:\n");
printf("%d",a[0]);
return
0;
}
7. c語言編程,擲骰子游戲,擲三個骰子,我與電腦輪流坐莊,輸了換庄,游戲結束詢問是否結束,如果結束
擲骰子比大小,用隨機數就可以,但是莊家的規則是咋樣的沒交代清楚(這里假定莊家的優勢在於點數一樣大時,莊家贏):
#include "stdafx.h"
#include <iostream>
#include <time.h>
using namespace std;
int main()
{
int Me, Computer,n=1,MC=1;
int meWin = 0, nGames = 0;
srand((unsigned int)time(NULL));
while (n)
{
cout << "開始擲骰子(輸入1開始,輸入0結束):" << endl;
cin >> n;
Me = rand() % 6 + 1;
Computer= rand() % 6 + 1;
nGames++;
if (MC)
{
cout << "你做莊:" << endl;
cout << "你的點數:" << Me << " 電腦的點數:" << Computer << endl;
if (Me >= Computer)
{
meWin++;
cout << "恭喜你贏了!" << endl;
}
else
{
MC = 0;
cout << "哦,你輸了!" << endl;
}
}
else
{
cout << "電腦做莊:" << endl;
cout << "你的點數:" << Me << " 電腦的點數:" << Computer << endl;
if (Computer >= Me)
cout << "哦,你輸了!" << endl;
else
{
meWin++;
MC = 1;
cout << "恭喜你贏了!" << endl;
}
}
}
cout << "你贏的次數:" << meWin << " 輸的次數:" << nGames - meWin << " 勝率:";
float p = (float)meWin / nGames;
int q = p * 100;
printf("%2d%% ", q);
system("pause");
return 0;
}
8. c語言擲骰子代碼
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
intmain(void)
{
intai[3];//甲的三個骰子的點數
intbi[3];//乙的三個骰子的點數
inti;
srand((unsigned)time(NULL));//播時間種子,產生隨機數
for(i=0;i<3;i++)
{
ai[i]=rand()%6+1;//隨機產生1-6的點數
bi[i]=rand()%6+1;
}
printf("甲的點數:");
for(i=0;i<3;i++)
{
printf("%d",ai[i]);
}
printf(" 乙的點數:");
for(i=0;i<3;i++)
{
printf("%d",bi[i]);
}
if(ai[0]+ai[1]+ai[2]>bi[0]+bi[1]+bi[2])
{
printf(" 甲獲勝. ");
}
else{
printf(" 乙獲勝. ");
}
return0;
}
9. 擲骰子的 C語言
#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()為隨機數,對6取余結果為0~5,需要+1修正為1~6
//printf("結果:%-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("您的初始分數為%d\n",myscore);
srand((int)time(0)); //用時間創建隨機數種子
while(1)
{
while(1)
{
puts("請壓分:");
scanf("%d",&betscore);
if(betscore > myscore)
printf("您的剩餘分數不夠,為%d", myscore);
else
break;
}
fflush(stdin); //強制刷新緩沖區,防止上次輸出影響
puts("請選擇大小G為大L為小,X為退出:");
gets(cinput);
cinput[0] = cinput[0]%32+'A' - 1;
if(cinput[0] == 'X')
break;
else
betflag = (cinput[0] == 'G')?1:0;
//三目運算符「?」用法:x=(a>b)?a:b;相當於if(a>b)x=a;else x=b;
betresult = bet();
myscore = (betresult == betflag)?(myscore+2*betscore):(myscore-betscore);
strcpy(sresult, ((betresult!=0)?"大":"小"));
printf("結果為%s,您當前的分數為%d\n",sresult, myscore);
}
return 0;
}