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、布
请选择对方角色(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然后就开始做这个练习题,速度还是有些慢,还是要多练习!