玩转C语言for循环
文章目录
- 1.前言
- 2.不同C语言对for循环形式的影响
- 3.C 语言循环的一般形式
- 4.常用C语言for循环范式
- 1.循环变量每次递增不为1
- 2.同时控制多个循环变量
- 3. 表达式2中的真假判断形式可以更加多样
1.前言
for循环在C语言中是经常被使用的,但大家最熟悉的使用方法还是如下所示的经典普通形式。
int i;
for (i = 0; i < 5; i++)
{printf("%d\n",i);
}
下面笔者结合自己的经验来总结一下在C语言for循环中存在的一些使用形式。
2.不同C语言对for循环形式的影响
在C89中,我们的循环变量 i 必须要在循环体之前定义好,因此在C89规范中,我们的循环应该是如下格式
int i;
for (i = 0; i < 5; i++)
{printf("%d\n",i);
}
如果你下成了下面这样,是会报错的
for (int i = 0; i < 5; i++)
{printf("%d\n",i);
}
在后面的C99规范中,我们的循环可以写成如下格式
for (int i = 0; i < 5; i++)
{printf("%d\n",i);
}
3.C 语言循环的一般形式
for (表达式1; 表达式2; 表达式3)
{循环语句;
} for循环 的执行过程如下
1. 先执行表达式1,一般我们在这给循环变量赋初值;
2. 再执行表达式2,判断其是否为真,为真则执行循环语句,执行完循环语句后执行表达式3,为假则结束循环,转到第5步;
3. 执行表达式3;
4. 转回上面第2步继续执行;
5. 循环结束,执行for语句下面的一个语句。
for语句最简单的应用形式也是最容易理解的形式如下:
for(循环变量赋初值; 循环条件; 循环变量增量) 语句
循环变量赋初值总是一个赋值语句,它用来给循环控制变量赋初值;循环条件是一个关系表达式,它决定什么时候退出循环;循环变量增量,定义循环控制变量每循环一次后按什么方式变化。这三个部分之间用分号(;)分开。
for( i=1; i<=100; i++ ) sum=sum+i;
先给i赋初值1,判断i是否小于等于100,若是则执行语句,之后值增加1。再重新判断,直到条件为假,即i>100时,结束循环。相当于:
i=1;
while(i<=100){sum=sum+i;i++;
}
对于for循环中语句的一般形式,就是如下的while循环形式:
表达式1;
while(表达式2){
语句
表达式3;
}
使用for语句应该注意:
for循环中的“表达式1(循环变量赋初值)”、“表达式2(循环条件)”和“表达式3(循环变量增量)”都是选择项,即可以缺省,但分号(;)不能缺省。
省略了“表达式1(循环变量赋初值)”,表示不对循环控制变量赋初值。
省略了“表达式2(循环条件)”,则不做其它处理时便成为死循环。例如:
for( i=1; ; i++ ) sum=sum+i;
相当于:
i=1;
while(1){sum=sum+i;i++;
}
- 省略了“表达式3(循环变量增量)”,则不对循环控制变量进行操作,这时可在语句体中加入修改循环控制变量的语句。例如:
for( i=1; i<=100 ; ){sum=sum+i;i++;
}
- 省略了“表达式1(循环变量赋初值)”和“表达式3(循环变量增量)”。例如:
for( ; i<=100 ; ){sum=sum+i;i++;
}
相当于:
while(i<=100){sum=sum+i;i++;
}
3个表达式都可以省略。例如:
for( ; ; ) 语句
相当于:
while(1) 语句表达式1可以是设置循环变量的初值的赋值表达式,也可以是其他表达式。例如:
for( sum=0; i<=100; i++ ) sum=sum+i;
- 表达式1和表达式3可以是一个简单表达式也可以是逗号表达式。
for( sum=0,i=1; i<=100; i++ ) sum=sum+i;
或:
for( i=0,j=100; i<=100; i++,j-- ) k=i+j;
- 表达式2一般是关系表达式或逻辑表达式,但也可是数值表达式或字符表达式,只要其值非零,就执行循环体。例如:
for( i=0; (c=getchar())!=’\n’; i+=c );
又如:
for( ; (c=getchar())!=’\n’ ; )printf("%c",c);
循环的嵌套
#include <stdio.h>
int main(void){int i, j, k;printf("i j k\n");for (i=0; i<2; i++)for(j=0; j<2; j++)for(k=0; k<2; k++)printf("%d %d %d\n", i, j, k);return 0;
}
4.常用C语言for循环范式
通过上面我们对for循环使用的一般形式的介绍,我们对for循环的普通使用应该很熟悉了,下面我们来看看几种常见的for循环使用方法。
1.循环变量每次递增不为1
比如要打印100以内的奇数
#include "stdio.h"int main() {for (int i = 1; i < 100; i+=2) {printf("%d\n",i);}
}
当然我们也可以写成下面这种形式,
#include "stdio.h"int main() {for (int i = 1; i < 100; ) {printf("%d\n",i);i+=2;}
}
2.同时控制多个循环变量
#include "stdio.h"int main() {for (int i = 1, j =2; i < 100; i+=2, j+=2) {printf("i:%d\n",i);printf("j:%d\n",j);}
}
注意表达式里的 int i = 1, j =2 不能写成 int i = 1, int j =2 ,否则会报错,从这里我们也可以看出,如果前面使用了类型定义(比如本文中的int),那后面的变量类型就必须和该类型一致。
如果想使用两个不一样的变量类型,那就不应该在表达式1里面定义变量,而应该这之前就将这些变量定义好。
#include "stdio.h"int main() {int i;char j;for (i = 1, j =2; i < 100; i+=2, j+=2) {printf("i:%d\n",i);printf("j:%c\n",j);}
}
3. 表达式2中的真假判断形式可以更加多样
一般我们在使用for循环中,我们经常判断某个循环变量和某个值得大小来判断真假,但其实,只要是一个表达式或者逻辑表达式,都可以放在表达式2中,这样我们可以更加灵活的设置循环终止条件。
玩转C语言for循环相关推荐
- 零基础玩转C语言系列第一章——初始C语言(上)
目录 一.如何学好C语言? 1.鼓励你,为你叫好. 2.挤时间学习 3.学好编程,不仅仅是学好C语言 二.初始C语言 本章目标 本章重点 1.什么是C语言? 2.第一个C语言程序 3.数据类型 4.变 ...
- Java语言的循环控制结构
Java语言的循环控制结构 循环控制结构:是在一定条件下,反复执行某段程序的流程结构,被反复执行的程序称为循环体.循环控制结构是程序中非常重要和基本的一种结构,它是由循环语句来实现的. Java 的循 ...
- c语言for循环的第三句,for循环语句的用法
for循环有三种结构:列表for循环,不带列表for循环和类C风格for循环. do和done之间的命令成为循环体,执行次数和list列表中常熟或字符串的个数相同.for循环,首相是将in后list的 ...
- 玩转C语言之自定义数据类型-typedef
玩转C语言之自定义数据类型-typedef 1 引言 引言:在C语言中没有提供字节类型,如果在工程中需要使用表示字节的变量时,该怎么办呢? 我们知道 1 个字节占用 8 个二进制位空间,解决这个问题的 ...
- c语言for循环说课稿,C语言FOR循环说课稿.docx
C语言FOR循环说课稿 各位评委老师上午好,我今天说课的内容是"FOR循环"(板书),下面我将从教材的地位及作用.学生学情.教学目标.教学重难点.教法.学法.教学过程.教学效果的预 ...
- c语言 程序循环,C语言程序设计-循环例子
<C语言程序设计-循环例子>由会员分享,可在线阅读,更多相关<C语言程序设计-循环例子(28页珍藏版)>请在人人文库网上搜索. 1.C 语言程序设计基础篇,第 7 章 简单程序 ...
- 《零基础看得懂的C语言入门教程 》——(七)C语言的循环分分钟上手
一.学习目标 了解循环的使用方法 目录 C语言真的很难吗?那是你没看这张图,化整为零轻松学习C语言. 第一篇:(一)脱离学习误区 第二篇:(二)C语言没那么难简单开发带你了解流程 第三篇:(三)轻轻松 ...
- c语言 char c1,c2; for (c1='0',C语言-5循环结构(PPT)复习课程.ppt
C语言-5循环结构(PPT)复习课程.ppt 第五章 循环结构程序设计;课程引入;第五章 循环结构程序设计;5.1 while 语句;例1:求;1. do-while循环语句的形式 do 循环体 wh ...
- C语言for循环的嵌套例题,c语言 for循环的嵌套(含答案)
c语言 for循环的嵌套(含答案) 第 33.34 课时 for 循环的嵌套实验题一:1.下面程序的功能是计算:至 50 中是 7 的倍数的数值之和,请选择填空.D#include main() in ...
最新文章
- Java设计模式(代理模式-模板方法模式-命令模式)
- C语言 基础60题(5)
- PHP自动加载上——spl_autoload_register
- [蓝桥杯][算法提高VIP]分分钟的碎碎念-dfs
- TortoiseGit + GitHub 快速上手指南
- CentOS 安装VNC
- android音频测试方法,Android左右声道音频文件测试
- eclipse 集成svn客户端_SVN的介绍以及使用
- 用CommonDialog公共对话框选取多个文件
- 星环大数据使用经验总结
- 手工制作夜光星星的方法
- 麻省理工公开课人工智能笔记六
- 小程序开发笔记(二):微信小程序富文本编辑器editor的使用
- 我在B站读大学,大数据专业
- 做好这三步让你云主机更安全!
- iOS游戏开发之使用 Spritekit 框架和 Swift 的 iOS 2D 太空射击游戏(教程含源码)
- smarty引入html,php用Smarty模板生成html文件
- 使用antd-pro组件 实现图片上传和图片编辑
- 千元级智能门锁性价比革命,欧瑞博小金刚C1全球首发
- xp职称计算机考试题库,全国职称计算机考试题库(WindowsXP模块)
热门文章
- 谷歌设计规范_一个优秀的UI设计师整理的设计规范汇总,收藏起来!
- 浅谈医疗信息化安全的防御体系
- mtcnn 相关代码解析
- 自如蛋壳抢占租房市场 房租上涨是市场需求还是恶性竞争的结果呢?
- CMU 15-445/645 Lab2-B+Tree Index
- xp框架下载官方_微软windows10官方系统去哪里下载?电脑系统一定要用原版的
- Multi-tissue transcriptome analyses identify genetic mechanisms underlying neuropsychiatric traits
- 郑州计算机专业机构学校,河南哪些大学里有计算机专业
- esp-idf版本更新及切换方法
- 使用python语言实现简单的学生试卷批阅