Day08 C语言基础 for循环 continue break 以及一个综合训练

本文通过C语言实现了一个猜拳游戏,加深了对for循环嵌套、continue和break的理解。游戏包括选择对手(刘备、孙权、曹操)并进行多次对战,记录对战数据,根据用户输入控制游戏流程。同时,文章还介绍了如何使用continue跳过3的倍数求和,以及break用于提前退出循环。
摘要由CSDN通过智能技术生成

1. for循环

虽然之前写过for循环,但是我想再写写对for循环嵌套的理解

第一个for会输出一个,然后会将第二个for循环执行完再来执行第一个for循环的下一次循环

#include<stdio.h>

int main()
{
	int i, j;
	for(i = 0; i <= 9; i++)
	{
		printf("%d\n", i);
		printf("-----------------\n");
		for(j = 0; j <= 9; j++)
		{
			printf("%d\n", j);
			if(j == 9)
			{
				printf("\n");
			}
			
		}
		
	}
}

这里会输出第一个for的1,然后输出第二个for的0123456789

                   第一个for的2,第二个for的0123456789...

 这就让我对for嵌套有了更好的理解,我记得在前端可以用for嵌套来完成页面的输出或隐藏,就可以用for来完成

2. continue

continue是退出当前循环

就可以输出0~100非3数的和,就可以再i %3== 0的时候continue,就跳过了3的倍数,从而累加其他的数字

int i;
	int sum = 0;
	for(i = 1; i <= 100; i++)	
	{
		if(i % 3 == 0)
		{
			continue;
		}
		else
		{
			sum += i;
		}
	}
	printf("%d", sum);
	
	return 0;
}

3. break

这个是跳出循环,有了它我们就可以想办法不按循环走,在我们想跳出循环之前做一个判断,满足条件就可以跳出循环了

4. 综合训练

开始游戏

实现对战对方的选择

------------------------欢迎进入游戏世界---------------------

*********************

** 猜拳,开始 **

*********************

出拳规则:1、剪刀 2、石头 3、布

请选择对方角色(1、刘备 2、孙权 3、曹操):3

你选择了曹操对战

        1. 双方出拳
        2. 计算胜负
        3. 实现循环对战
        4. 统计对战次数
        5. 统计各方出的石头、剪刀、布的次数
        6. 统计各方得分情况

总效果:

--------------------欢迎进入游戏世界----------------------

****************

** 猜拳,开始**

****************

出拳规则:1、剪刀 2、石头 3、布

请选择对方角色(1、刘备 2、孙权 3、曹操):3

你选择了曹操对战

要开始吗?(y/n) y

请出拳:1、剪刀 2、石头 3、布(输入相应数字):2

你出拳:石头

曹操出拳:剪刀

结果:恭喜,你赢了!

是否开始下一轮?(y/n) n

曹操 VS 王子

对战次数:1

姓名 得分

王子 1

曹操 0

恭喜恭喜!

#include<stdio.h>
#include<time.h>

int main()
{
	int people;
	char yorn = 'n';
	int I;
	int bot;
	int p = 0;//局数
	int win = 0;//胜局
	int won = 0; 
	int a = 0, b = 0, c = 0, a1 = 0, b1 = 0, c1 = 0;
	printf("------------------------欢迎进入游戏世界------------------------\n");
	printf("		       ******************\n");
	printf("		       **  猜拳,开始  **\n");
	printf("		       ******************\n");
	while(yorn == 'n')
	{
	
	printf("出拳规则:1、剪刀 2、石头 3、布\n");
	printf("请选择对方角色(1、刘备 2、孙权 3、曹操):\n");
	scanf("%d", &people);
	
	switch(people)
	{
		case 1:
			printf("您选择了刘备对战\n\n");
			printf("要开始吗?(y/n)?\n");
			getchar();
			scanf("%c", &yorn);
			if(yorn == 'y')
			{
				while(yorn == 'y')
				{
				printf("请出拳:1、剪刀 2、石头 3、布(输入相应数字):");
				scanf("%d", &I); 
				if(I == 1)
				{
					printf("剪刀\n"); 
					a++;
				 } 
				 else if(I == 2)
				 {
				 	printf("石头\n");
				 	b++;
				 }
				 else if(I == 3)
				 {
				 	printf("布\n");
				 	c++;
				 }
				srand((unsigned) time(NULL));
				bot = rand() % 3 + 1;
				if(bot == 1)
				{
					printf("刘备出拳:剪刀\n");
					a1++;
				}
				else if(bot == 2)
				{
					printf("刘备出拳:石头\n");
					b1++;
				}
				else
				{
					printf("刘备出拳:布\n");
					c1++;
				}
				if(bot == I)
				{
					printf("结果:这局你们是平局!\n"); 
				}
				else if((I > bot && bot != 3) && (I == 1 && bot == 3))
				{
					printf("结果:恭喜!这局你赢了!\n");
					win++;
				}
				else if((I < bot)||(I == 3 && bot == 1))
				{
					printf("结果:很遗憾!这局你输了!\n"); 
					won++;
				}
				p++;
				printf("是否开始下一轮?(y/n)?\n");
				getchar();
				scanf("%c", &yorn);
				}
				
				printf("刘备 VS 王子 :累计出拳统计:\n");
				printf("姓名		剪刀		石头		布\n");
				printf("王子		%d		%d		%d\n", a, b, c);
				printf("刘备		%d		%d		%d\n\n", a1, b1, c1);	
				printf("刘备 VS 王子\n对战次数:%d\n\n", p);
				printf("姓名		得分\n");
				printf("王子		%d\n", win);
				printf("刘备		%d\n", won); 
				 
				  break;
			}
			else if(yorn == 'n')
			{
				break;
			}
			
		case 2:
			printf("您选择了孙权对战\n\n");
			printf("要开始吗?(y/n)?\n");
			getchar();
			scanf("%c", &yorn);
			if(yorn == 'y')
			{
				while(yorn == 'y')
				{
				printf("请出拳:1、剪刀 2、石头 3、布(输入相应数字):");
				scanf("%d", &I); 
				if(I == 1)
				{
					printf("剪刀\n"); 
					a++;
				 } 
				 else if(I == 2)
				 {
				 	printf("石头\n");
				 	b++;
				 }
				 else if(I == 3)
				 {
				 	printf("布\n");
				 	c++;
				 }
				srand((unsigned) time(NULL));
				bot = rand() % 3 + 1;
				if(bot == 1)
				{
					printf("孙权出拳:剪刀\n");
					a1++;
				}
				else if(bot == 2)
				{
					printf("孙权出拳:石头\n");
					b1++;
				}
				else
				{
					printf("孙权出拳:布\n");
					c1++;
				}
				if(bot == I)
				{
					printf("结果:这局你们是平局!\n"); 
				}
				else if(I > bot && bot != 3 || I == 0 && bot == 3) 
				{
					printf("结果:恭喜!这局你赢了!\n");
					win++;
				}
				else
				{
					printf("结果:很遗憾!这局你输了!\n"); 
					won++;
				}
				p++;
				printf("是否开始下一轮?(y/n)?\n");
				getchar();
				scanf("%c", &yorn);
				}
				
				printf("孙权 VS 王子 :累计出拳统计:\n");
				printf("姓名		剪刀		石头		布\n");
				printf("孙权		%d		%d		%d\n", a, b, c);
				printf("孙权		%d		%d		%d\n\n", a1, b1, c1);	
				printf("孙权 VS 王子\n对战次数:%d\n\n", p);
				printf("姓名		得分\n");
				printf("王子		%d\n", win);
				printf("孙权		%d\n", won); 
				 
				  break;
			}
			else if(yorn == 'n')
			{
				break;
			}
		case 3:
			printf("您选择了曹操对战\n\n");
			printf("要开始吗?(y/n)?\n");
			getchar();
			scanf("%c", &yorn);
			if(yorn == 'y')
			{
				while(yorn == 'y')
				{
				printf("请出拳:1、剪刀 2、石头 3、布(输入相应数字):");
				scanf("%d", &I); 
				if(I == 1)
				{
					printf("剪刀\n"); 
					a++;
				 } 
				 else if(I == 2)
				 {
				 	printf("石头\n");
				 	b++;
				 }
				 else if(I == 3)
				 {
				 	printf("布\n");
				 	c++;
				 }
				srand((unsigned) time(NULL));
				bot = rand() % 3 + 1;
				if(bot == 1)
				{
					printf("曹操出拳:剪刀\n");
					a1++;
				}
				else if(bot == 2)
				{
					printf("曹操出拳:石头\n");
					b1++;
				}
				else
				{
					printf("曹操出拳:布\n");
					c1++;
				}
				if(bot == I)
				{
					printf("结果:这局你们是平局!\n"); 
				}
				else if(I > bot && bot != 3 || I == 0 && bot == 3) 
				{
					printf("结果:恭喜!这局你赢了!\n");
					win++;
				}
				else
				{
					printf("结果:很遗憾!这局你输了!\n"); 
					won++;
				}
				p++;
				printf("是否开始下一轮?(y/n)?\n");
				getchar();
				scanf("%c", &yorn);
				}
				
				printf("曹操 VS 王子 :累计出拳统计:\n");
				printf("姓名		剪刀		石头		布\n");
				printf("王子		%d		%d		%d\n", a, b, c);
				printf("曹操		%d		%d		%d\n\n", a1, b1, c1);	
				printf("曹操 VS 王子\n对战次数:%d\n\n", p);
				printf("姓名		得分\n");
				printf("王子		%d\n", win);
				printf("曹操		%d\n", won); 
				 
				  break;
			}
			else if(yorn == 'n')
			{
				break;
			}
		default:
			printf("您的输入有误请重新输入:\n");
			break; 
	}
	
	}
	
	if(win > won)
	{
		printf("恭喜你赢了!");
	}
	else if(win == won)
	{
		printf("你们俩真有缘,是平局!"); 
	}
	else
	{
		printf("很遗憾你输了!"); 
	}
	
	return 0;
}

首先输出游戏开头,进入一个while的死循环,下来用一个switch来选择对手,再用y和n来控制是否开始,如果输入y就进入游戏,输入1.2.3分别代表剪刀石头布(这里我设置了一个a,b,c分别接收我输入剪刀石头布的次数,方便后面做统计)用一个生成随机数代表电脑输出1.2.3(用a1,b1,c1来统计电脑的出拳次数),然后判断我输出的数字和电脑生成的数字所代表的剪刀石头布的胜负关系,我赢用win来计数,输的用won来计数,接下来用p来代表局数的累计,完成一回合就加一,在这下面做一个是否继续游戏的判断,y继续n结束,当输入n的时候进入结果统计的输出,最后结束程序

这就是我的解题思路,可能比较笨,但是有效的完成了任务,就是不知道如果太繁琐的话影响程序效率的程度有多大

总结:

今天早上复习了循环的练习题,下午学习了continue和break然后就开始做这个练习题,速度还是有些慢,还是要多练习!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值