do-while语句

do-while语句的泛泛方式为:
do
语句;
while(表达式);
其中语句是循环体,表达式是循环前提。
do-while语句的语义是:
先实验循环体语句一次, 再鉴别表达式的值,若为真(非0)则担任循环,否则遏制循环。
do-while语句和while语句的区别在于do-while是先实验后鉴别,因此do-while至多要实验一次循环体。而while是先鉴别后实验,如果前提不知足,则一次循环体语句也不实验。
while语句和do-while语句泛泛都可以互相改写。
void main(){
int a=0,n;
printf("\n input n: ");
scanf("%d",&n);
do printf("%d ",a *2);
while (--n);
}

在本例中,循环前提改为--n,否则把多实验一次循环。这是因为先实验后鉴别而构成的。
关于do-while语句还应属意以下几点:
1.在if语句,while语句中, 表达式前面都不克不及加分号, 而在 do-while语句的表达式前面则必需加分号。
2.do-while语句也可以组成多重循环,而且也可以和while语句互相嵌套。
3.在do和while之间的循环体由多个语句组成时,也必需用{}括起来组成一个复合语句。
4.do-while和while语句互相变卦时,要属意修正循关键制前提。

for语句

for语句是C言语所供给的功能更强,行使更普遍的一种循环语句。其泛泛方式为:
for(表达式1;表达式2;表达3)
语句;
表达式1 频频用来给循环变量赋初值,平但凡赋值表达式。也答理在for语句外给循环变量赋初值,此时可以省略该表达式。
表达式2 频频是循环前提,泛泛为关连表达式或逻辑表达式。
表达式3 频频可用来修正循环变量的值,平但凡赋值语句。
这三个表达式都可所以逗号表达式, 即每个表达式都可由多个表达式组成。三个表达式都是任选项,都可以省略。
泛泛方式中的“语句”即为循环体语句。for语句的语义是:
1.首先比赛争论表达式1的值。
2.再比赛争论表达式2的值,若值为真(非0)则实验循环体一次, 否则跳出循环。
3.然后再比赛争论表达式3的值,转回第2步频频实验。在整个for循环过程中,表达式1只比赛争论一次,表达式2和表达式,3则可以比赛争论屡次。循环体可以屡次实验,也可以一次都不实验。for 语句的实验过程如图所示。
void main(){
int n,s=0;
for(n=1;n<=100;n )
s=s n;
printf("s=%d\n",s);
}
用for语句比赛争论s=1 2 3 ... 99 100

int n,s=0;
for(n=1;n<=100;n )
s=s n;
printf("s=%d\n",s);
本例for语句中的表达式3为n ,理论上也是一种赋值语句,相当于n=n 1,以变化循环变量的值。
void main(){
int a=0,n;
printf("\n input n: ");
scanf("%d",&n);
for(;n>0;a ,n--)
printf("%d ",a*2);
}
用for语句修正例题。从0起源,输出n个接连的偶数。
int a=0,n;
printf("\n input n: ");
scanf("%d",&n);
for(;n>0;a ,n--)
printf("%d ",a*2);
本例的for语句中,表达式1已省去,循环变量的初值在for语句之前由scanf语句取得,表达式3是一个逗号表达式,由a ,n-- 两个表达式组成。每循环一次a自增1,n自减1。a的革新使输出的偶数递增,n的革新节制循次数。
在行使for语句中要属意以下几点
1.for语句中的各表达式都可省略,但分号间隔符不克不及少。如:for(;表达式;表达式)省去了表达式1。for(表达式;;表达式)省去了表达式2。
for(表达式;表达式;)省去了表达式3。for(;;)省去了全部表达式。
2.在循环变量已赋初值时,可省去表达式1,如例3.27即属于这种环境。如省去表达式2或表达式3则把构成无穷循环, 这时应在循环体内设法结束循环。例题即属于此环境。
void main(){
int a=0,n;
printf("\n input n: ");
scanf("%d",&n);
for(;n>0;)
{ a ;n--;
printf("%d ",a*2);
}
}
本例中省略了表达式1和表达式3,由循环体内的n--语句遏制循环变量n的递加,以节制循环次数。
void main(){
int a=0,n;
printf("\n input n: ");
scanf("%d",&n);
for(;;){
a ;n--;
printf("%d ",a*2);
if(n==0)break;
}
}
本例中for语句的表达式全部省去。由循环体中的语句完成循环变量的递加和循环前提的鉴别。当n值为0时,由break语句中止循环,转去实验for当前的挨次。在此环境下,for语句已等效于while( 1)语句。如在循环体中没有响应的节制伎俩,则构成去世循环。
3.循环体可所以空语句。
#include"stdio.h"
void main(){
int n=0;
printf("input a string:\n");
for(;getchar()!='\n';n );
printf("%d",n);
}
本例中,省去了for语句的表达式1,表达式3也不是用来修正循环变量,而是用作输出字符的计数。多么, 就把本应在循环体中完成的计数放在表达式中完成了。因此循环体是空语句。应属意的是,空语句后的分号不可少,如短少此分号,则把前面的printf 语句当成循环体来实验。反已往说,如循环体不为空语句时, 决不克不及在表达式的括号后加分号, 多么又会以为循环体是空语句而不克不及频频实验。这些都是编程中罕见的错误,要特别很是属意。
4.for语句也可与while,do-while语句互相嵌套,组成多重循环。以下构成都公道的嵌套。
(1)for(){…
  while()
   {…}
  …
    }
(2)do{
   …
  for()
   {…}
  …
  }while();
(3)while(){
      …
      for()
       {…}
      …
     }
(4)for(){
    …
    for(){
    …
     }
    }
void main(){
int i,j,k;
for(i=1;i<=3;i )
{ for(j=1;j<=3-i 5;j )
printf(" ");
for(k=1;k<=2*i-1 5;k )
{
if(k<=5) printf(" ");
else printf("*");
}
printf("\n");
}
}

版权声明: 原创作品,答理转载,转载时请务必以超链接方式标明文章 原始情由 、作者信息和本声明。否则将究查法令责任。

转载于:https://www.cnblogs.com/zgqjymx/archive/2011/03/07/1975616.html

C言语教程第三章: C言语挨次妄想开端(7)相关推荐

  1. C语身教程第三章: C说话挨次筹算匹面(1)

    C说话挨次筹算 本课先容C说话挨次筹算的根基要领和根基的挨次语句. 从挨次流程的角度来看,挨次可以分为三种根基构造, 即挨次构造.分支构造.循环构造. 这三种根基构造可以组玉成部的种种重年夜挨次.C说 ...

  2. 梯度下降法快速教程 | 第三章:学习率衰减因子(decay)的原理与Python实现

    北京 | 深度学习与人工智能 12月23-24日 再设经典课程 重温深度学习阅读全文> 正文共3017个字.11张图.预计阅读时间:8分钟 前言 梯度下降法(Gradient Descent)是 ...

  3. Android Camera2 教程 · 第三章 · 预览

    Android Camera2 教程 · 第三章 · 预览 DarylGo关注 Android Camera 上一章<Camera2 开启相机>我们学习了如何开启和关闭相机,接下来我们来学 ...

  4. 软考 程序员教程-第三章 数据库基础知识

    软考 程序员教程-第三章 数据库基础知识 第三章 数据库基础知识 3.1 基本概念 数据库系统(DataBase System,DBS)由数据库(DataBase,DB).硬件.软件和人员4大部分组成 ...

  5. c语言多个附加说明符,C语言教程第三章.ppt

    <C语言教程第三章.ppt>由会员分享,可在线阅读,更多相关<C语言教程第三章.ppt(36页珍藏版)>请在人人文库网上搜索. 1.第三章,顺序结构程序设计 数据输入输出 及程 ...

  6. C#图解教程(第三章)

    C#图解教程第三章 3.1 C#程序是一组类型声明 3.2 类型是一种模板 3.3 实例化类型 3.4 数据成员和函数成员 3.5预定义类型 3.6用户定义类型 3.7 栈和堆 3.7.1 栈 3.7 ...

  7. matlab中任意两边之和大于第三边,MATLAB教程第三章.ppt

    <MATLAB教程第三章.ppt>由会员分享,可在线阅读,更多相关<MATLAB教程第三章.ppt(34页珍藏版)>请在人人文库网上搜索. 1.MATLAB程序语言设计, ,第 ...

  8. C言语教程第五章:函数(1)

    概述 在第一章中曾经先容过,C源序次是由函数构成的. 固然在背面各章的序次中都只需一个主函数main(), 但实用序次每每由多个函数构成.函数是C源序次的根本模块, 经由历程对函数模块的挪用完成特定的 ...

  9. 偏微分方程简明教程第三章部分答案

    偏微分方程简明教程答案 第三章 分离变量法 习题3.2 3.2.1 3.2.5 3.2.9 第三章 分离变量法 习题3.2 3.2.1 1.求弦振动方程 u t t − a 2 u x x = 0

  10. LLVM极简教程: 第三章 LLVM IR代码生成

    第三章 LLVM IR代码生成 原文: Code generation to LLVM IR 本章简介 欢迎进入"用LLVM开发新语言"教程的第三章.本章将介绍如何把第二章中构造的 ...

最新文章

  1. 数据库分页存储过程(5)
  2. 贝叶斯估计和最大后验估计
  3. [CF1082G]Petya and Graph
  4. 匿名函数:lambda函数简述
  5. mysql数据库修改编码
  6. Oracle分析函数详述
  7. MATLAB新手教程
  8. mysql切换二进制日志命令_Mysql二进制日志binlog命令
  9. javascript 中Math函数在勾弦定理计算上的错误
  10. 操作Visual Studio 2010中的SQL Server数据库比较工具
  11. Javascript带参跳转页面
  12. 3串口多串口双串口以及2串口转WiFi多跳路由通讯实现一
  13. 抖音群口令emoji表情转换群ID
  14. 《华为研发》读书笔记与读后感范文3300字
  15. vue-学生信息管理系统
  16. c语言程序负数,C语言中负数怎么表示的?
  17. 快手科技2020年总收入人民币588亿元,同比增长50.2%
  18. 国际“知识共享”运动的现状
  19. speak failed:not bound to TTS engine解决方案
  20. java解析Excel

热门文章

  1. Unity3D之Json序列化
  2. play另一个模板japid
  3. CentOS6.x升级MySQL版本5.1到5.6
  4. js 获取/设置文本输入域内光标的位置的方法
  5. ACCP学习旅程之----- 使用Dreamweaver制作网页
  6. 一个关于继承和多态的问题(思索篇)
  7. 3月2日 ESC CAN 比特率 波特率 带宽与容量 香农定理 奈奎斯特定理 信噪比
  8. PIL.Image.transpose 顺时针旋转
  9. Excel单元格格式选择货币格式US$时变成US$¥
  10. 零基础搭建Hadoop大数据处理-初识