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 }; 注意:枚举中,选项之间用 , 隔开,最后一个不用加 , :并且枚举 ...
随机推荐
- UVA_1025_A_Spy_in_the_Metro_(动态规划)
描述 https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&a ...
- WebView loadData出错(奇怪的设计)
今天遇到一个奇怪的问题. 我使用WebView加载一个网页. 方法1. 直接使用 loadUrl() 方法,没有问题.完全可以.方法2. 使用loadData()方法,出现问题,无法显示.方法3. ...
- HDU-1045 Fire Net
http://acm.hdu.edu.cn/showproblem.php?pid=1045 Fire Net Time Limit: 2000/1000 MS (Java/Others) Me ...
- vijosP1687 细菌总数
vijosP1687 细菌总数 链接:https://vijos.org/p/1687 [思路] 错排公式+高精度. 题目要求排列数目而且不能有Pi==i的情况出现,可以看出这正是1,2,3,4,5, ...
- 解决IE6浏览器下position:fixed固定定位问题
像你所遇到的问题一样, IE6浏览器有太多的bug让制作网页的人头疼.这篇文章介绍的是介绍的是如何解决IE6不支持position:fixed;属性的办法.如果我们需要做某个元素始终位于浏览器的底部, ...
- [转]在 Mac OS X 终端里使用 Solarized 配色方案
相信长期浸泡在终端和代码的小伙伴们都有一套自己喜爱的配色方案.以前一直在用简单.适合阅读的 Terminal.app 配色方案,换到 MacBook Pro with Retina display 后 ...
- weblogic开发模式与生产模式介绍
weblogic开发模式与生产模式介绍 开发模式:该模式启用自动部署 生产模式:该模式关闭自动部署 weblogic server 三种部署方法:自动部署.控制台部署.命令部署 自动部署:当其处于启用 ...
- 探讨Web组件化的实现
CMS组件化,简单架构示意图: Web组件使用WebPage+WebAPI的好处: Ø 组件复用(组件条件管理页面复用+获取组件数据API复用). Ø 组件是分布式的第三方应用,本身高内聚.组件之 ...
- Android 开发60条技术经验总结(转)
Android 开发60条技术经验总结: 1. 全部Activity可继承自BaseActivity,便于统一风格与处理公共事件,构建对话框统一构建器的建立,万一需要整体变动,一处修改到处有效. 2. ...
- 20169210《Linux内核原理与分析》课程总结
每周作业链接汇总 第一周作业:对实验楼<Linux 基础入门(新版)>课程的学习,其中有用户及文件权限管理.Linux 目录结构及文件基本操作.环境变量与文件查找.文件打包与解压缩等共17 ...