1、while循环
循环三要素:
1)、循环变量的初值
2)、循环变量的判断
3)、循环变量的更新
#include <stdio.h> #include <stdlib.h> int main() { int i = 0; while(i<=10) { printf("第%d遍 ",i); i++; } return 0; }
小练习1:使用循环计算1-100的累加和
#include <stdio.h> #include <stdlib.h> int main() { int i = 1; int sum = 0; while(i<=100) { sum += i; i++; } printf("%d ",sum); return 0; }
小练习2:使用循环实现三次密码输入错误退出系统
#include <stdio.h> #include <stdlib.h> int main() { int i = 0; //循环变量 int password; //密码 while(i<3) { printf("请输入密码:"); scanf("%d",&password); if(password!=123456) { printf("密码输入错误,当前输入第%d次密码! ",i+1); } else if(password==123456) { printf("密码输入成功! "); break; } if(i==2) { printf("密码输错三次,系统强制退出! "); exit(0); } i++; } return 0; }
这里有几个要注意的地方:
1)、加入了当密码输入正确就退出的判断机制;
2)、if...else if....else if...else...这种结构,一旦里面有一个符合条件,就不会继续下面的判断了,所以在
判断i是否到2这里,用的是if,而不是else if,因为第三次密码输入错误的时候,已经在第一个if里判断过了,就不会在下面的else if里
继续判断了
小练习3:某宝双十一2015年的交易额为800亿,每年递增25%,问按此速度哪年交易额达到2000亿?
#include <stdio.h> #include <stdlib.h> int main() { double initSum = 800; //2015年的交易额 double increase = 0.25; //递增率 int initYear = 2015; //初始年份 while(1) { initSum *= 1.25; if(initSum>=2500) { printf("第%d年交易额达到2000亿,此年交易额为%lf ",initYear+1,initSum); break; } initYear++; } return 0; }
小练习4:使用循环模拟实现玩家对战
双方初始HP均为100;
每次攻击5-15;
HP最先到零或以下的被KO
#include <stdio.h> #include <stdlib.h> //标准库 #include <time.h> //time方法 #include <windows.h> //Sleep int main() { srand(time(NULL)); //rand()函数的取值范围是0-32767 printf("随机种子:%d ",rand()); int hp1 = 100,hp2=100; //1p和2p的初始血量 int att1,att2;//1p和2p每次的攻击 int i = 0;//对战的轮数 while(hp1>=0 && hp2>=0)//当两个玩家都活着的时候,才能进行对战 { //默认1p首先攻击 att1 = rand() % 11+5; att2 = rand() % 11+5; //玩家1攻击,玩家2掉血 hp2 -= att1; //玩家2攻击,玩家1掉血 hp1 -= att2; if(hp1<=0 && hp2>=0) { printf("玩家2胜利 "); break; } else if(hp1>=0 && hp2<=0) { printf("玩家1胜利 "); break; } printf("************************************ "); printf("第%d轮: ",i); printf("玩家1攻击力:%d,玩家2剩余血量:%d ",att1,hp2); printf("玩家2攻击力:%d,玩家1剩余血量:%d ",att2,hp1); printf("************************************ "); i++; Sleep(500);//休眠500ms } printf("游戏结束,玩家1的血量:%d 玩家2的血量:%d ",hp1,hp2); return 0; }