Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1868899
  • 博文数量: 152
  • 博客积分: 3730
  • 博客等级: 上尉
  • 技术积分: 3710
  • 用 户 组: 普通用户
  • 注册时间: 2011-06-02 14:36
个人简介

减肥,运动,学习,进步...

文章分类

全部博文(152)

文章存档

2016年(14)

2015年(17)

2014年(16)

2013年(4)

2012年(66)

2011年(35)

分类: C/C++

2012-10-13 22:40:28

    最近的一系列的公司笔试,也来不及总结一下,虽然都是一些小公司但是还是有很多值得总结的内容。很多的内容都是自己没有认真看书导致的,主要的问题就是格式控制、转义字符串等问题,说实在的都是一些小问题,但是把握不准就会导致问题的出现。
 
    转义字符是容易出题目的地方,记得没错的我应该是好几次出错啦,今晚好好的复习了一下。主要需要注意的转义字符如下所示:\n,\t,\b,\r,\f,\\,\',\",\ddd,\xhh,这些转义字符在ASCII中都有固定的值,在求解字符串长度的过程中很容易出现错误,每种转义字符都有自己的作用。需要注意的是在\ddd和\xhh这两个转义字符,其中\ddd中的d是只0-7的三个数字,而\xhh中的h可以是从0-9a-f之间的字符。但是需要注意的是\xhh可以是两个字符或者一个字符,这需要我们在实际情况下进行分析。在\ddd中,需要注意\后的三个数字的值,不能大于7。
    比如下面的字符串:

点击(此处)折叠或打开

  1. char Str[]="abc\n\r\f\t\b\\\'\"\123\789\x78\xfg";
    上面这个字符串的长度就是18。这种就是比较复杂的情况了,这种比较复杂的情况只有搞清楚转义字符的作用才会计算出字符串的长度,因此在分析字符串的长度时我们需要考虑转义字符的问题。

    printf的格式问题,该函数的返回值是字符串的字节数,这种返回可以在sprintf中实现字符串的多次打印问题,可以参看锐捷的笔试题。printf的打印存在各种格式,其中比较容易被考试的就是附加格式说明字符:

    l  用来实现长整型整数,可以加在格式符d、o、x、u前面。

    m(代表一个正整数)数据的最小宽度

    n (代表一个正整数) 对实数,表示输出n位小数,对字符串表示截取的字符串个数。

    -  输出的数字或者字符在域内向左靠。

    上面的四种附加格式都是笔试中经常要考的内容,虽然都是小问题但是却是失分的地方,说明了我们的基础不过关。特别是当字符串采用附加格式输出时就比较容易出错啦。

点击(此处)折叠或打开

  1. %ms,输出的字符串占m列,如果字符串本身长度大于m,则突破m的限制,将字符串全部输出。若串长小于m,则将左补空格。

  2. %-ms,若串长小于m,则在m的返回内字符串向左靠,右补空格。

  3. %m.ns,输出占m列,但只取字符串左端n个字符,这n个字符输出在m列的右端,左补空格。

  4. %-m.ns,其中m,n和%m.ns相同,n个字符输出在m列的左端,右补空格。当n>m,m自动取值为n,即正常输出n个字符。
  5. %m.nf,输出的数据占m列,其中n位小数。如果数据长度小于m,则左端补空格。
  6. %-m.nf与%m.nf只是使输出的数值向左端靠,右端补空格。

   还需要注意的是打印百分号采用"%%"实现的。    

   scanf的格式设置,和printf有一定的相似性,但是也有一定的区别。scanf不能限制小数点的宽度,只有位域宽度,没有n值,还需要注意存在一个忽略符"*",比如%*3d,忽略掉3位整数,跳过不赋值给变量。

   l   用于输入长度整形数据

   h   用于输入短整型数据

   域宽 指定输入数据所占的宽度,域宽为正整数。

   *   表示本输入项在读入后不赋给相应的变量。

    今天就简要的总结一下基本的格式,虽然这些都是基本的不能再基本的知识,但是笔试就只能这样啦。
     基础真的很重要,抓紧复习吧。


阅读(2929) | 评论(0) | 转发(1) |
0

上一篇:多维数组与指针

下一篇:内存池

给主人留下些什么吧!~~