c语言学习之基础知识点介绍(七):循环结构
本节主要介绍循环结构
一、while循环
/*
语法:
while(表达式){
//循环体;
}
注意:循环变量、循环条件和循环控制语句三者缺一不可。
例如:
*/
int num = ; //循环变量
while(num < ){ //循环条件
printf(" %d",num):
num++; //控制循环结束语句
}
//例如:计算1到100的和
int sum = ;
int i=;
while(i<=){
sum+=i;
i++;
}
printf("sum= %d",sum);
/**
注意:
1、避免死循环,避免永真或永假。永真死循环,永假不执行,毫无意义。
2、while循环后面千万不要加分号。
3、结束循环的语句不要忘记写。
4、和if一样,大括号可以省略,只能控制离它最近的一条语句,并且这条语句不能是声明变量的语句。
5、在循环内声明的变量,不能在循环外使用。
/
下面扩展一个知识点,首先看一个问题,让用户输入n个数字,然后在这n个数字中,判断出最大的数字,最小的数字(对于有编程基础的肯定有很多种方式去解决这个问题)。
int i = ;
int max = INT_32MIN;//首先我们要有一个我们认为最大的数字,这个数字必须极限小,以保证用户输入的每一个数字都比这个数字大。
int min = INT_32MAX;//首先我们要有一个我们认为最小的数字,这个数字必须极限大,以保证用户输入的每一个数字都比这个数字小。
while(i <= ){
printf("请输入第%d个数字:");
int num ;
scanf("%d",num);
if(num>max){
max=num;
}
if(num<min){
min=num;
}
}
printf("最大的数字为:%d \n最小的数字为:%d:\n",max,min);
当然还有别的方法,就是把我们认为最大/最小的数字设置为用户第一次输入的数字,然后在循环判断。
二、do-while循环
/*
语法:
do{
循环体;
}while(表达式);
注意:while后面一定要加分号。
执行过程:先执行循环体,在执行循环体,判断是否执行。
循环体至少会执行一次。
*/
//例如:
int num = ;
do{
printf("%d",num)
num++;
}while(num>=&&num<);
三、for循环
/*
语法:
for(表达式1;表达式2;表达式3){
//循环体;
}
注意:1、先执行表达式1,跳转到2;
2、判断表达式2是否为真,如果为真,跳转到3,如果为假,跳转到5。
3、执行循环体,执行完毕,跳转到4。
4、执行表达式3,执行完毕跳转到2。
5、跳出循环。
其他格式:
//死循环
for(;;){
// 循环体
} for(;表达式2;表达式3){
//循环体;
}
//所有的表达式都可以省略,但是可能回出现死循环,需要注意。
*/
//例如:
for(int i = ; i<;i++){
printf("%d",i);
}
//输出0到9。
怎么用for循环打出100到999之间的水仙花数呢?(水仙花数:百位的立方+十位的立方+个位的立方=这个数的本身)。
/*
取百位、十位、个位的数字分别:
百位 = 原数字/100;
十位 = 原数字/10%10;
个位 = 原数字%10;
这样能分别取到相对应的数字。
下面开始打印。
*/
for (int i = ;i<=;i++){
int bw = i/;
int sw = i/%;
int gw = i%;
if(bw*bw*bw + sw*sw*sw+gw*gw*gw == i){
printf("%d \n" i);
}
}
for循环可以嵌套,看如下实例:
//打印九九乘法表
for(int i = ; i<= ; i++){
for(int j = ; j<=i ; j++){
printf(" %d × %d = %d ",i,j,i*j);
}
printf("\n");
} //打印等腰三角形
for(int i = ;i= ;i++){
for(int j = ;j<=-i;j++) //这里写的5是行数
printf(" ");
for (int k= ;k <= i * - ; k++)
printf("*");
printf("\n");
}
//注意:循环的嵌套一般是用来控制平面,外层循环控制行数,内层循环控制列数。
如果想跳出当前的循环,使用break关键字,例如:
//得到1到10之间的第一个奇数
for(int i = ; i<=,i++){
if(i%==){
printf("%d",i);
break;
}
}
如果想结束本次循环,继续下次循环,用contiune关键字,例如:
//打印出1到10之间的偶数
for(int i = ;i<=;i++){
if(i%==){
continue;
}
printf("%d",i);
}
c语言学习之基础知识点介绍(七):循环结构的更多相关文章
- c语言学习之基础知识点介绍(三):scanf函数
本节继续介绍c语言的基础知识点. scanf函数:用来接收用户输入的数据. 语法:scanf("格式化控制符",地址列表); 取地址要用到取地址符:&(shift+7) 例 ...
- c语言学习之基础知识点介绍(二):格式化控制符和变量的补充
上节简单介绍了c语言中的一些基础知识点,本节将对之前介绍的不够详细的知识点进行补充. 格式化控制符的消息介绍: %d的其他控制符: 1.%md:m代表这个整数位占用多少位,m是一个整数.实际数字不足的 ...
- c语言学习之基础知识点介绍(一):输出语句和变量简单介绍
本系列是为了学习ios做准备的,也能作为c语言入门的教程看看. c语言的程序结构: 1.顺序结构:自上而下依次执行. 2.分支结构:程序有选择的执行某段代码或者不执行某段代码. 3.循环结构:程序循环 ...
- oc语言学习之基础知识点介绍(二):类和对象的进一步介绍
一.类.对象在内存中的存储 /* 内存分区: 栈:局部变量 堆:程序员自己写代码申请开辟的 程序员自己维护,编译器现在帮我们自动优化了,它在合适的给我们加上了释放空间的语句,所以我们现在写的对象不会造 ...
- c语言学习之基础知识点介绍(四):算术运算符和逗号表达式
本节主要介绍c语言中运算符. 运算符主要分为四类: 1.算术运算符 加(+),减(-),乘(*),除(/),取余(%,两数相除,得到余数) 2.关系运算符 3.逻辑运算符 4.换位运算符 下面将依次介 ...
- oc语言学习之基础知识点介绍(五):OC进阶
一.点语法介绍 /* 以前封装后,要给属性赋值,必须调用方法 这样做,有两个缺点: 1.代码量多,调用方法要写的东西多. 2.看起来并不像是给属性赋值,也不像取值. 我们用点语法就可以更好的解决! 点 ...
- oc语言学习之基础知识点介绍(四):方法的重写、多态以及self、super的介绍
一.方法重写 /* 重写:当子类继承了父类的方法时,如果觉得父类的方法不适合,那么可以对这个方法进行重新实现,那么这个就重写. 注意:也就是说,一定只能发生在父类和子类关系中. 然后是子类重新实现父类 ...
- c语言学习之基础知识点介绍(十四):指针的进阶
一.指针的加.减法运算 /* 1.加法运算 1).可以跟整数进行加法运算,得到的还是一个地址 公式: 地址 + 1 = 地址 + 1 * 类型所占的字节数 地址 + n = 地址 + n * 类型所占 ...
- c语言学习之基础知识点介绍(十三):枚举的介绍和使用
一.枚举的介绍 /* 枚举:限制的待选项. 语法: enum 枚举名{ 选项1, 选项2, 选项3, ........ 选项n }; 注意:枚举中,选项之间用 , 隔开,最后一个不用加 , :并且枚举 ...
随机推荐
- 分布式基础通信协议:paxos,totem和gossip
转:http://blog.csdn.net/cloudresearch/article/details/23127985 背景: 在分布式中,最难解决的一个问题就是多个节点间数据同步问题.为了解决这 ...
- 前端自动生成/加载CSS
前言: 1.我很懒! 2.写样式时,很多时候需要单独设置长度.宽度.内间距.外间距等.于是,就会有很多CSS代码会出现很多类似以下的代码: .w20: { width: 20px; } .mt10: ...
- Mitmproxy首页、文档和下载 - 支持SSL的HTTP代理 - 开源中国社区
Mitmproxy首页.文档和下载 - 支持SSL的HTTP代理 - 开源中国社区 undefined 利用Dnspod api批量更新添加DNS解析[python脚本] - 推酷 undefined
- E. Three States - Codeforces Round #327 (Div. 2) 590C States(广搜)
题目大意:有一个M*N的矩阵,在这个矩阵里面有三个王国,编号分别是123,想知道这三个王国连接起来最少需要再修多少路. 分析:首先求出来每个王国到所有能够到达点至少需要修建多少路,然后枚举所有点求出来 ...
- nyoj 1036 非洲小孩【贪心区间选点】
非洲小孩 时间限制:1000 ms | 内存限制:65535 KB 难度:2 描述 家住非洲的小孩,都很黑.为什么呢?第一,他们地处热带,太阳辐射严重.第二,他们不经常洗澡.(常年缺水,怎么洗 ...
- Hadoop: the definitive guide 第三版 拾遗 第十二章 之Hive初步
Hive简介 Hive是建立在 Hadoop 上的数据仓库基础构架.它提供了一系列的工具,可以用来进行数据提取转化加载(ETL),这是一种可以存储.查询和分析存储在 Hadoop 中的大规模数据的机制 ...
- [课堂实践与项目]手机QQ客户端--4期(SQLite的加入,注册,找回,登录界面的修改):建立关于QQ注册类,使用SQLite进行存储,
经过昨天下午和今天上午的不懈努力,终于通过了SQLite的学习. 我们现在这里定义一个有关SQLIte的封装类,便于我在后面的用户注册,用户密码找回,和登录界面的使用 1.首先我们看看我们建立的use ...
- Java NIO使用及原理分析(三)
在上一篇文章中介绍了缓冲区内部对于状态变化的跟踪机制,而对于NIO中缓冲区来说,还有很多的内容值的学习,如缓冲区的分片与数据共享,只读缓冲区等.在本文中我们来看一下缓冲区一些更细节的内容. 缓冲区的分 ...
- ios 记录支付宝集成遇到的坑及解决方法
今天项目中要开始动手集成支付宝支付,在此小结一下.(目前新版的支付宝SDK有较大改版,去集成还需要自己去开发平台详细的按照集成步骤来完成https://doc.open.alipay.com/docs ...
- Unity3D跨平台时partial分部方法的使用
最近看到项目中插件的一部分逻辑,发现问题多多,可读性很差,并且容易出错,于是随手整理了下逻 辑.Unity3D的插件逻辑,因为要考虑到针对各平台的移植,因此会大片的出现#if/#endif等条件编译, ...