Logo

郎哥编程

第25讲:while循环结构

2026-03-06 28

一、循环结构的必要性

前面讨论了编程中进行判断的各种方法,然而有些问题仅仅通过判断还不能解决。某些情况中,为解决一个问题常常需要重复执行一个或多个操作。例如,要求输出从1—5分别乘以10所得的乘法表,用以前学过的知识编制的程序见例【4-5】。

例【1】输出从1—5分别乘以10所得的乘法表

程序清单 sample.c

#include <stdio.h>
int main()
{
	int  result1,result2,result3,result4,result5;
    result1 = 1 * 10;
    printf("1 * 10 = %d\n",result1);
    result2 = 2 * 10;
    printf("2 * 10 = %d\n",result2);
    result3 = 3 * 10;
    printf("3 * 10 = %d\n",result3);
    result4 = 4 * 10;
    printf("4 * 10 = %d\n",result4);
    result5 = 5 * 10;
    printf("5 * 10 = %d\n",result5);
}

程序编写5条语句计算乘积,再编写另外5条语句显示这些乘积。如果要求输出1—100的数与10相乘的乘法表呢?就需要重复编写100次这样的语句。这样既费时又费力。我们需要一种方法可以快速有效地执行重复性操作。在C语言中,可以通过循环结构来解决这类问题。

循环结构是程序中一种很重要的结构。其特点是,在给定条件成立时,重复执行某程序段,直到条件不成立为止。给定的条件成为循环条件,反复执行的程序段称为循环体。Java语言提供了三种不同形式的循环结构。

1. while循环结构

用于在特定条件为真的情况下重复执行某些操作,在执行循环体之前先检查条件,一旦条件为假,循环就停止。

2.do—while循环结构

同样用于在特定条件为真的情况下重复执行某些任务。但是在do—while循环中,是在执行循环语句之后再检查条件。因此,在循环结束前,循环体内的语句至少会被执行一次。

3.for循环结构

fou循环与while循环在功能上类似,只要条件为真,就会执行循环体中的语句。同样,也是在执行循环语句之前先检查条件,但是,其语法规则与while循环有所不同。

二、while循环

while循环的一般语法是:

while( 表达式 )

  语句;

其中,表达式是循环条件,语句为循环体。while语句的语义是:计算表达式的值,当值为真(非0)时,执行循环体语句,一旦条件为假,就停止执行循环体。如果条件在开始时就为假,则不执行循环体语句直接退出循环。

循环体语句可以是空语句、单条语句或语句集。如果是语句集,则要用“{”和“}”把它们括起来,用于循环条件的表达式必须返回真或假。

例【2】输出从1—10分别乘以10所得的乘法表

程序清单 sample.c

#include <stdio.h>
int main()
{
	//声明变量num,初值为1
    int  num=1;   
	// 声明变量result,存储计算结果
    int  result;
    while( num <=10 )
    {
       result = num * 10;    
       printf(" %d * 10 = %d \n",num,result); 
       //使用自增运算符,修改循环变量
       num++;    
    }
}

程序声明了两个int类型的变量num和result,分别用来存储数字和乘积。然后,将num初始化为1,因为打算在while循环中从1开始执行乘法运算,求出1—10的数字与10的乘积,因此将while循环的条件编写为num<=10。这样确保了只要num小于等于10,就执行while循环;而当此条件变为假时,即num的值达到11时,就结束此循环。循环体中的第一个语句用num乘以10,将计算结果保存在变量result中。第二个语句输出乘法表,循环体中的最后一个语句将num的值递增1,来修改num的值。此处使用了单目自增运算符++,也可以编写为num=num+1,来替代num++。

程序中的num++非常重要,这条语句通过修改num的值来修改循环条件,直到num的值等于11,循环条件为假时退出循环。也就是说,循环条件中的变量,需要在循环中重新赋值,以逐渐改变循环条件的值,直到循环条件为假;否则循环将永远不会停止,这种循环称为“死循环”或者“无限循环”。

例【3】无限循环

程序清单 sample.c

#include <stdio.h>
int main()
{
     int  count=0;   
    while( count < 100 )
    {
      printf("这将没完没了,帮帮我吧!!!"); 
      printf("试试Ctrl+C吧");
    }
}

程序功能主要是演示在while循环语句中,由于缺乏改变条件的语句而导致出现无限循环的问题。

程序中while循环体内没有修改循环变量count的值,导致循环条件一直为真,造成了无限循环。

代码在线纠错(通义千问 qwen-max)

支持粘贴多个代码文件,提交后由阿里云通义千问自动分析代码漏洞、语法错误、逻辑问题并给出修改建议。
您已解锁 AI 代码纠错功能,可正常使用!

评论区

登录 后发表评论
暂无评论