首页 > 其他分享 >C语言——循环语句

C语言——循环语句

时间:2024-07-31 23:29:33浏览次数:9  
标签:语句 continue int C语言 while 循环 表达式

        C语言是结构化的程序设计语言,这里的结构是指:顺序结构、循环结构、选择结构。在C语言中,有三种循环语句,下文将一一介绍如何在C语言编程时使用。

1. while语句

        while语句的语法形式如下:

1 while(表达式);

2 {

        语句;

    }

        示例代码: 

// while后的表达式为真,死循环打印 Hello World!
#include <stdio.h>
int main()
{
	while (1)
	{
		printf("Hello World!\n");
	}
	return 0;
}

       while语句的执行流程如下:

        首先,执行判断表达式,若表达式为真,则执行循环语句,语句执行结束后再继续判断表达式是否为真,是否进行下一次循环;若表达式为假,循环结束。

        练习代码:

//练习代码1:打印0~10的值
#include <stdio.h>
int main()
{
	int i = 0;
	while (i <= 10)
	{
		printf("%d ", i);
		i++;
	}
	return 0;
}

//练习代码2:输入一个正整数,逆序打印这个正整数的每一位。
#include <stdio.h>
int main()
{
	int i = 0;
	int a = 0;
	scanf_s("%d", &i);
	while (i != 0)
	{
		a = i % 10;
		i = i / 10;
		printf("%d ", a);
	}
	return 0;
}

2. for语句

        for语句的语法形式如下:

1 for(表达式1;表达式2;表达式3)

2 {

        语句;

    } 

       示例代码:

//打印0~10的值
#include <stdio.h>
int main()
{
	int i = 0;
	for (i = 0; i <= 10; i++)
	{
		printf("%d ", i);
	}

	return 0;
}

       for语句的执行流程如下:

         首先,执行表达式1初始化循环变量。然后执行表达式2的判断条件,若表达式2为假,则跳出循环体;若表达式2为真,则执行循环语句。循环语句执行后,再去执行表达式3,调整循环变量。然后再去执行表达式2的判断条件,决定是否继续循环。需要注意的是,整个循环过程,表达式1初始化循环变量只执行1次,只有表达式2、循环语句和表达式3在循环。

        练习代码:

//练习代码:计算1~100之间3的倍数之和
#include <stdio.h>
int main()
{
	int i = 0;
	int sum = 0;
	for (i = 0; i <= 100; i++)
	{
		if (i % 3 == 0)
		{
			printf("%d ", i);
			sum = sum + i;
		}
	}
	printf("\n%d\n", sum);

	return 0;
}

3. do-while语句

         do-while语句的语法形式如下:

 1 do

2 {

        语句;

   }while(表达式);

         示例代码:

//示例代码:打印0~10的值
#include <stdio.h>
int main()
{
	int i = 0;
	do
	{
		printf("%d ", i);
		i++;
	}while (i <= 10);

	return 0;
}

         do-while语句的执行流程如下: 

         首先,do-while语句先执行循环语句,然后再执行while后的判断表达式,若表达式为真,则会进行下一次循环;若表达式为假,则会跳出循环体。需要注意的是,while语句和for语句这两种循环都是先判断表达式真假,再决定是否执行循环语句,而在do-while语句中会直接执行一次循环语句,再进行判断语句,所以do-while语句中循环体至少执行一次。

        练习代码:

//练习代码:输入一个正整数,计算这个整数是几位数?
#include <stdio.h>
int main()
{
	int i = 0;
	int count = 0;
	scanf_s("%d", &i);
	do
	{
		count++;
		i /= 10;//i = i / 10

	}while (i);
	printf("count = %d", count);

	return 0;
}

4. break语句和continue语句

        在循环执行的过程中,如果需要提前终止循环,就需要用到 break和continue这两个关键字。

        break是用于永久终止循环,即只要break语句被执行,就会直接跳出循环体,执行后面的程序。

        continue是跳过本次循环中continue后的代码,在while语句和for语句中有所差异,需要具体问题具体分析。

4.1 while语句中的break和continue 

4.1.1 break

        示例代码:

//示例代码:分析一下代码执行结果?
#include <stdio.h>
int main()
{
	int i = 1;
	while (i <= 10)
	{
		if (i == 5)
		{
			break;//当i等于5时,循环就终止了
		}
		printf("%d ", i);
		i++;
	}

	return 0;
}

        输出结果: 

        代码分析:输出1,2,3,4后,当i等于5后,循环在break的地方终止。不再输出,循环彻底终止。所以brake的作用就是永久终止循环,只要break被执行,break外的第一层循环就终止了。当使用while语句时想在某种条件下终止循环,则可使用break实现。

4.1.2 continue

        示例代码:

//示例代码:分析一下代码执行结果?
#include <stdio.h>
int main()
{
	int i = 1;
	while (i <= 10)
	{
		if (i == 5)
		{
			continue;
			/*
			* 当i等于5后,执行continue,直接跳过continue后的代码,去执行判断表达式。
			* 这里跳过i++这条语句,变量没有调整,故i一直是5,程序陷入死循环。
			*/
		}
		printf("%d ", i);
		i++;
	}

	return 0;
}

输出结果: 

        代码分析:continue在循环中作用是跳过本次循环中continue后的代码,继续进行下一次循环判断。当i等于5后,执行continue,直接跳过continue后的代码,去执行判断表达式,跳过i++这条语句,变量没有调整,故i一直是5,程序陷入死循环。如果循环的调整语句在continue前,就不会陷入死循环。

4.2 for语句中的break和continue 

4.2.1 break

        示例代码:

//示例代码:分析一下代码执行结果?
#include <stdio.h>
int main()
{
	int i = 1;
	for (i = 1; i <= 10; i++)
	{
		if (i == 5)
		{
			break;
		}
		printf("%d ", i);
	}

	return 0;
}

        输出结果: 

        代码分析:在for语句中,break也是用于终止循环的,不管循环了多少次,只要执行了break,循环就彻底终止。

4.2.2 continue

        示例代码:

//示例代码:分析一下代码执行结果?
#include <stdio.h>
int main()
{
	int i = 1;
	for (i = 1; i <= 10; i++)
	{
		if (i == 5)
		{
			continue;//这里continue跳过了i=5时输出,直接执行了i++的调整部分
		}
		printf("%d ", i);
	}

	return 0;
}

         输出结果: 

        代码分析: 在for语句中,continue作用是跳过本次循环中continue后的代码,直接去到循环的调整部分。在使用for语句编程时,若想满足某个条件时,本次循环无需再执行后续某些操作时,则可使用continue。

4.3 do-while语句中的break和continue

        do-while语句中的break和continue的作用和while语句中的break和continue的作用相似,这里不做赘述。

5. goto语句

        在C语言中,除了分支语句和循环语句,还有一种特殊的语句,这就是goto语句和跳转标号。goto语句的作用是在同一个函数内跳转到设置好的标号处。

        示例代码:

#include <stdio.h>
int main()
{
	printf("Hello World!\n");
	goto next;
	printf("ABCD\n");
next:
	printf("EFGH\n");

	return 0;
}

         输出结果:

标签:语句,continue,int,C语言,while,循环,表达式
From: https://blog.csdn.net/weixin_66890742/article/details/140807736

相关文章

  • 【水仙花数】C语言实现输出所有的水仙花数(三位数的)
    需要使用C语言编写程序打印所有的水仙花数首先介绍什么是水仙花数,水仙花数(也称为阿姆斯壮数或自恋数)是指一个n位数,其各位数字的n次方之和等于它本身。例如,对于三位数来说,如果一个三位数的各位数字的立方和等于这个数本身,那么这个数就是水仙花数。例如,对于三位数153:13+53+33=......
  • c语言去掉字符串左右两边的空格
    #include<iostream>usingnamespacestd;#include<string.h>#include<stdio.h>/*去掉右边的空格*/char*rtrim(char*str){ intlen=0; inti=0; len=strlen(str); for(i=len;i>0;i--) { if(*(str+(i-1))=='�......
  • 【每日一题 | 数据结构】循环队列
    题目题型讲解核心:所有的循环队列的题,都使用“圆盘法”,即画图来解决。而不要死记公式!!循环队列即将队列空间想象为一个环形的空间,当front或rear位于线性表的最后一个元素时,再加1会回到第一个元素,如图所示:因此,基于这个特性,我们就可以用取模法来计算队列的最大长度等问题......
  • C语言----变量与强制类型转换(5)
    目录1.变量1.1变量的创建1.2变量的分类 1.3变量的存储2.强制类型转换1.变量1.1变量的创建前面我们已经了解了数据类型,我们使用类型做什么呢?类型是用来创建变量的那么什么是变量呢?C语言中把经常变化的值称为变量,不变的值称为常量。变量创建的语法形式是这样的......
  • C语言——复合类型
    一、结构体类型的基本使用1.1结构体类型的基本使用1.1.1为什么要用结构体C语言内置的数据类型,除了几种原始的基本数据类型,只有数组属于复合类型,可以同时包含多个值,但是只能包含相同类型的数据,实际使用场景受限。场景:用指针和结构体结合起来构造节点(如链表节点、二叉树结点......
  • 代码大全C语言如何使用ADT
    面向对象的编程语言能自动支持对同一ADT的多份实例的处理。如果你只是在面向对象的环境中工作,那你根本就不用自己操心处理多个实例的实现细节了恭喜你(你可以直接去读下一节“ADT和类”。)!如果你是在像C语言这样的非面向对象的环境中工作,你就必须自己手工实现支持处理多个实例的......
  • 如何用C语言写一个简易的shell
    参考文章https://danishpraka.sh/posts/write-a-shell/参考文章是英文的,我基本上是结合自己的理解翻译了一下,代码加了些注释,对阅读英文感兴趣的可以直接看这篇就可以了然后原作者还增加了管道等等功能,在参考文章最后的click那里,可以跳转到github上的仓库运行环境linux环境即......
  • 在Python中,为什么这个负浮点数能够通过非负while循环测试条件?
    在Python中工作收集用户输入输入需要非负在程序的另一部分成功使用了While条件但现在不明白为什么这个捕获有效输入的测试失败了。print("Howmanygramsofxyzarerequired?")xyz_string=input()xyz=int(float(xyz_string))whilex......
  • Spring循环依赖+案例解析
    什么是Spring中的循环依赖?循环依赖是指两个或者多个bean互相依赖对方,从而形成一个闭环。例如:BeanA依赖于BeanB,而BeanB又依赖于BeanA。可能会导致Spring在尝试创建这些bean实例时出现问题,因为他们互相等待对方被创建,最终导致应用程序无法启动。Spring是如何发现这种循环依赖......
  • Java逻辑控制语句
    一、Java的逻辑控制语句的大体分类:二、顺序结构1.顺序结构:即按顺序执行代码(从头到尾按顺序执行代码),如publicclassMain{publicstaticvoidmain(Stringargs[]){intnum1=10;intnum2=20;System.out.println(num1+num2);//先输出......