C语言中的while循环语句示例详解

 更新时间:2023年06月29日 09:47:53   作者:钟爱陈奕迅  
这篇文章主要介绍了C语言中的while循环语句,主要包括while循环的基本信息及常见问题,本文结合实例代码给大家讲解的非常详细,需要的朋友可以参考下

日常生活中除了选择之外,还有很多循环做的事情,比如说三点一线的生活,日复一日的工作,每天都在重复着一样的事情,这就是循环,那么C语言中的循环语句是什么样的呢,开始今天的分享。

while循环

基本语法格式

while(表达式)
{
    语句;
}

还是使用一个代码来解释while循环的执行过程:

switch(表达式)
{
case 常量1:语句1
case 常量2:语句2
default:语句n   
    break;
}

通过代码可以看到,表达式i<=10在i==1的情况下判断为真,所以循环体中的语句执行,最后打印出1-10,那么我们可以知道,当表达式为真时,while循环才会执行,当表达式为假,循环则不会执行。那么如果表达式是一个非0的数,循环会不会一直执行呢?

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
	while (1)
	{
		printf("a");
	}
	return 0;
}

通过运行结果可以看到,当表达式为1时,while循环会一直执行循环体,也就变成了一个死循环。

while循环中的break;

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
	int i = 1;
	while (i<=10)
	{
		printf("%d\n", i);
		if (i==5)
		{
			break;
		}
		i++;
	}
	return 0;
}

通过前面的代码我们知道这个代码是用于打印1-10,那么如果在i==5的时候加入break,会发生什么呢?

 可以看到当加入了break之后,当执行到i==5时,后面的循环并没有执行,那么可以理解为break语句的意思是终止循环。

while循环中的continue语句

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
	int i = 1;
	while (i<=10)
	{
		if (i == 5)
		{
			continue;
		}
		printf("%d\n", i);
		i++;
	}
	return 0;
}

 上面我们知道了break的作用,那么continue和break有什么区别呢,通过运行结果可以看到,当输出到4时,代码进入了一个死循环,而不是像break一样终止,这是为什么呢?我来解释一下,continue的意思为继续,当代码执行到continue时,会跳过本次循环而继续下一次,从代码中看到,当i==5时,循环跳过,那么i++不会执行,i的值就不会改变,那么i==5回到表达式判断5<10,进入循环,那么这个时候i==5就又会触发continue,然后i++又不能执行,就造成i的值一直为5,一直跳过,就成了一个死循环。

那么while循环的基本信息我们知道了,我们来实现一下下面两个问题。

第一:用户输入一个数字,求该数字所拥有的位数之和。

那么从题目中可以知道,一个数可能会有很多位数,所以只计算一次是不行的,就需要循环计算,并且,求位数之和就需要将数字每个位数分开进行相加,知道了这些,那我们来具体实现一下。

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
	int numb;//定义一个int类型的整数
	int sum = 0;//定义一个int类型的变量用于接受位数之和
	printf("Please input\n");//让用户输入
	scanf("%d", &numb);//接受用户输入的整数
	while (numb!=0) 
	{
		sum += numb % 10;//将整数的位数分离并加在sum中
		numb /= 10;//将已经计算过的位数去除
	}
	printf("该数的位数之和为%d\n", sum);//输出sum的值
	return 0;
}

写这种代码之前呢我们需要举例进去算一下,那么我就以123为例子,当输入的numb为123时,要计算1+2+3,要将每一位数分离,那么先将个位数分离,那么123/10的余数便是个位数3,这时我们就得到了个位数3,将3加进sum里面,那么3已经加完了,就要将3去掉,那么123/10的商为12便将3去掉,重复执行这个结果,当最后只剩1时,1/10为0,所以循环结束,那么如果位数不止为3位呢,即使这个数为n位,将最高位/10也一定为0,那么当计算到最高位时,相加已经完成,所以最高位/10为0便是循环条件,如果分离出来的数值/10不为0,说明至少有两位以上的数值没有分开,所以循环条件为numb==0。

 第二个,这个代码非常的好玩并且有意思,要输出下面的图片

 那么这个代码要怎么写呢,我们可以看到,最开始输出*号,然后每一次输出用一个字符代替*号,最后输出一个I  Love  You。那么我们可以将*好和字符串各自定义为一个字符类型的数组,每一次输出时将数组1的最左值用数组2的最左值替换,同样最右边也是一样。那么数组中的值通过下标调用,下标从0开始,每替换一次下标要加1,知道了这些,我们就可以实现代码。

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
	char arr1[] = "I  Love  You";
	char arr2[] = "************";
	int left = 0;
	//int right = sizeof(arr1) / sizeof(arr1[0]) - 2;//[a,b,c,\0]
	int right = strlen(arr2)-1;//右下标
	printf("%s\n", arr2);
	printf("\n");
	while (left<right)
	{
		arr2[left] = arr1[left];
		arr2[right] = arr1[right];
		left++;
		right--;
		printf("%s\n", arr2);
		printf("\n");
	}
	return 0;
}

那么每次替换数值时,左标都会加1,右标都会减1,总会有一次两者相等,那便是最后一个字符替换,所以循环条件为left<right。

以上就是今天的所有内容,那么屏幕前的你们对while循环是否也有一定的理解了呢。

到此这篇关于C语言中的while循环语句的文章就介绍到这了,更多相关C语言while循环语句内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 基于Matlab实现人工神经网络(ANN)回归的示例详解

    基于Matlab实现人工神经网络(ANN)回归的示例详解

    这篇文章主要为大家详细介绍了Matlab实现人工神经网络(ANN)回归的相关资料,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起了解一下
    2023-02-02
  • C++如何用智能指针管理内存资源

    C++如何用智能指针管理内存资源

    这篇文章主要介绍了C++如何用智能指针管理内存资源,帮助大家更好的理解和使用c++开发,感兴趣的朋友可以了解下
    2020-08-08
  • C语言计算大数阶乘的方法

    C语言计算大数阶乘的方法

    这篇文章主要为大家详细介绍了C语言计算大数阶乘的方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-05-05
  • C++解决大数组栈内存不够问题的方法分析

    C++解决大数组栈内存不够问题的方法分析

    这篇文章主要介绍了C++解决大数组栈内存不够问题的方法,结合实例形式对比分析了C++针对大数组栈内存不足情况的常见解决方法及其优缺点,具有一定参考借鉴价值,需要的朋友可以参考下
    2018-05-05
  • c语言的程序环境与预处理详解

    c语言的程序环境与预处理详解

    大家好,本篇文章主要讲的是c语言的程序环境与预处理详解,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下
    2022-02-02
  • 基于C++11的threadpool线程池(简洁且可以带任意多的参数)

    基于C++11的threadpool线程池(简洁且可以带任意多的参数)

    C++11 加入了线程库,从此告别了标准库不支持并发的历史。然而 c++ 对于多线程的支持还是比较低级,稍微高级一点的用法都需要自己去实现,譬如线程池、信号量等
    2019-04-04
  • C语言代码实现扫雷游戏

    C语言代码实现扫雷游戏

    这篇文章主要为大家详细介绍了C语言代码实现扫雷游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-02-02
  • C++重载运算符你真的了解吗

    C++重载运算符你真的了解吗

    这篇文章主要为大家详细介绍了C++重载运算符,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-03-03
  • C++异常处理方式实例详解(超级详细!)

    C++异常处理方式实例详解(超级详细!)

    程序有时会遇到运行阶段错误,导致程序无法正常执行下去,c++异常为处理这种情况提供了一种功能强大的而灵活的工具,下面这篇文章主要给大家介绍了关于C++异常处理方式的相关资料,需要的朋友可以参考下
    2023-04-04
  • C++ override关键字使用详解

    C++ override关键字使用详解

    这篇文章主要介绍了C++ override关键字使用详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-01-01

最新评论