循环语句
- 1、用while语句实现循环
- 1.1 while语句的一般形式如下
- 1.2 流程图如下
- 1.3 while循环举例
- 2、用do-while语句实现循环
- 2.1 do-while语句的一般形式和执行过程
- 2.2 流程图如下
- 3、 for循坏
- 3.1 for语句的一般形式和执行过程
- 3.2 流程图如下
- 3.3 for循环语句举例
- 4、循环语句中的break和continue
- 4.1 break语句提前终止整个循环
- 4.2 continue语句提前结束本次循环
- 5、 练习
- 5.1 在一个有序数组中查找具体某个数字n (二分查找法)
- 5.2 猜数字游戏
1、用while语句实现循环
1.1 while语句的一般形式如下
while( 表达式 ){ 语句 }
其中,“语句”是循环体,“表达式”也称为循环条件表达式,用于控制循环体的执行次数。while循环的特点是:先判断条件表达式,后执行循环体语句。
1.2 流程图如下
1.3 while循环举例
例:求1+2+3+4+…+100
int main()
{
int i = 0;
int sum = 0;
while (i <= 100)
{
sum += i;
i++;
}
printf("%d", sum);
return 0;
}
运行结果:
2、用do-while语句实现循环
2.1 do-while语句的一般形式和执行过程
do-while循环语句的特点是:先无条件的执行一次语句,而后判断条件是否成立。它的一般表现形式为:
do { 循环体语句 } while( 表达式 );
do-while语句的执行过程为:先执行一次指定的循环体语句,然后判别表达式,当表达式的值为非0(真)时,返回重新执行循环体语句,如此反复,直到表达式的值为0(假)时,此时循环结束。
2.2 流程图如下
3、 for循坏
3.1 for语句的一般形式和执行过程
for语句的一般形式为:
for( 表达式1;表达式2;表达式3) { 语句 }
三个表达式的主要作用:
表达式1:设置初识条件,只执行一次。可以为零个、一个或多个变量设置初值。
表达式2:循环条件表达式,用来判断是否继续循坏。
表达式3:作为循环的调整,例如循环变量增值,它是在执行完循环体后才进行的。
这样,for语句可以理解为:
for( 循环变量初值 ; 循环条件表达式 ; 循环变量增值) { 语句 }
3.2 流程图如下
3.3 for循环语句举例
例如:用for语句求1+2+3+4+…+100的值
int main()
{
int i, sum;
for (i = 1; i <= 100; i++)
{
sum += i;
}
printf("%d", sum);
return 0;
}
运行结果:
4、循环语句中的break和continue
4.1 break语句提前终止整个循环
break语句的一般形式为:
break;
其作用是使流程跳到循环体之外,接着执行循环体下面的语句。
4.2 continue语句提前结束本次循环
continue语句的一般形式为:
continue;
其作用是结束本次循环,跳过循环体中下面尚未执行的语句,然后进行下一次是否执行循环的判定。
5、 练习
5.1 在一个有序数组中查找具体某个数字n (二分查找法)
int main() {
int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
int left = 0;
int n = 0;
scanf("%d", &n);
int len = sizeof(arr) / sizeof(arr[0]);
int right = len - 1;
int mid = 0;
while (left <= right)
{
mid = (left + right) / 2; //当下标值较大,可能越界 mid = left + (right-left)/2;
if (n > arr[mid])
left = mid + 1;
else if (n < arr[mid])
right = mid - 1;
else{
printf("找到的数组下标为:%d", mid);
break;
}
}
if (left > right)
printf("没有找到该数");
return 0;
}
运行结果:
5.2 猜数字游戏
#include<stdio.h>
#include<stdlib.h>
//写一个猜数字游戏
//1、电脑自动生成1-100的随机数
//2、玩家猜数字,猜数字的过程中,根据猜测数字的大小给出大了或小了的反馈,直到猜对游戏结束。
//3、玩完一把不过瘾,还可以继续玩,不需要退出程序
void menu() {
printf("***** ************* *****\n");
printf("***** 1、猜数字游戏 *****\n");
printf("***** 0、退出游戏 *******\n");
printf("***** ************* *****\n");
}
void game() {
int r = 0;
int guess = 0;
int count = 5;
//随机数不需要循环生成
//初识化随机数生成种子
srand((unsigned int)time(NULL)); //通过时间戳可以生成不同的随机数生成准则
//如果要生成100-200的随机数 --------> 100 + rand() % (200-100+1)
//要生成a-b的随机数为 -------> a + rand() % ( b - a +1 )
r = rand()%100+1; //生成1-100的随机数
system("cls");
printf("猜数字游戏\n");
//猜数字循环,假设只有5次猜的机会
while(count)
{
printf("你还有%d次机会\n",count );
printf("请输入数字:");
scanf("%d", &guess);
if (guess > r)
printf("猜大了\n");
else if (guess < r)
printf("猜小了\n");
else
{
printf("猜对了,数字是%d\n", r);
break;
}
count--;
}
printf("你的猜测次数已用完,正确的数字是:%d\n", r);
}
int main() {
int input = 0;
do {
menu();
scanf("%d", &input);
switch (input)
{
case 1:
game();
break;
case 0:
printf("游戏结束,退出游戏\n");
break;
default:
printf("输入无效,请重新输入\n");
break;
}
} while (input);
return 0;
}
运行结果: