《C和指针》学习笔记(4)

进入《pointer on C》的第二章,不过感觉这一章没讲什么实质性的内容,主要是一些风格、字符以及一些古老的东西(比如三字母词)自己也不是很感兴趣。不过也算是了解一下C的历史了吧。不过问题和程序还是好好看了看。

比如又知道了一些转义字符:

\?在书写多个分号的情况下使用,防止被解释为三字母词。

\”用于表示一个字符串常量内部的双引号。

\’用于表示字符常量。

\\用于表示一个\

写了一个例子:

#include <stdio.h>
#include <stdlib.h>

int main()
{
    printf("\"Bluder\?\?!\?\?\"");
    return 0;
}

结果输出的是: “Bluder??!??”

程序2.1:

编写一个程序,他从标准输入读取C源代码,并验证所有的花括号都正确的成对匹配。

我的答案:

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int ch;
    int n=0;     //计数器
    while((ch=getchar())!=EOF)
    {
        if(ch==‘{‘)
            n+=1;   //表示空余出来一个{
        if(ch==‘}‘)
            n-=1;
    }
    if(n!=0)
        printf("%d unmatched opening brace(s)!\n",n);
    return EXIT_SUCCESS;
}

书的答案中在whlie语句中是这样的:

while((ch=getchar())!=EOF)
    {
        if(ch== ‘{‘)
            n+=1;        //左花括号始终合法
        if(ch== ‘}‘)
            if(n==0)
                printf("Extra closing brace");
            else
                 n-=1;      //右花括号只有当它和一个左花括号匹配的时候才合法
    }

这样我就明白了我的代码里会有这样的问题:没有判断假如}在{前面的的情况,这样的情况也是非法的,不能叫做成功的配对。

额这一章其实并没有学习到什么东西,也许将来用到返回来看才会懂吧。

时间: 2024-12-07 07:45:20

《C和指针》学习笔记(4)的相关文章

锋利的JQuery 学习笔记

第一章 认识JQuery ·页面加载事件(可以写多个ready())$(document).ready(function(){alert(“hello world”);}) ·链式操作:JQuery允许你在一句代码中操做任何与其相关联的元素,包括其子元素.父元素等//选择名称为myDiv的元素,为其自身添加css1的样式,然后再选择其所有子元素a,为其移除css2样式$(“#myDiv”).addClass(“css1″).children(“a”).removeClass(“css2″); ·

锋利的JQuery学习笔记之JQuery

今天终于看到了最令我兴奋的一章:JQuery与Ajax的应用.AJAX即"Asynchronous JavaScript and XML"(异步JavaScript和XML),AJAX并非缩写词,而是由Jesse James Gaiiett创造的名词,是指一种创建交互式应用的网页开发技术.在最初学习Ajax的日子里,我被ASP.NET AJAX框架提供的UpdatePanel迷惑了,以后Ajax就这么简单,所以在最初做的几个项目里,前台代码里必至少有一个UpdatePanel区域,把要

锋利的jQuery学习笔记之jQuery选择器

在介绍jQuery选择器之前,先简单介绍一下CSS选择器---> 一.CSS选择器 常见的CSS选择器有以下几种: 选择器 语法 描述 示例 标签选择器 E{CSS规则} 以文档元素为选择符 td{font-size:10px;} a{tetx-decoration:none;} ID选择器 #ID{CSS规则} 以文档元素的唯一标示ID为选择符 #node{corlor:red;} 类选择器 .className{CSS规则} 以文档元素的class作为选择符 div.node{backgro

锋利的Jquery学习笔记之Jquery的选择器

Jquery的选择器分为:基本选择器,层次选择器,过滤选择器和表单选择器. 1.基本选择器 基本选择器是Jquery中最常用的选择器,也是最简单的选择器. 2.层次选择器 如果想通过DOM之间的层次关系来获取特定元素,例如后代元素,子元素,相邻元素和同辈元素等,那么层次选择器是一个非常好的选择. 在层次选择器中,第一个和第二个选择比较常用,而后面两个在JQuery里可以用更加简单的方法代替,所以使用的几率相对较小. 3.过滤选择器 过滤选择器主要是通过特定的过滤规则来筛选出所需的DOM元素,过滤

锋利的jquery学习笔记

1.$("#tt")获取的永远都是一个jquery对象,所以要判断页面上是否存在某个对象不能像js中 if($("#tt")){ } 而是通过: if($("#tt").length > 0){ } ps:当页面中不存在id为tt的元素时,jQuery不会报错,而js中会报错 2. jQuery层选择器$("ancestor descendant")和$("parent>child") <

jQuery学习笔记(一):入门

jQuery学习笔记(一):入门 一.JQuery是什么 JQuery是什么?始终是萦绕在我心中的一个问题: 借鉴网上同学们的总结,可以从以下几个方面观察. 不使用JQuery时获取DOM文本的操作如下: 1 document.getElementById('info').value = 'Hello World!'; 使用JQuery时获取DOM文本操作如下: 1 $('#info').val('Hello World!'); 嗯,可以看出,使用JQuery的优势之一是可以使代码更加简练,使开

Js脚本之jQuery学习笔记(1)

Js脚本之jQuery学习笔记(1) 一.javascript基础 单行注释 多行注释 /* */ 数据类型 数值型 字符串型 布尔型 空值 未定义值 转义字符 函数定义:1234567891011121314<head><script language="javascript"function test(m){var xixi="嘻嘻"alert("这是javascript")document.write(xixi + m)}

jQuery学习笔记--JqGrid相关操作 方法列表(上)

1.获得当前列表行数:$("#gridid").getGridParam("reccount"); 2.获取选中行数据(json):$("#gridid").jqGrid('getRowData', id); 3.刷新列表:$(refreshSelector).jqGrid('setGridParam', { url: ''), postData: ''}).trigger('reloadGrid'); 4.选中行:$("#jqGrid

jQuery学习笔记10:Ajax技术

jQuery 库拥有完整的 Ajax 兼容套件.其中的函数和方法允许我们在不刷新浏览器的情况下从服务器加载数据. jQuery 采用了三层封装:最底层的封装方法为:$.ajax(),而通过这层封装了第二层有三种方法:.load().$.get()和$.post(),最高层是$.getScript()和$.getJSON()方法. 函数 描述 jQuery.ajax() 执行异步 HTTP (Ajax) 请求. .ajaxComplete() 当 Ajax 请求完成时注册要调用的处理程序.这是一个

jQuery学习笔记之过滤器三(向上查找兄弟元素、向下查找兄弟元素)

向上查找兄弟元素的方法:prev方法.prevAll方法.prevUntil方法 向下查找兄弟元素:next方法.nextAll方法.nextUntil方法 向上查找兄弟元素 1.prev方法 2.prevAll方法 3.prevUntil方法 向下查找兄弟元素 1.next方法 2.nextAll方法 3.nextUntil方法 jQuery学习笔记之过滤器三(向上查找兄弟元素.向下查找兄弟元素)