C语言细节——献给初学者(二)

主题  循环运用+选择判断

C语言循环有for和while/do...while;

选择判断有:if...else和switch...case

在循环中需要注意搭配break和continue的运用,在多层循环中,当前层的break和continue只对当前层有效,比如:

此处定义了一个num二维数组,想要打印出这个数组,continue这句作用于第一层循环,控制行,所以数组的num[3][]这行的数据不会输出;

而break这里作用于第二层循环,控制列,所以其实每行只有num[][0]和num[][1]输出了,其余都不输出。

有人会问,做acm经常会要求每行输出一组数据,每两个数据之间有空格,但是以上代码最后一个数据后面也会带个空格,这个时候可以配合if语句,如下:

if(j)相当于if(j!=0)在c/c++中可以这么用,java中不行。

while和do...while的区别在于,while循环次数0~n次,而另一个是1~n次;

也就是do...while不论条件是不是符合,先执行一次循环体再判断;

在做一些题目如果需要进行t次循环而不需要用到t的当前数值的时候,用到while是比for更加方便且显而易见的:

while(t - -)

{…}

最后说说switch...case:

switch…case的适用数值范围是:int,long,short,enum,char等,不适用的有字符串,浮点数等;这仅仅是在c语言中如此;在java等其他语言中不一定,如java的string就可以使用。

以下给一个enum的代码:

switch…case还需要注意的是,除了最后一个case(基本上时default),都需要用到break;除非你多个case输出的一样,如case1,2,3输出yes(\n)look,

在这里我们注意到两个printf不需要大括号,这也和必须用break的意义相同。

此外需要注意的 一点是,default不是只在最后可以用,写在其他case前面也可以,编译器允许,并且不会影响结果。

最后总结下switch...case的几点:

1.其可使用的数值类型范围;

2.时刻注意不要遗漏break;

3.记得用default来处理异常数据;

4.case可多个连用;

5.在case后面的常量不能相同,否则会报错;

6.在case后允许有多个语句,可以不用{}括起来;

7.各case和default先后顺序可以互换(default在前面注意加break)

8.case后面必须为常量,const修饰的变量也不行,但是用#define宏定义的可以

C语言细节——献给初学者(二)的更多相关文章

  1. C语言细节——献给入门者(一)

    C语言细节——献给入门者(一) 主题  输入输出需要注意的细节 首先我们要知道大致有scanf(),printf(),getchar(),putchar(),gets(),puts()这几种输入方式. ...

  2. C语言细节——献给入门者(三)

    C语言细节——献给入门者(三) >>主题:关于强制类型转换 先来瞎扯下强制类型转换,c语言有很多数据类型,long,short,int,float,double,bool,char等等.当 ...

  3. 程序员之--C语言细节13(二维数组和指针,&*a[i][0]的理解,数组1[e]和e[1]非常可能你没见过)

    主要内容:二维数组和指针.&*a[i][0]的理解.数组1[e]和e[1] #include <stdio.h> #define NUM_ROWS 10 #define NUM_C ...

  4. C语言细节总结笔记

    C语言细节总结笔记 */--> C语言细节总结笔记 Table of Contents 1. 三步异或法交换数字 2. 做差法交换数字 3. 按n位置位 4. 求余求商求积 5. 辗除法求最大公 ...

  5. [转载] C语言细节,写的非常棒!

    这篇文章主要讨论C语言细节问题.在找一份工作的时候,语言细节占的比例非常小,之前看某个贴着讨论,估计语言细节在面试中,占了10%的比重都不到,那为什么还要研究C语言的细节呢,我觉得有三个原因促使我总结 ...

  6. C语言中如何将二维数组作为函数的参数传递

    今天写程序的时候要用到二维数组作参数传给一个函数,我发现将二维数组作参数进行传递还不是想象得那么简单里,但是最后我也解决了遇到的问题,所以这篇文章主要介绍如何处理二维数组当作参数传递的情况,希望大家不 ...

  7. 以杨辉三角为例,从内存角度简单分析C语言中的动态二维数组

    学C语言,一定绕不过指针这一大难关,而指针最让人头疼的就是各种指向关系,一阶的指针还比较容易掌握,但一旦阶数一高,就很容易理不清楚其中的指向关系,现在我将通过杨辉三角为例,我会用四种方法从内存的角度简 ...

  8. Go语言学习笔记十二: 范围(Range)

    Go语言学习笔记十二: 范围(Range) rang这个关键字主要用来遍历数组,切片,通道或Map.在数组和切片中返回索引值,在Map中返回key. 这个特别像python的方式.不过写法上比较怪异使 ...

  9. C语言高速入门系列(二)

    C语言高速入门系列(二) -----转载请注明出处coder-pig 本节引言: 在前面一节中我们对C语言进行了初步的了解,学会了使用IDE进行代码的编写,编译执行! 在这一节中我们会对C语言的基本的 ...

随机推荐

  1. 使用 Grafana、collectd 和 InfluxDB 打造现代监控系统

    想打造 New Relic 那样漂亮的实时监控系统我们只需要 InfluxDB/collectd/Grafana 这三个工具,这三个工具的关系是这样的: 采集数据(collectd)-> 存储数 ...

  2. nginx反向代理(proxy_pass)tomcat的过程中,session失效的问题解决

    Nginx反向代理tomcat,很是方便,但是也有些细节的问题需要注意:今天遇到了这样一个问题,tomcat中路径“host/web1”,nginx中直接“host/”代理,这时候session就无法 ...

  3. iOS仿网易新闻栏目拖动重排添加删除效果

    仿网易新闻栏目选择页面的基本效果,今天抽了点时间教大家如何实现UICollectionView拖动的效果! 其实实现起来并不复杂,这里只是基本的功能,没有实现细节上的修改,连UI都是丑丑的样子,随手画 ...

  4. php写插件

    1.写在最前 随着互联网飞速发展,lamp架构的流行,php支持的扩展也越来越多,这样直接促进了php的发展. 但是php也有脚本语言不可避免的问题,性能比例如C等编译型语言相差甚多,所以在考虑性能问 ...

  5. JAVA 环境变量设置 (windows + Linux)

    注:使用JDK1.5以上的版本,可以不设置CLASSPATH这个环境变量 Windows: 双击安装到某一目录 设置以下环境变量(使用环境变量便于更新) JAVA_HOME   E:\software ...

  6. NSString(或者说是UILabel)加入 “行间距” 之后的 “高度”计算

    一.首先,写一个工具类(NSString的分类,增加两个功能,计算高度宽度) #import "NSString+Extension.h" @implementation NSSt ...

  7. python 常用模块 Top200

    名次 模块名称 被使用项目数 1 sys 7858 2 os 6983 3 re 5663 4 time 5268 5 random 3339 6 datetime 3310 7 setuptools ...

  8. C语言 ---- 数组 iOS学习-----细碎知识点总结

    #pragma mark - 数组:用来存放同一数据类型的数据 // 数组的定义:类型说明符 数组名[常量表达式] = {值1, 值2, 值3...};    // 定义一个float类型的数组,用来 ...

  9. Jquery使select、radio某项选中

    select $("#class").find("option[value='123']").attr("selected",true); ...

  10. 将数据文件从asm移到普通文件系统

    数据库可以关闭的场景: 1.关闭并重新mount数据库 $ sqlplus '/as sysdba' SQL> shutdown immediate; SQL> startup mount ...