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;
}