首先,语法上,“人” 和 “电脑”的判断的if的地方,都有点问题,都是使用 单个=号,应该是2个等于号。。。。。
然后,result计算 在computer赋值之前。。。。。。。
int main()
{
while(1)
{
printf(" *** 作说明:\n");
printf(" 1-剪刀 2-石头 3-布 4-退出\n");
char Song,Com;
int w=0,l=0,p=0;
srand(time(NULL));
printf(" 请出招:\n");
scanf("%d",&Song);
if( Song == 4)
break;
printf(" 决战开始\n");
switch(Song)
{
case '1':printf("剪刀 VS ");break;
case '2':printf("石头 VS ");break;
case '3':printf("布 VS ");break;
}
Com=rand()%3+1;
switch(Com)
{
case '1':printf("剪刀"); break;
case '2':printf("石头");break;
case '3':printf("布");break;
}
switch(Song-Com)
{
case 0:printf("平手!\n");p++;break;
case -1:
case 2:printf("你赢了!\n");w++;break;
case 1:
case -2:printf("你输了!\n");l++; break;
}
printf("共游戏%d\n",w+l+p);
printf("胜利:%d\n",w);
printf("失败:%d\n",l);
printf("平局:%d\n",p);
}
return 0;
}
#include<stdioh>
#include<stdlibh>
#include<timeh>
int main()
{
int i = 3,a;
char man;
printf("输入A代表“剪刀”,B代表“石头”,C代表“布”\n");
printf("电脑用1代表“剪刀”,2代表“石头”,3代表“布”\n");
printf("输入格式:你输入的拳头是:");
scanf("%c",&man);
srand((int)time(NULL));//用时间来获取随机数种子,产生不同的种子(如果没有这句,电脑只会出相同的种子,也就只会出一个拳头)
a = rand() % i + 1;//rand()会获得一个0~RAND_MAX之间的整数(基于上面获得的随机数种子),对其取余数可以获得固定范围的一个数值这里取0~2,+1之后是1~3。
switch (a) {
case 1:
printf("输出格式:电脑出了剪刀\n");
break;
case 2:
printf("输出格式:电脑出了石头\n");
break;
case 3:
printf("输出格式:电脑出了布\n");
break;
default:
printf("电脑出问题了233\n");
break;
}
switch (man) {
case 'A':
printf("你出了剪刀\n");
switch (a) {
case 1:
printf("平局\n");
break;
case 2:
printf("电脑赢了\n");
break;
case 3:
printf("你赢了\n");
break;
default:
printf("我傻了你信么233\n");
break;
}
break;
case 'B':
printf("你出了石头\n");
switch (a) {
case 1:
printf("你赢了\n");
break;
case 2:
printf("平局\n");
break;
case 3:
printf("电脑赢了\n");
break;
default:
printf("我傻了你信么233\n");
break;
}
break;
case 'C':
printf("你出了布\n");
switch (a) {
case 1:
printf("电脑赢了\n");
break;
case 2:
printf("你赢了\n");
break;
case 3:
printf("平局\n");
break;
default:
printf("我傻了你信么233\n");
break;
}
break;
default:
printf("你出问题啦~请输入ABC\n");
break;
}
printf("不用客气哦~\n");
}
这个太简单了吧 石头、剪子、布 实际上不就是 a b c嘛 a>b b>c c>a//scanf()接收2个字母 ,放在变量 no1 和 no2里面if(no1=='a'&&no2==b)//第一个是a输出第一个大if(no1=='a'&&no2==‘a’)//一样大if(no1=='a'&&no2==‘c‘)//第二个大。。。。把条件都列出来 OK
这个可以啊,我改了下,你运行一下
#include <stdioh>
#include <conioh>
#include <stdlibh>
#include <timeh>
void printMenu(void)
{
printf("1-石头 2-剪刀 3-布 4-退出\n");
}
int main(void)
{
char ch,Computer;
int win=0,lose=0,he=0;
int flag=0;
srand(time(NULL));
printMenu();
while(1)
{
printf("您的选择(1、2、3):");
while(1)
{
ch = getch();
if(ch=='1'||ch=='2'||ch=='3'||ch=='4')
{
printf("%c\t",ch);
break;
}
}
if(ch=='4')
break;
switch(ch)
{
case '1': printf("石头 VS ");break;
case '2': printf("剪刀 VS ");break;
case '3': printf("布 VS ");break;
}
Computer = rand()%3+1+48;
switch(Computer)
{
case '1': printf("石头");break;
case '2': printf("剪刀");break;
case '3': printf("布");break;
}
switch(ch-Computer)
{
case 0: printf("\t平手!\n"); he++; break;
case -1: case 2: printf("\t你赢了!\n"); win++; break;
case 1: case -2: printf("\t你输了!\n"); lose++; break;
}
if(win>=2)
{
printf("这场比赛你赢了,恭喜你\n");
break;
}
else if(lose>=2)
{
printf("很遗憾,这场比赛你输了\n");
break;
}
}
printf("\n您一共玩了%d次。\n",win+lose+he);
printf("胜利:%d 次\n",win);
printf("失败:%d 次\n",lose);
printf("平手:%d 次\n",he);
return 0;
}
以上就是关于c语言 石头剪刀布问题全部的内容,包括:c语言 石头剪刀布问题、C语言石头剪刀布如何循环继续游戏、C语言编写程序:和电脑剪刀石头布 怎么让电脑随机输出数字1、2、3 怎么最后输出“石头”“剪刀”“布”等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)