广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >详解C语言中for循环与while循环的用法
  • 335
分享到

详解C语言中for循环与while循环的用法

2024-04-02 19:04:59 335人浏览 独家记忆
摘要

目录一、单层for循环二、for循环与if选择的嵌套三、多层for循环的嵌套四、while循环五、总结一、单层for循环 引例:C语言实现求1到10的和(用for循环实现) #inc

一、单层for循环

引例:C语言实现求1到10的和(用for循环实现)

#include <stdio.h>

int main()
{
	int i, sum = 0;
	
	for (i = 1; i <= 10; i++)
		sum = sum + i;
	
	printf("sum = %d\n", sum);
	
	return 0;
}

单层for循环执行的顺序:

第一次循环先执行语句①,执行完语句①执行语句②,如果语句②成立则执行语句④,执行完语句④执行语句③,执行完语句③标志着第一次循环结束;第二次循环先执行语句②,如果语句②成立则执行语句④,执行完语句④执行语句③,执行完语句③标志着第二次循环执行结束,随后循环中语句的执行顺序与第二次循环一致。如果在循环过程中语句②不成立,则整个循环就结束了。直到整个循环结束后才会执行语句⑤,因为,for语句与if语句所能控制的范围相同,只能控制其接下来的第一条语句,言下之意是,语句⑤并不在for循环的内部。需要注意的是,语句①仅在第一次循环中执行,在其它循环过程中不执行。换句话说,语句①只会在整个循环过程中执行一次。语句①的作用其实是给变量进行初始化,所以它仅参与了第一次循环。还有值得注意的是,初学时容易在for (①; ②; ③)后加分号,这个情况我已经在《C语言if语句中常见的问题》这篇文章中的空语句问题中详细叙述了其中的道理,并且在for语句中依然适用,有兴趣的话可以一看。

练习

C语言实现求1到10中奇数的和

#include <stdio.h>

int main()
{
	int i, sum = 0;
	
	for (i = 1; i <= 10; i = i +2)
		sum = sum + i;
	
	printf("sum = %d\n", sum);
	
	return 0;
}

C语言实现求1+1/2+1/3+…+1/99+1/100

初学时的错误代码:

#include <stdio.h>

int main()
{	
	int i;
	float sum = 0; // 考虑到和是小数,所以定义sum为float类型
	
	for (i = 1; i <= 100; i++)
		sum = sum + 1/i;
	
	printf("sum = %f\n", sum); // float类型的变量用%f输出

	return 0;
}

错误原因:没有考虑到1/i的数据类型。在C语言中,整型除以整型得到的结果只有整数位。例如,16/3 = 5。上述程序中i是整型变量,所以1/i也是整型,故从i大于等于2时,1/i的值永远为0。

因此需要将1/i的值想办法变为浮点数才可以实现想要的功能。C语言规定,只要被除数与除数其中的一个为浮点数,则商为浮点数。故解决的办法有两种,第一种是将1/i写为1.0/i,第二种是将整型变量i强制类型转化为float类型,正确的代码如下:

#include <stdio.h>

int main()
{	
	int i;
	float sum = 0;
	
	for (i = 1; i <= 100; i++)
		sum = sum + 1.0/i;// 或 sum = sum + 1/(float)(i);
	
	printf("sum = %f\n", sum);

	return 0;
}

思考1:如果将上述代码中的sum = sum + 1/(float)(i);改为sum = sum + (float)(1/i);后能否正确输出sum的值?

思考2:能否将i直接定义为浮点型变量?

答案是不能,因为浮点型数据是以IEEE754标准来存储的,但IEEE754标准无法确保精确存储每一个浮点数,例如,6.234在存储过程中很可能存的不是6.234而是6.23399999,这是IEEE754标准的缺陷。所以即便在该程序中将i定义为浮点型变量后输出的结果是正确的,也不能确保在其他程序中依然正确,因为i不一定是准确的数字。需要注意的是,我们一般不会把循环中不断发生更新的变量定义为浮点型变量,因为浮点型数据存储过程属于非精确存储。

二、for循环与if选择的嵌套

引例:C语言实现求1到100之间所有可以被3整除的数字之和

#include <stdio.h>

int main()
{
	int i, sum = 0;

	for (i = 1; i <= 100; i++)
	{
		if (i % 3 == 0)
			sum = sum + i;
	}

	printf("sum = %d\n", sum);

	return 0;
}

思考:下面的程序输出结果是什么?

#include <stdio.h>

int main()
{
	int i, sum = 0;

	for (i = 1; i <= 12; i++)
	{
		if (i % 3 == 0)
			sum = sum + i;
		printf("sum = %d\n", sum);
	}

	return 0;
}

练习(以下题目均要求使用for循环和if选择的嵌套来完成)

编写C语言程序求1到100之间的奇数之和

#include <stdio.h>

int main()
{
	int i;
	int sum = 0;

	for (i = 1; i <= 100; i++)
	{
		if (i % 2 == 1)
			sum += i;
	}

	printf("奇数之和为%d\n", sum);

	return 0;
}

编写C语言程序求1到100之间的奇数的个数

#include <stdio.h>

int main()
{
	int i;
	int count = 0;

	for (i = 1; i <= 100; i++)
	{
		if (i % 2 == 1)
			count++;
	}

	printf("个数为%d\n", count);

	return 0;
}

编写C语言程序求1到100之间的奇数的平均值

#include <stdio.h>

int main()
{
	int i;
	int count = 0;
	int sum = 0;
	float average; // 考虑到平均值可能带有小数位,所以将平均值定义为float类型

	for (i = 1; i <= 100; i++)
	{
		if (i % 2 == 1)
		{
			count++;
			sum += i;
		}
	}

	average = 1.0 * sum / count; //也可以运用强制类型转换写成average = (float)(sum)/count;
	printf("平均数为%f\n", average);

	return 0;
}

编写C语言程序求1到100之间的奇数之和与1到100之间的偶数之和

#include <stdio.h>

int main()
{
	int i;
	int sum1 = 0; // 奇数和
	int sum2 = 0; // 偶数和

	for (i = 1; i <= 100; i++)
	{
		if (i % 2 == 1)
			sum1 += i;
		else
			sum2 += i;
	}

	printf("奇数之和为%d,偶数之和为%d\n", sum1, sum2);

	return 0;
}

三、多层for循环的嵌套

多层for循环执行的顺序:

第一次循环先执行语句①,执行完语句①执行语句②,如果语句②成立则跳入内部循环执行语句④,执行完语句④执行语句⑤,如果语句⑤成立则执行语句⑦,执行完语句⑦执行语句⑥,执行完语句⑥执行语句⑤,如果如果语句⑤不成立,则标志着内部循环执行完毕,接下来跳出内部循环执行语句③,执行完语句③标志着第一次整个循环结束;第二次循环先执行语句②,如果语句②成立,则再次跳入内部循环执行语句④,以此类推;如果语句②不成立,整个循环就结束了。由于⑧不属于任何一个for循环内部的语句,所以要在整个循环执行完毕后才会执行语句⑧。

换个方式:

因为for语句与if语句所能控制的范围相同,只能控制其接下来的第一条语句,所以语句⑦属于内部for循环,而语句⑦与内部的for循环语句构成的语句整体是一个语句,也就是上图中的绿色方框部分,这个整体语句又是外层for循环内部的第一个语句,所以,外层for循环所控制的语句就是绿色方框部分,而外层for循环完整的结构就是上图中的橙色方框部分。所以按照for循环的大体执行顺序,首先会执行语句①,执行完语句①执行语句②,如果语句②成立则会执行绿色方框部分,绿色方框部分是单层for循环,所以执行过程按照单层for循环的执行循序执行,当内部的绿色方框部分执行完毕后,则会执行语句③,语句③执行完标志着整体一次循环结束,下一次循环又从判断语句②是否成立开始,如果成立,则执行绿色方框部分;如果不成立,则整个循环结束。整个循环结束后才会执行语句⑧,因为语句⑧并不属于这两层for循环中的任何一层。

思考1:下面的for循环的执行顺序是什么样的?

思考2:下面的for循环的执行顺序是什么样的?

思考3:下面的for循环的执行顺序是什么样的?

思考4:下面的程序输出结果是什么?

#include <stdio.h>

int main()
{	
	int i, j;
	
	for (i = 0; i <3; i++)
		for (j = 2; j < 5; j++)
			printf("AAAA\n");
		printf("BBBB\n");

	return 0;
}

思考5:下面的程序输出结果是什么?

#include <stdio.h>

int main()
{	
	int i, j;
	
	for (i = 0; i <3; i++)
		printf("AAAA\n");
		for (j = 2; j < 5; j++)
			printf("BBBB\n");
		printf("CCCC\n");

	return 0;
}

思考6:下面的程序输出结果是什么?

#include <stdio.h>

int main()
{	
	int i, j;
	
	for (i = 0; i <3; i++)
	{
		printf("AAAA\n");
		for (j = 2; j < 5; j++)
			printf("BBBB\n");
		printf("CCCC\n");
	}

	return 0;
}

四、while循环

引例:C语言实现求1到10的和(用while循环实现)

#include <stdio.h>

int main()
{
	int i, sum = 0;
	
	i = 1;
	while (i <= 10)
	{
		sum += i;
		i++;
	}
	
	printf("sum = %d\n", sum);
	
	return 0;
}

对比:C语言实现求1到10的和(用for循环实现)

#include <stdio.h>

int main()
{
	int i, sum = 0;
	
	for (i = 1; i <= 10; i++)
		sum = sum + i;
	
	printf("sum = %d\n", sum);
	
	return 0;
}

while循环与for循环的相互转换:

从上述两个程序可知,while循环和for循环可以进行互相转换,言下之意是,所有能用for循环实现的功能,就可以用while循环实现,反之同理。但是,while循环和for循环在写法上有一定的差别。

五、总结

循环结构在学习编程中起到至关重要的作用,几乎每个有用的程序中都有循环结构的身影,循环结构是我们以后编程中的重中之重,掌握其执行顺序是理解程序的不二法门.

以上就是详解C语言中for循环与while循环的用法的详细内容,更多关于C语言 for while循环的资料请关注编程网其它相关文章!

--结束END--

本文标题: 详解C语言中for循环与while循环的用法

本文链接: https://www.lsjlt.com/news/153901.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 详解C语言中for循环与while循环的用法
    目录一、单层for循环二、for循环与if选择的嵌套三、多层for循环的嵌套四、while循环五、总结一、单层for循环 引例:C语言实现求1到10的和(用for循环实现) #inc...
    99+
    2022-11-13
  • C语言 while for do while循环体详解用法
    while循环 表达式: while(表达式) { 循环语句; } while 语句执行流程图: 例子: 打印1-10的数字 #include <stdio.h>...
    99+
    2022-11-12
  • C语言中for循环与while循环怎么使用
    本文小编为大家详细介绍“C语言中for循环与while循环怎么使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“C语言中for循环与while循环怎么使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。一、单层f...
    99+
    2023-07-02
  • C语言for循环嵌套for循环在实践题目中应用详解
    目录做题前先学招第一题第二题第三题第四题第五题第六题做题前先学招 for循环嵌套个for循环,就是以下类型 for(...)——>" for(...
    99+
    2022-11-13
  • c语言for、while和do-while循环之间的区别
    for,while,do-while区别 循环结构 1、初始化变量:for循环当中定义的初始化变量,只有自己才能用;while和do-while循环,初始化变量本来就在外面,所以外...
    99+
    2022-11-12
  • C语言for循环嵌套for循环方法怎么应用
    这篇文章主要介绍“C语言for循环嵌套for循环方法怎么应用”,在日常操作中,相信很多人在C语言for循环嵌套for循环方法怎么应用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C语言for循环嵌套for循环...
    99+
    2023-06-30
  • JavaScript中的for循环与双重for循环详解
    for循环 for循环就是对数组的元素进行循环。 语法: for (初始化变量; 条件表达式; 迭代语句) {      需要执行的代码块...
    99+
    2022-11-11
  • linux shell循环:for、while、until用法详解
    学习脚本就是为了方便我们运维工作,而对运维人员从来讲,有很多工作也是需要重复执行的,比如我们管理用户帐户时就需要批量创建和删除用户帐户。而此时如果使用系统自带的useradd或者userdel去操作的话,就只能机械式的一...
    99+
    2022-06-04
    linux shell循环
  • C语言示例讲解while循环语句的用法
    目录1、while语句结构2、代码示例在学习和回顾该知识前,已经掌握了if语句的结构和用法。 if (条件)    语句; 当条件满足的情况下,if结构...
    99+
    2022-11-13
  • C语言示例讲解for循环的用法
    目录1、循环语句for的语法2、for循环中的break以及continue3、for语句的循环变量控制的一些建议4、for循环的变种5、题目1、循环语句for的语法 for (表达...
    99+
    2022-11-13
  • Python循环语句代码详解:while、for、break
    目录 1 while循环   1 while循环 循环语句是程序设计中常用的语句之一。任何编程语言都有while循环,Python也不例外。while循环的格式如下所示。  while(表达式):       …   else: ...
    99+
    2023-09-20
    python 开发语言
  • C语言示例讲解do while循环语句的用法
    目录1、do while()循环-先执行后判断2、do while中的break以及continue3、练习4、猜数字游戏1、do while()循环-先执行后判断 do语句的语法 ...
    99+
    2022-11-13
  • C语言while循环语句怎么使用
    while循环语句在C语言中的使用方式如下:1. 基本语法:```while (条件表达式) {循环体语句;}```其中,条件表达式...
    99+
    2023-08-18
    C语言 while
  • Python中的用for,while循环
    使用for循环遍历文件打开文件open     r:以读模式打开    w:以写模式打开    a:以追加模式打开    r+:以读写模式打开    w+:以读写模式打开(参见w)    a+:以读写模式打开(参见a)    rb:以二进制...
    99+
    2023-01-31
    Python
  • C语言的​do while循环怎么应用
    本篇内容介绍了“C语言的do while循环怎么应用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!do while循环(1).do whil...
    99+
    2023-07-04
  • c语言for、while和do-while循环之间的区别有哪些
    这篇文章主要介绍c语言for、while和do-while循环之间的区别有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!for,while,do-while区别循环结构初始化变量:for循环当中定义的初始化变量,...
    99+
    2023-06-26
  • C语言循环结构详解
    目录break语句continue语句C语言循环结构一、goto 语句(现在一般很少用) 1.语句介绍: 2.语法结构: 3.goto 语句程序示例: 二、do-while语句 1....
    99+
    2022-11-12
  • Shell中的for和while循环的用法
    本篇内容主要讲解“Shell中的for和while循环的用法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Shell中的for和while循环的用法”吧!一、for循环1.数字段形式代码如下:f...
    99+
    2023-06-09
  • C语言的for循环怎么使用
    本篇内容主要讲解“C语言的for循环怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C语言的for循环怎么使用”吧!1、循环语句for的语法for (表达式1;表达式2;表达式3)&nbs...
    99+
    2023-07-02
  • C语言的​for循环如何使用
    这篇“C语言的for循环如何使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C语言的for循环如何使用”文章吧。for循环...
    99+
    2023-07-04
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作