C语言 while语句的用法详解_C 语言

在C语言中,共有三大常用的程序结构:

顺序结构:代码从前往后执行,没有任何“拐弯抹角”;

选择结构:也叫分支结构,重点要掌握 if else、switch 以及条件运算符;

循环结构:重复执行同一段代码。

前面讲解了顺序结构和选择结构,本节开始讲解循环结构。所谓循环(Loop),就是重复地执行同一段代码,例如要计算 1+2+3+……+99+100 的值,就要重复进行99次加法运算。

while循环

while循环的一般形式为:
    while(表达式){
        语句块
    }

其中表达式称为循环条件,语句块称为循环体。

while语句的意思是:先计算表达式的值,当值为真(非0)时, 执行循环体语句;执行完循环体语句,再次计算表达式的值,如果为真,继续执行循环体……这个过程会一直重复,直到表达式的值为假(0),就退出循环,执行后面的语句。其执行过程如下图所示:

用while语句计算1加到100的值:

#include <stdio.h>
int main(void){
  int i=1, sum=0;
  while(i<=100){
    sum+=i;
    i++;
  }
  printf("%d\n",sum);
  return 0;
}

运行结果:

5050

代码分析:

1) 程序运行到while语句时,因为 i=1,i<=100 的值为真,所以执行循环体;执行结束后 i 的值变为 2,sum 的值变为 1。

2) 接下来会继续判断 i<=100是否成立,因为此时 i=2,i<=100 成立,所以继续执行循环体;执行结束后 i 的值变为 3,sum 的值变为3。

3) 重复执行步骤 2)。

4) 当循环进行到第100次,i 的值变为 101,sum 的值变为5050;因为此时 i<=100 不再成立,所以就退出循环,不再执行循环体,转而执行while循环后面的代码。

再看一个例子,统计从键盘输入的一行字符的个数:

#include <stdio.h>
int main(){
  int n=0;
  printf("Input a string:");
  while(getchar()!='\n') n++;
  printf("Number of characters: %d\n", n);
  return 0;
}

运行结果:

Input a string:c.biancheng.net
Number of characters: 15

本例程序中的循环条件为getchar()!='\n',其意义是,只要从键盘输入的字符不是回车就继续循环。循环体n++;完成对输入字符个数计数。

do-while循环

除了while循环,在C语言中还有一种 do-while 循环。

do-while循环的一般形式为:

do{
    语句块
}while(表达式);

do-while循环与while循环的不同在于:它会先执行循环体,然后再判断表达式是否为真,如果为真则继续循环;如果为假,则终止循环。因此,do-while 循环至少要执行一次循环体。其执行过程可用下图表示:

用do-while计算1加到100的值:

#include <stdio.h>
int main(){
  int i=1, sum=0;
  do{
    sum+=i;
    i++;
  }while(i<=100);
  printf("%d\n", sum);
  return 0;
}

运行结果:

5050

注意while(i<=100);最后的分号;,这个必须要有。

while循环和do-while各有特点,大家可以适当选择,实际编程中使用while循环较多。

以上就是对 C语言while 语句用法的详细介绍,有需要的同学可以参考下。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索c
, 语句用法
, C语言while语句
, 语言while
C语言条件语句
c语言while语句的用法、c语言do while语句、c语言中while的用法、c语言while的用法、c语言while语句,以便于您获取更多的相关知识。

时间: 2024-09-24 12:47:22

C语言 while语句的用法详解_C 语言的相关文章

C语言for语句用法详解_C 语言

首先,这里所提到的类C语言指的是如C.C++.C#和Java等语法和C语言一样或类似的程序设计语言.这些语言中,for语句的语法和执行流程都是一样的.本文将就这一语句的用法进行一个较为深入的讨论. for语句: 复制代码 代码如下: for (表达式1;表达式2;表达式3) {   循环语句 } 表达式1 给循环变量赋初值 表达式2 为循环条件 表达式3 用来修改循环变量的值,称为循环步长. for语句的执行流程: 例:编程计算:1+2+3+...+99+100的结果. 这是累加问题,累加问题的

C++中auto_ptr智能指针的用法详解_C 语言

智能指针(auto_ptr) 这个名字听起来很酷是不是?其实auto_ptr 只是C++标准库提供的一个类模板,它与传统的new/delete控制内存相比有一定优势,但也有其局限.本文总结的8个问题足以涵盖auto_ptr的大部分内容. auto_ptr是什么? auto_ptr 是C++标准库提供的类模板,auto_ptr对象通过初始化指向由new创建的动态内存,它是这块内存的拥有者,一块内存不能同时被分给两个拥有者.当auto_ptr对象生命周期结束时,其析构函数会将auto_ptr对象拥有

C++指向函数的指针用法详解_C 语言

本文以实例形式展示了C++指向函数的指针用法,是深入学习C++所必须掌握的关键知识点.分享给大家供大家参考之用.具体方法如下: 函数指针 现来看看以下声明语句,看看其含义: float (*h(int, void (*)(int)))(int); 以下是一个变量指针的定义语句: float* pf; 以下是一个普通函数的声明语句: float f(); 请看以下声明语句: float* g(); 因为()的优先级高于*, 所以相当于: float* (g()); g是一个函数, 返回值为floa

C++ Vector用法详解_C 语言

vector是C++标准模版库(STL,Standard Template Library)中的部分内容.之所以认为是一个容器,是因为它能够像容器一样存放各种类型的对象,简单的说:vector是一个能够存放任意类型的动态数组,能够增加和压缩数据. 使用vector容器之前必须加上<vector>头文件:#include<vector>; vector属于std命名域的内容,因此需要通过命名限定:using std::vector;也可以直接使用全局的命名空间方式:using nam

C++中CSTRINGLIST用法详解_C 语言

CStringList类成员 构造 CStringList 构造一个空的CString对象列表 首/尾访问 GetHead 返回此列表(不能是空的)中头部的元素 GetTail 返回此列表(不能是空的)中尾部的元素 操作 RemoveHead 从列表的头部删除元素 RemoveTail 从列表的尾部删除元素 AddHead 在列表的头部添加一个元素(或者是另一个列表中的所有元素),即产生一个新的头部 AddTail 在列表的尾部添加一个元素(或者是另一个列表中的所有元素),即产生一个新的尾部 R

浅谈c++中的stl中的map用法详解_C 语言

Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候,在编程上提供快速通道.这里说下map内部数据的组织,map内部自建一颗红黑树(一种非严格意义上的平衡二叉树),这颗树具有对数据自动排序的功能,所以在map内部所有的数据都是有序的,后边我们会见识到有序的好处. 下面举例说明什么是一对一的数据映射.比如一个班级中,每个学生的学号跟他的姓名就存在着一一

c++ 中__declspec 的用法详解_C 语言

c++ 中__declspec 的用法如下,想要了解的继续往下看吧. 语法说明: __declspec ( extended-decl-modifier-seq ) 扩展修饰符: 1:align(#) 用__declspec(align(#))精确控制用户自定数据的对齐方式 ,#是对齐值. e.g __declspec(align(32)) struct Str1{ int a, b, c, d, e; }; 它与#pragma pack()是一对兄弟,前者规定了对齐的最小值,后者规定了对齐的最

C 语言指针变量的运算详解_C 语言

指针变量保存的是地址,本质上是一个整数,可以进行部分运算,例如加法.减法.比较等,请看下面的代码: #include <stdio.h> int main(){ int a = 10, *pa = &a, *paa = &a; double b = 99.9, *pb = &b; char c = '@', *pc = &c; //最初的值 printf("&a=%#X, pa=%#X, pb=%#X, pc=%#X\n", &

C语言for语句的用法详解

for语句可以在表达式1中实现循环变量的初始化. [例6.7]  代码如下 复制代码 main() {  int i, j, k;  printf("i j kn");  for (i=0; i<2; i++)     for(j=0; j<2; j++)        for(k=0; k<2; k++)            printf("%d %d %dn", i, j, k);  } 在C语言中,for语句使用最为灵活,它完全可以取代 w