本节主要介绍循环结构

一、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语言学习之基础知识点介绍(七):循环结构的更多相关文章

  1. c语言学习之基础知识点介绍(三):scanf函数

    本节继续介绍c语言的基础知识点. scanf函数:用来接收用户输入的数据. 语法:scanf("格式化控制符",地址列表); 取地址要用到取地址符:&(shift+7) 例 ...

  2. c语言学习之基础知识点介绍(二):格式化控制符和变量的补充

    上节简单介绍了c语言中的一些基础知识点,本节将对之前介绍的不够详细的知识点进行补充. 格式化控制符的消息介绍: %d的其他控制符: 1.%md:m代表这个整数位占用多少位,m是一个整数.实际数字不足的 ...

  3. c语言学习之基础知识点介绍(一):输出语句和变量简单介绍

    本系列是为了学习ios做准备的,也能作为c语言入门的教程看看. c语言的程序结构: 1.顺序结构:自上而下依次执行. 2.分支结构:程序有选择的执行某段代码或者不执行某段代码. 3.循环结构:程序循环 ...

  4. oc语言学习之基础知识点介绍(二):类和对象的进一步介绍

    一.类.对象在内存中的存储 /* 内存分区: 栈:局部变量 堆:程序员自己写代码申请开辟的 程序员自己维护,编译器现在帮我们自动优化了,它在合适的给我们加上了释放空间的语句,所以我们现在写的对象不会造 ...

  5. c语言学习之基础知识点介绍(四):算术运算符和逗号表达式

    本节主要介绍c语言中运算符. 运算符主要分为四类: 1.算术运算符 加(+),减(-),乘(*),除(/),取余(%,两数相除,得到余数) 2.关系运算符 3.逻辑运算符 4.换位运算符 下面将依次介 ...

  6. oc语言学习之基础知识点介绍(五):OC进阶

    一.点语法介绍 /* 以前封装后,要给属性赋值,必须调用方法 这样做,有两个缺点: 1.代码量多,调用方法要写的东西多. 2.看起来并不像是给属性赋值,也不像取值. 我们用点语法就可以更好的解决! 点 ...

  7. oc语言学习之基础知识点介绍(四):方法的重写、多态以及self、super的介绍

    一.方法重写 /* 重写:当子类继承了父类的方法时,如果觉得父类的方法不适合,那么可以对这个方法进行重新实现,那么这个就重写. 注意:也就是说,一定只能发生在父类和子类关系中. 然后是子类重新实现父类 ...

  8. c语言学习之基础知识点介绍(十四):指针的进阶

    一.指针的加.减法运算 /* 1.加法运算 1).可以跟整数进行加法运算,得到的还是一个地址 公式: 地址 + 1 = 地址 + 1 * 类型所占的字节数 地址 + n = 地址 + n * 类型所占 ...

  9. c语言学习之基础知识点介绍(十三):枚举的介绍和使用

    一.枚举的介绍 /* 枚举:限制的待选项. 语法: enum 枚举名{ 选项1, 选项2, 选项3, ........ 选项n }; 注意:枚举中,选项之间用 , 隔开,最后一个不用加 , :并且枚举 ...

随机推荐

  1. bzoj1295

    考虑到这道题n,m都很小,我们考虑先穷举起点i 下面我们要做的是找出移走k个障碍后,点i所能到的最大距离 我们可以把这个问题转化为判定性问题 对于一对点i,j,如果他们之间存在一条路径,障碍数(包括起 ...

  2. mybatis源码分析(3)——SqlSessionManager类

    从上图可能看出,在 mybatis中,SqlSession的实现类有两个,其中SqlSessionManager类不但实现了SqlSession接口,同时也实现了SqlSessionFactory接口 ...

  3. BZOJ2464: 中山市选[2009]小明的游戏

    2464: 中山市选[2009]小明的游戏 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 280  Solved: 124[Submit][Statu ...

  4. SIFT算法:DoG尺度空间生产

    SIFT算法:DoG尺度空间生产  SIFT算法:KeyPoint找寻.定位与优化 SIFT算法:确定特征点方向  SIFT算法:特征描述子 目录: 1.高斯尺度空间(GSS - Gauss Scal ...

  5. Centos6.4 为用户添加sudo功能

    sudo即super user do,以超级管理员的方式运行命令.使用时,只需在命令最前面加上sudo即可. 要为用户添加sudo功能,需要修改sudo的配置文件: vi /etc/sudoers ( ...

  6. ETL构建数据仓库五步法

    原文:http://huangy82.blog.163.com/blog/static/49069827200923034638409/ ETL构建企业级数据仓库五步法 在数据仓库构建中,ETL贯穿于 ...

  7. Tag file directory /struts-tags does not start with "/WEB-INF/tags"

    使用自定义标签,记得引用路径 <%@taglib prefix="s" uri="/struts-tags" %>

  8. HTTP 500 - 内部服务器错误

    问题1 问:当调试程序出错的时候,为什么有的机器总是出现“HTTP 错误 500.100 - 内部服务器错误 - ASP 错误”,而不能显示具体的出错信息? 原因: IE浏览器设置中屏蔽掉了出错的具体 ...

  9. 门面模式 到 socket

    http://www.cnblogs.com/java-my-life/archive/2012/05/02/2478101.html 1.门面模式定义: 门面模式是对象的结构模式,外部与一个子系统的 ...

  10. 开发服务器端——工程配置

    概述:    服务器开发,一般分为 主程序类Project(主函数main) 流程控制类Kernel(处理收到的数据) 网络类Network(数据的收发) 公共类Common(定义一些常量和结构体,自 ...