2019年11月16日C语言while循环学习
1.while循环的基本语法
while(循环条件)
{
循环操作语句;
}
2.循环三要素
1)循环变量的初值
2)循环变量的判断
3)循环变量的更新
循环变量:可以控制循环次数的变量
3.while循环部分练习
1)计算1-100的累加和(极其重要,累加的最基本结构)
#include <stdio.h>
void main() {
int i = 1;//循环变量的初值
int sum = 0;
while(i <= 100)//循环变量的判断
{
sum = sum + i;
i = i + 1;//循环变量的更新
}
printf("结果为:%d\n",sum);
}
2)使用循环实现三次密码输入错误退出系统
#include <stdio.h>
void main()
{
int i = 0;//循环变量
int passwd;//密码
while (i < 3)
{
printf("请输入密码:");
scanf("%d",&passwd);
if(123456 != passwd)
{
printf("您输入的密码错误!\n");
}
if(i == 2)
{
printf("密码输错三次,系统强制退出!");
}
i ++;
}
}
3)某宝双十一2015年交易额为800亿,每年递增25%,请问第几年交易额达到2000亿?
#include <stdio.h>
void main()
{
double i = 800;
int year = 2015;
while (i <= 2000)
{
i = i * 1.25;//i *= 1.25循环变量的更新
year ++;
}
printf("按此速度,%d年交易额达到2000亿!",year);
}
4.代码实战–使用循环模拟玩家对战(拳皇)
补充:随机函数(简单了解)
#include <time.h>
srand(time(NULL));//使用时间作为种子,产生不一样的随机数字
printf("随机数字:%d\n",rand());
要求:双方初始HP均为100;每次攻击5-15;HP最先到零或以下的被KO
#include <stdio.h>
#include <time.h>
#include <stdlib.h>//标准库
#include <windows.h>
void main()
{
srand(time(NULL));//使用时间作为种子,产生不一样的随机数字
//rand()函数取值范围为0-32767
printf("随机数字:%d\n",rand());//随机数使用头文件time.h
int hp1 = 100,hp2 = 100;//定义1p和2p的初始值
int att1,att2;//定义1p和2p的攻击值
int i = 1;//轮数
while(hp1 >= 0 && hp2 >= 0)//当两个玩家都活着时候才可以对战
{
//默认1p首先攻击
//范围a-b,范围为rand%(b-a+1)+a
att1 = rand() % 11 + 5;
if(att1 == 15)
att1 *= 2;//暴击,攻击力为15时为原来两倍
att2 = rand() % 11 + 5;
if(att2 == 15)
att2 *= 2;//暴击,攻击力为15时为原来两倍
//玩家1攻击,玩家2掉血
hp2 -= att1;
//玩家2攻击,玩家1掉血
hp1 -= att2;
//输出对战信息
printf("当前为第%d轮\n",i);
printf("玩家1攻击力:%d,玩家2剩余血量:%d\n",att1,hp2);
printf("玩家2攻击力:%d,玩家1剩余血量:%d\n",att2,hp1);
i ++;
Sleep(500);//休眠时间为500秒,使用Windows.h头文件
}
printf("ko!游戏结束,玩家1的血量:%d\t玩家2的血量:%d\n",hp1,hp2);
}
5.调试步骤(补充)
1)分析错误
2)设置断点
3)启动调试
4)单步运行
5)观察变量
6)发现问题
7)修正代码重新运行
6.do while基本语法
do{
循环操作;
}while(循环条件);//先执行再判断
7.do while 练习
#include <stdio.h>
void main()
{
int choice;//用户的选择
while (1)
{
printf("性格测试:\n");
printf("如果您是一位君王,对于身旁的伴侣您希望?\n");
printf("1.只要有一位真爱的妻子\n");
printf("2.可以拥有两位以上的妻子\n");
printf("3.可以拥有三千佳丽\n");
do{//输错之后一直循环输入,不退出
printf("请选择:");
scanf("%d",&choice);
}while(choice <=0||choice >3);
switch(choice)
{
case 1:
printf("您选择了生命中的唯一!\n");
break;
case 2:
printf("你个花心大萝卜!\n");
break;
case 3:
printf("你个渣男!\n");
break;
}
}
}
8.while与do while循环的区别
1)执行顺序不同
2)初始条件不满足循环条件时while循环一次都不会执行,do while循环不管任何情况都至少执行一次
#include <stdio.h>//do while数字反转程序
void main()
{
int num0,num1;
num0 = 0;
do{
printf("请输入一个数:");
scanf("%d",&num0);
if(num0 <= 0)
printf("必须为正数!\n");
}while (num0 <= 0);
printf("\n反转后的数为:");
do
{
num1 = num0 % 10;
printf("%d",num1);
num0 = num0 / 10;
}while (num0 != 0);
printf("\n");
}
#include <stdio.h>//while数字反转程序
void main()
{
int num0,num1;
num0 = 0;
while (num0 <= 0)
{
printf("请输入一个数:");
scanf("%d",&num0);
if(num0 <= 0)
printf("必须为正数!\n");
}
printf("\n反转后的数为:");
while (num0 != 0)
{
num1 = num0 % 10;
printf("%d",num1);
num0 = num0 / 10;
}
printf("\n");
}