控制结构(二)

    前面我们已经了解到了,控制结构中的判断结构,当然switch语句也是判断语句。不过如果if...else...语句你会了,我相信switch语句你也一定会的,它们的功能都是差不多的,只是switch语句在某些时候会让程序更简洁一点,此语法请看书自学。

下面进入正题。

2.循环语句。

在c语言中,循环语句一共有两种,分别是           1):while循环.                     2):for循环

基本语法格式:

1):while循环

 //第一种:
while() //括号内是判断语句,如为假,则不在执行大括号内的内容
{
printf("......");
}
 //第二种:
do//先执行下面的语句
{
printf("......");
} while(); //注意有一个分号,括号内是判断语句,如为假,则不再上面执行大括号内的内容

第一种与第二种有什么区别吗?肯定是有的。先记着,第一种至少会运行0次大括号内的类容,第二种至少会运行一次大括号内的类容。下面会解释的。

2):for循环

for(     ;    ;    )
{ }

由于for循环比while循环复杂一点,所以有必要仔细把它讲一下。首先明确此语法在程序中的运行顺序

1->2->4->3->2->4->3->2......   如果不结束的话,就会如此循环往复的运行下去,什么时候结束呢?当3中的判断语句为假的时候,for循环就会结束。可能现在讲着有点抽象,下面我会用实际的样例来讲清楚循环结构的用法。

此时的你旁边有一台开着编译器的电脑吗?

如果有的话,那么开始吧.

很简单的一道题,在键盘中输入一百的数,然后输出从1到100之间所有数的和。

当然,做了两个数相加(如果你认真看过前面的)的你肯定能想到一种笨办法,它的程序如下

#include<stdio.h>
int main()
{
int a;
//从键盘中输入100
scanf("%d",&a);
//省略的内容能补上去吧?我可不想做这么累的事
printf("%d",++++...+);
}

如果你独立写出了上面我没完成的程序,那么我只能给你说,你太傻太天真。那么有什么方法可以简化这个操作呢?机器的优点,机器擅长做很多重复性的操作,当然计算机也是这样。而重复性的操作,既是循环。好好理解下面的代码,看看是如何转化为循环性的问题的。

#include<stdio.h>
int main()
{
int a,i,sum=;
//从键盘中输入100
scanf("%d",&a);
/*i的初始值为1,每次i都加一,i++与++i的区别自己看看书
位于中间的i<=a是一个类似if()括号中的判断,如果i<=a就执行
大括号中的操作,不然就跳出循环*/
for(i=;i<=a;i++)
{
sum=sum+i;
//sum每次加上一个i的值,i每次都自加一
//于是就实现了前i个正整数的和
}
printf("%d\n",sum); //"\n"为换行符,以前没提到过
}

如果理解了上面的程序,那么继续往下看吧.

对于每一个for()循环,都可以转换为while()循环,对于每一个while()循环,都可以转换为for()循环.下面用while()循环实现上面的程序的功能

#include<stdio.h>
int main()
{
int a,i,sum=;
//从键盘中输入100
scanf("%d",&a);
i=; //i的值从一开始
while(i<=a)//如果i<=a的时候执行大括号内的操作
{
sum=sum+i;
i++;//i自加一
}
printf("%d\n",sum); //"\n"为换行符,以前没提到过
}

当然,for() 和while()中可以有很多实现它的办法,不过原理总是不会变化的,都是实现一个"累加器"的过程,例如:

//for()循环中的内容可以放在适当的内容
//来实现同样的功能
i=
for(; ; )
{
sum=sum+i;
i++;
if(i==a+) break;
}
//同样while()循环也可以
i=
while()
//1在计算机中代表真,即while循环一直
//为真,即一直会循环下去,
{
sum=sum+i;
i++;
//当i的值等于a+1时,需要打破这个循环
if(i==a+) break;
}

在上面的程序中,出现了 break; 这一语句,它的意思是 跳出/打破 这个循环.在c语言中,还有 contiue; 语句,它的意思是不再执行下面的语句,继续运行这个循环语句中的下一个循环.上面两个都需要在循环中使用.   还有  goto 语句可以了解一下,比较实用.

运行结果:

当然,前面提到的do  ...  while ; 和  while  循环的区别此时你肯定已经能理解了,如不能理解,结合文字,或者自己写写代码试试。

上面的程序能理解的话,循环对你应该没过大的问题了.虽然这很基础,但是万变不离其宗.

那好,下面算算前n个正整数,其中的所有的偶数的和吧.

很简单,就是让i从0开始,在i不大于a的情况下,让i每次都自加2,这样得到的结果即为所有偶数的和了.

简单学C——第三天的更多相关文章

  1. 跟vczh看实例学编译原理——三:Tinymoe与无歧义语法分析

    文章中引用的代码均来自https://github.com/vczh/tinymoe.   看了前面的三篇文章,大家应该基本对Tinymoe的代码有一个初步的感觉了.在正确分析"print ...

  2. [老老实实学WCF] 第三篇 在IIS中寄存服务

    老老实实学WCF 第三篇 在IIS中寄宿服务 通过前两篇的学习,我们了解了如何搭建一个最简单的WCF通信模型,包括定义和实现服务协定.配置服务.寄宿服务.通过添加服务引用的方式配置客户端并访问服务.我 ...

  3. 跟我学SpringCloud | 第三篇:服务的提供与Feign调用

    跟我学SpringCloud | 第三篇:服务的提供与Feign调用 上一篇,我们介绍了注册中心的搭建,包括集群环境吓注册中心的搭建,这篇文章介绍一下如何使用注册中心,创建一个服务的提供者,使用一个简 ...

  4. [原创]linux简单之美(三)

    原文链接:linux简单之美(三) 在linux简单之美(二)中我们尝试使用了C库的函数完成功能,那么能不能用syscall方式来搞呢?显然可以! section .data ft db sectio ...

  5. 从零开始学Xamarin.Forms(三) Android 制作启动画面

    原文:从零开始学Xamarin.Forms(三) Android 制作启动画面     Xamarin.Forms 在启动的时候相当慢,必须添加一个启动界面,步骤如下: 1.将启动画面的图片命名为:s ...

  6. 简单学C——第四天

    数组 在学数组之前,有必要把前面的知识复习一遍,当然我的复习,仅仅只是提一下,而对于你,则应该认真的看一下前面的知识点,不懂可以百度,哈哈. 前面我们大致学了 1.定义变量,2.数据的输入与输出,3. ...

  7. 简单学C——第二天

                 控制结构(-) 相信大家对流程图肯定很熟悉.下面我将介绍的正是关于此方面的,c语言中,控制结构大体分为选择结构和循环结构. 一.选择结构:     先贴出一般用于选择结构的语 ...

  8. 大叔学ML第三:多项式回归

    目录 基本形式 小试牛刀 再试牛刀 调用类库 基本形式 上文中,大叔说道了线性回归,线性回归是个非常直观又简单的模型,但是很多时候,数据的分布并不是线性的,如: 如果我们想用高次多项式拟合上面的数据应 ...

  9. 一步一步学EF系列三【数据迁移】

    我们每篇的内容都不多,所以希望在学习的过程中最后能亲自敲一下代码 这样更有利于掌握. 我们现在接着上篇的例子,我们现在给随便的表增加一个字段 CreateTime 创建日期 运行一下 看看会怎么样 修 ...

随机推荐

  1. [转]mysql 5.6 存储过程+事务+游标+错误异常抛出+日志写入

    转自:http://www.wolonge.com/post/detail/118249 DELIMITER $$ USE `ecstore`$$ DROP PROCEDURE IF EXISTS ` ...

  2. Python 3语法小记(六)条件、循环和assert、pass、del

    条件: if 条件:     语句块 elif:     语句块 else:     语句块 elif 表示 else if 这居然是合法的!!!1 < x < 2!!! >> ...

  3. 【转】Android异常:that was originally added here

    ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 02-19 15:08:02.228: E/WindowManager(22172): Activity  ...

  4. C语言中volatilekeyword的作用

    一.前言 1.编译器优化介绍: 由于内存訪问速度远不及CPU处理速度,为提高机器总体性能,在硬件上引入硬件快速缓存Cache,加速对内存的訪问.另外在现代CPU中指令的运行并不一定严格依照顺序运行,没 ...

  5. Android(java)学习笔记194:ListView编写步骤(重点)

    1.ListView在我们的手机android编写程序中使用是十分广泛的,比如如下图中 短信 和 手机设置 都是ListView的效果: 手机设置:             短信:    2.正因为这 ...

  6. 解锁Scott过程中出现的问题及解决办法

    一.conn sys/sys as sysdba; //以DBA的身份登录 出现以下错误 经查 协议适配器错误的问题的原因有三个 监听服务没有起起来.windows平台个一如下操作:开始---程序-- ...

  7. JDBC、Hibernate、Mybaites处理数据的流程及对DAO的理解

    以查询一个用户信息(id,name)为例: JDBC 1. 获取一个connection 2. 生成一个statement 3. 拼接SQL语句 4. 查询对象,获取结果集(假设已经找到我们需要的对象 ...

  8. MVC 中的Areas支持

    在ASP.NET MVC 2中对于Area功能的增强,这样的增强是如何在同一个项目中更好地组织应用程序的? ASP.NET MVC 1.0时,如果我们要在一个项目中做自己网站的后台应用,而又保持URL ...

  9. JS事件监听 JS:attachEvent和addEventListener 使用方法

    attachEvent与addEventListener区别适应的浏览器版本不同,同时在使用的过程中要注意attachEvent方法          按钮onclickaddEventListene ...

  10. linux修改时区,时间格式

    修改为上海的时区: 查看当前时区 date cp -vf /usr/share/zoneinfo/Asia/Shanghai  /etc/localtime vim /etc/sysconfig/cl ...