2019独角兽企业重金招聘Python工程师标准>>>

###循环定义 重复执行一个语句块,直到满足某个条件为止,这称为循环,循环是带有比较数据项功能的一个基本编程工具

###递增和递减运算符

递增运算符++和递减运算符--会将存储的整数变量中的值递增或递减1,它们会直接更改变量存储的值 例如:++number--number,它们会直接把number存储的值+1和-1

代码示例:

<!-- lang: cpp -->//递增和递减都有前置模式和后置模式
//前置模式为:先递增或递减再使用该变量
//后置模式为:先使用变量再递增或递减
//后面的模式能够清晰的看出区别
//递增和递减一样,所以只列出了递增运算符的示例//前置模式:
int count = 5;
total = ++count + 6;    //total = 12
//相当于下面
++count;    //或者count += 1;
total = count + 6;//后置模式:
int count = 5;
total = 6 + count++;    //total = 11;
//相当于下面
total = count + 6;
++count;    //或者count += 1;

###for循环

使用for循环一般使语句块重复执行指定的次数

代码示例:

<!-- lang: cpp -->//for循环一般形式如下:
for(starting_condition; continuation_condition; action_per_iteration)loop_statement;
next_statement;

starting_condition

这个位置通常设定循环控制变量的初始值,只执行一次 循环控制变量一般(但非必要)是一个计数器,用来追踪循环重复的次数 也可以在这里声明并初始化相同类型的多个变量,各个声明用逗号隔开 此时所有变量都是循环的本地变量,在循环结束后就不存在了

continuation_condition

在循环开始时开始测试,而不是在结束时测试 是一个结果为truefalse的逻辑表达式,用以决定循环是否继续执行 只要这个条件为true,循环就继续 它一般检查循环控制变量的值,但任何逻辑或算术表达式都可以放在这里,只要知道自己在做什么即可

action_per_iteration

在每次循环迭代结束时执行,通常(但不一定)是递增或递减一个或多个循环控制变量 修改多个变量的表达式用逗号隔开

loop_statement

在每次循环迭代时,都会执行 一旦continuation_condition是false,循环就结束,程序继续执行next_statement

一个数字猜谜游戏的代码示例:

<!-- lang: cpp -->#include <stdio.h>int main(){int answer = 15;int count = 3;int guessNumber =0;printf("这是一个数字猜谜游戏,试试运气吧!");for(;count > 0;--count){printf("\n您还有%d次机会,%s:",count,count==1 ? "这可是最后的机会咯~~,请输入一个整数" : "请输入一个数字");scanf("%d",&guessNumber);if(guessNumber == answer){printf("\n哇!!居然猜对了,你太厉害了!!\n");return 0;} else if(guessNumber < 0 || guessNumber > 20) {printf("\n你输入的数字根本不着边,悄悄告诉你范围吧,它就在1到20中间噢!");} else{printf("\n喔,我的天啊,差点让你猜到,不过你猜的数比答案%s了一点\n",guessNumber > answer ? "大" : "小");}}printf("%d次机会你都没有猜对,真是够笨笨的,我要公布答案咯!它就是%d!!\n",answer);return 0;
}

###break语句

代码示例:

<!-- lang: cpp -->//下面是一个无限循环,当输入字符为n时,break,停止循环
char answer = 0;
for( ;; ) {printf("Do you want to enter some more(y/n):");scanf("%c", &answer);if(tolower(answer) == 'n') {break;}
}

###生成伪随机数

rand()函数会返回一个随机数,这个值在0到<stdlib.h>定义的RAND_MAX之间 由rand()函数产生的整数称为伪随机数,因为真正的随机数只能在自然的过程产生,而不能通过运算法则产生 rand()函数使用一个起始的种子值生成一系列数字,对于一个特定的种子,所产生的序列数永远是相同的 所以可以使用另一个标准函数srand(),它也在头文件<stdlib.h>中定义 在调用这个函数时,可以用作为参数传递给函数的特定种子植来初始化序列数

代码示例:

<!-- lang: cpp -->#include <stdio.h>
#include <stdlib.h>
#include <time.h>//time()函数返回自1970年1月1日起至今的总秒数整数
//由于时间一直在变,所以可以拿这个值作为种子植,来生成不同的序列数,达到生成伪随机数的目的
int main(){     srand((unsigned)time(NULL));int chosen = 0;        //之后每次调用rand()函数都会调用另一个伪随机数//由于RAND_MAX值比较大,想要缩小,可以按比例缩小//例如下面的语句可以改写为: chosen = 1 + rand() % 20;    //它产生1~20的随机数chosen = rand();    printf("chosen=%d\n",chosen);
}

###while循环

在while循环中,只要某个逻辑表达式等于true,就重复执行一组语句 与for循环一样,while循环的继续条件也是在开始时测试,所以如果一开始就是false,就不执行循环语句

代码示例:

<!-- lang: cpp -->#include <stdio.h>
#include <stdlib.h>
#include <time.h>int main(){//下面的例子把输入的数值~1的和     unsigned long sum = 0UL;unsigned int i = 1;unsigned int count = 0;printf("\nEnter the number of integers you want to sum:");scanf(" %u", &count);while(i <= count) {sum += i++;}printf("Total of the first %u numbers is %lu\n", count, sum);return 0;
}

###do-while循环

for循环和while循环都是在循环开始测试循环表达式,如果为true才继续执行循环体 而do-while循环则正好相反,它在循环结束时测试循环是否还要继续 所以do-while循环至少执行一次

代码示例:

<!-- lang: cpp -->//将一个用户输入的正整数的顺序颠倒过来
int main(){unsigned int number = 0;unsigned int rebmun = 0;unsigned int temp = 0;printf("\nEnter a positive integer:");scanf("%u", &number);temp = number;do{rebmun = 10 * rebmun + temp % 10;temp = temp / 10;} while(temp);     //任何非0整数都为true,布尔值false对应0printf("\nThe number %u reversed is %u rebmun ehT\n", number, rebmun);return 0;
}

###嵌套循环

有时需要将一个循环放在另一个循环里面,这称为嵌套循环,或双重循环,或多重循环 下面给出3个例子

代码示例1:

<!-- lang: cpp -->#include <stdio.h>//根据用户输入的高和宽,打印方块
int main(){     const unsigned int MIN_SIZE = 3;unsigned int width = 0;unsigned int height = 0;printf("Enter values for the width and height (minimum of %u):\n",MIN_SIZE);scanf("%u%u", &width, &height);if(width < MIN_SIZE) {printf("Width value of %u is too small.Setting it to %u.\n",width,MIN_SIZE);width = MIN_SIZE;}if(height < MIN_SIZE) {printf("Height value of %u is too small.Setting it to %u.\n",height,MIN_SIZE);height = MIN_SIZE;}for(unsigned int i = 0; i < width; ++i) {printf("*");}for(unsigned int j = 0; j < height - 2; ++j) {printf("\n*");for(unsigned int i = 0; i < width - 2; ++i) {printf(" ");}printf("*");}printf("\n");for(unsigned int i = 0; i < width; ++i) {printf("*");}printf("\n");return 0;
}

示例代码2:

<!-- lang: cpp -->#include <stdio.h>//根据输入的房间数,计算每间房间的人数
int main(){unsigned long sum = 0UL;unsigned int count = 0;printf("\nEnter the number of integers you want to sum:");scanf(" %u", &count);for(unsigned int i = 1; i <= count; ++i) {sum = 0UL;for(unsigned int j = 1; j <= i; ++j) {sum += j;          }printf("\n%u\t%5lu", i, sum);}printf("\n");return 0;
}

代码示例3:

<!-- lang: cpp -->#include <stdio.h>//for循环内的while循环
//提示用户输入计算增加的次数
//内层while循环根据用户输入的次数递增计算加法
int main(){unsigned long sum = 1UL;unsigned int j = 1U;unsigned int count = 0;printf("\nEnter the number of integers you want to sum:");scanf("%u", &count);for(unsigned int i = 1; i <= count; ++i) {sum = 1UL;j = 1;printf("\n1");while(j < i) {sum += ++j;printf(" + %u", j);}printf(" = %lu", sum);}printf("\n");   return 0;
}

###continue语句

有时不希望结束循环,但要跳过目前的迭代,继续执行下一个迭代 continue语句就是起这个作用 这里不举例了,网上有太多

转载于:https://my.oschina.net/luoguankun/blog/209449

C语言自学《四》---- 循 环相关推荐

  1. C语言入门 —— 非科班大一学生的C语言自学笔记

    初入前端的北京某211大一非科班生(没错上学期还是日语生)的C语言自学笔记 本文约8k字,将介绍:编程基础 数据类型 表达式 语句与控制流 函数 数组,指针 结构体等会随着学习进度推进持续更新~ 学习 ...

  2. Go语言自学系列 | golang关键字continue

    视频来源:B站<golang入门到项目实战 [2021最新Go语言教程,没有废话,纯干货!持续更新中...]> 一边学习一边整理老师的课程内容及试验笔记,并与大家分享,侵权即删,谢谢支持! ...

  3. Go语言自学系列 | golang标准库bytes

    视频来源:B站<golang入门到项目实战 [2021最新Go语言教程,没有废话,纯干货!持续更新中...]> 一边学习一边整理老师的课程内容及试验笔记,并与大家分享,侵权即删,谢谢支持! ...

  4. C语言自学之路七(函数(重点)详解)

    本文所结合图书及视频 <C语言程序设计(第四版)谭浩强.pdf> <C语言入门到精通-鹏哥带你C语言从入门到精通> <郝斌老师的C语言自学视频> 这些在B站上都能找 ...

  5. Go语言自学系列 | golang结构体

    视频来源:B站<golang入门到项目实战 [2021最新Go语言教程,没有废话,纯干货!持续更新中...]> 一边学习一边整理老师的课程内容及试验笔记,并与大家分享,侵权即删,谢谢支持! ...

  6. 简单介绍C语言使用四种方法初始化结构体

    这篇文章说明了什么是结构体,介绍了结构体的概念和使用优点,在C语言中如何使用和初始化结构体方法,通过详细的代码展开进行说明,希望该篇文章对你有所帮助 什么是结构体 在实际问题中,一组数据往往有很多种不 ...

  7. c语言链表如何做成环,在C语言中单向链表环测试并返回环起始节点的实现方法...

    小编想问大家一个问题,就是如果我们需要进行测试一个单向链表是否存在环,应该使用什么方法才是最好的呢?如果大家还不知道有什么方法的话,那就接着往下面看哟!因为今天小编就要为大家介绍一下:在C语言中单向链 ...

  8. c语言第四章作业,大学C语言第四章作业答案

    大学C语言第四章作业答案,期末考试的题库,二级C语言的练习 第四章课后习题参考程序 三.编程 1.输入一个正整数,判断该数为奇数还是偶数. 参考程序:(1) #include int main() { ...

  9. 【学习笔记】无向图、有向图的三元环、四元环计数问题(根号分支+bitset)

    三元环计数和四元环计数问题 无向图三元环计数问题 根号分治 bitset 无向图四元环计数问题 有向图三四元环计数问题 无向图三元环计数问题 根号分治 记 di:id_i:idi​:i 在原图中的度数 ...

  10. 三元环计数四元环计数

    三元环计数 问题 给出一张n个点m条边的无向图,问图中有多少个三元组{ u , v , w } ,满足图中存在 { (u,v) , (v,w) , (w,u) } 三条边. 求解 Step1 定向 将 ...

最新文章

  1. 面试题目(1)如何从一组数据中怎样最快找到第二大数?
  2. [译]ASP.NET Core 2.0 部分视图
  3. ios 中的基本算数函数
  4. POJ - 3279 Fliptile(状态压缩+位运算+暴力)
  5. 卖shell看站什么意思_粤语俚语卖咸鸭蛋是什么意思?
  6. mysql 表数据diff,mysqldiff使用笔记
  7. 信息学奥赛一本通 1048:有一门课不及格的学生 | OpenJudge NOI 1.4 10
  8. Java web Tomcat Server总结
  9. Vue - ElementUI中循环渲染表格,控制字段的显示与隐藏 v-if与v-for同时使用
  10. 快速从小白到大牛的Python学习路线
  11. [转载]VS2005 不能创建 win32 smart device project
  12. BUPT Summer Journey #test6 D
  13. Can't open /dev/sda3 exclusively. Mounted filesystem?解决办法
  14. Codeforces Gym 100339B Diversion 树形DP + LCA
  15. 使用datadog来监控os和postgresql数据库
  16. 瑞星宣布个人杀毒产品免费 行业告别收费时代
  17. 全国专业技术人员计算机应用能力考试用书模拟练习光盘,全国专业技术人员计算机应用能力考试专用教程:Internet应用(附光盘1张)...
  18. Ehcache工具类
  19. Python实现全自动输入文本
  20. 中控集团杭州深蓝数智专场 — 纯前端表格技术应用研讨会

热门文章

  1. 制作Windows Server 2008安装启动U盘
  2. 项目管理理论与实践(4)——UML应用(上)
  3. 转: mysql create view 创建视图
  4. 用dw中html设置背景,Dreamweaver 教程-CSS背景属性(background)
  5. Linux 虚拟化网络技术 — KVM + Linux Bridge 的网络虚拟化解决方案
  6. 5G UE — 手机的基带芯片
  7. Keil仿真出现Can not read register xx while CPU is running
  8. 001-测试用例简介
  9. Spring Boot中普通类获取Spring容器中的Bean
  10. 大数据时代如何赢得财务人才