首页 > 编程语言 >循环结构程序设计

循环结构程序设计

时间:2025-01-23 18:04:11浏览次数:3  
标签:语句 int while 循环 printf 程序设计 表达式 结构

循环语句

    • 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 流程图如下

while循坏流程图

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;
}

运行结果:
在这里插入图片描述

标签:语句,int,while,循环,printf,程序设计,表达式,结构
From: https://blog.csdn.net/weixin_48836993/article/details/145320438

相关文章

  • 如何系统优化MySQL【表结构优化、索引优化】(上篇)
    ......
  • 【Rust自学】13.10. 性能对比:循环 vs. 迭代器
    13.10.0.写在正文之前Rust语言在设计过程中收到了很多语言的启发,而函数式编程对Rust产生了非常显著的影响。函数式编程通常包括通过将函数作为值传递给参数、从其他函数返回它们、将它们分配给变量以供以后执行等等。在本章中,我们会讨论Rust的一些特性,这些特性与许多语......
  • JAVA与数据结构-线性表
    目录一.线性表的概念二.线性表的关系及分类三.数组与顺序表四.链表1.静态链表(链表的的数组底层实现)2.循环链表3.双向链表五.栈1.栈的概念2.栈的底层实现3.共享空间栈4.逆波兰表达式(后缀表达式)5.栈与递归 六.队列1.队列概念2.队列的底层实现3.循环队列七.链......
  • 测试工程师效率提升系列第二篇:测试用例管理自动化——从 Excel 到结构化数据
    在测试工程师的日常工作中,测试用例管理是一个重要环节。很多团队仍然依赖于Excel表格来管理测试用例,包含用例描述、步骤、预期结果等内容。然而,这种方式存在以下痛点:难以复用:Excel文件往往是静态的,无法直接与自动化脚本关联。易出错:人工更新用例容易遗漏或引入错误,特......
  • 初步认识数据结构
    初步认识数据结构本文章可以帮助你初步的去认识数据结构1.什么是数据结构官方定义:在计算机科学中,数据结构是一种数据组织,管理和存储的格式。它是相互之间存在一种或者多种特定关系的数据元素集合。数据在计算机科学中,数据是所有能输入计算机并被计算机程序处理的符号的......
  • 如何利用openssl定义新的数据结构
        依赖openssl实现国密相关的结构时,虽然openssl中也有类似结构定义,但因为oid的差异、国密算法支持度不高等原因导致无法直接使用openssl接口,这时就需要自定义数据结构。实战:依据GMT0033定义时间戳响应//定义数据结构typedefstructSignerInfo_st{ASN1_INTEG......
  • 2025年Rust权威指南、Rust程序设计语言中文版PDF下载
    2025年《Rust权威指南》、《Rust程序设计语言》中文版PDF下载本书英文名为《TheRustProgrammingLanguage》,中文版名为《Rust权威指南》,社区翻译版名为《Rust程序设计语言》。本书由Rust核心开发团队编写而成,由浅入深地探讨了Rust语言的方方面面。从学习函数、选择数据结......
  • 【9.8】树结构-使用字典树解单词搜索 II
    一、题目        给定一个 mxn二维字符网格 board 和一个单词(字符串)列表words, 返回所有二维网格上的单词 。        单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字......
  • 【10.2】队列-设计循环队列
    一、题目        设计你的循环队列实现。循环队列是一种线性数据结构,其操作表现基于FIFO(先进先出)原则并且队尾被连接在队首之后以形成一个循环。它也被称为“环形缓冲器”。        循环队列的一个好处是我们可以利用这个队列之前用过的空间。在一个普通队......
  • Rust代码中有一个Vec集合对象,此集合中存放了一些结构体实例,这个Vec集合对象的生命周期
    eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee当你需要长生命周期的Vec并想在多个地方引用它内部的结构体实例时,有几种方法可以实现这种设计。以下是不同场景的解决方案:方法1:使用索引引用Vec元素如果Vec本身的生命周期长,而你只是需要访问其元素,可以通过索引......