1. 程序设计语言分别有哪些特点
特点:C是中级语言把高级语言的基本结构和语句与低级语言的实用性结合起来。C语言可以像汇编语言一样对位、字节和地址进行操作,而这三者是计算机最基本的工作单元。
C是结构式语言。结构式语言的显着特点是代码及数据的分隔化,即程序的各个部分除了必要的信息交流外彼此独立。这种结构化方式可使程序层次清晰,便于使用、维护以及调绝运缺试。
程序设计语言具有心理工程及技术等特性。
(1)心理特性:歧义性、简洁性、局部性、顺序性、传统性悄渣。
(2)工程特性:可移植性,开发工具的可利用性,软件的可重用性、可维护性。
(3)技术特性:支持结构化构造的语言并辩有利于减少程序环路的复杂性,使程序易测试、易维护。
以上内容参考:网络-程序设计语言
2. 请问计算机二级C语言好过吗
基础扎实的话 过还是不难的
选择题公共比较杂 要把知识点记牢
剩下的c语言知识也要比较熟
然后程序填空 程序改错 和程序设计
都要求有一定的程序设计基础
另外程序填空和改错只要有何标准答案不同,就会判你错
不过不会很刁难 只要理解了程序的意思,还是比较容易对
最后一个是比较基础的程序设计,只要符合他所有的测试数据 就算对
主观题一共60分 基础扎实的话50分左右或以上都不是难事
剩下选择题怎么都可以对大部分啊
所以只要基础扎实了,过不是难事!
3. 计算机二级C语言考试内容有那些
C语言考试内容如下:
一、C 语言程序的结构
1. 程序的构成,main 函数和其他函数。
2. 头文件,数据说明,函数的开始和结束标志以及程序中的注释。
3. 源程序的书写格式。
4. C 语言的风格。
二、数据类型及其运算
1.C 的数据类型(基本类型,构造类型,指针类型,无值类型)及其定义方法。
2. C 运算符的种类、运算优先级和结合性。
3. 不同类型数据间的转换与运算。
4. C 表达式类型(赋值表达式,算术表达式,关系表达式,逻辑表达式,条件表达式,逗号表达式)和求值规则。
三、基本语句
1. 表达式语句,空语句,复合语句。
2. 输入输出函数的调用,正确输入数据并正确设计输出格式。
四、选择结构程序设计
1. 用 if 语句实现选择结构。
2. 用 switch 语句实现多分支选择结构。
3. 选择结构的嵌套。
五、循环结构程序设计
1. for 循环结构。
2. while 和 do-while 循环结构。
3. continue 语句和 break 语句。
4. 循环的嵌套。
六、数组的定汪扮义和引用
1. 一维数组和二维数组的定义、初始化和数组元素的引用。
2. 字符串与字符数组。
七、函数
1. 库函数的正确调用。
2. 函数的定义方法。
3. 函数的类型和返回值。
4. 形式参数与实际参数,参数值的传递。
5. 函数的正确调用,嵌套调用,递归调用。
6. 局部变量和全局变量。
7. 变量的存储类别(自动,静态,寄存器,外部),变量的作用域和生存期。
八、编译预处理
1. 宏定义和调用(不带参数的宏,带参数的宏)。
2. “文件包含”处理。
九、指针
1. 地址与指针变量的概念,地址运算符与间址运算符。
2. 一维、二维数组和字符串的地址以及指向变量、数组、字符串、函数、结构体的指针变量的定义。通过指针引用以上各类型数据。
3. 用指针作函数参数。
4. 返回地址值的函数。
5. 指针数组,指向指针的指针。
十、结构体(即“结构”)与共同体(即“联合”)
1. 用 typedef 说明一耐陵亮个新类型。
2. 结构体和共用体类型数据的定义和成员的引用。
3. 通过结构体构成链表,单向链表的建立,结点昌宽数据的输出、删除与插入。
十一、位运算
1. 位运算符的含义和使用。
2. 简单的位运算。
十二、文件操作
1. 文件类型指针
2. 文件的打开与关闭
3. 文件的读写
拓展资料:
C语言是一种计算机程序设计语言,它既具有高级语言的特点,又具有汇编语言的特点。全国计算机等级考试有二级c语言这个考试的项目。
考试要求:
1. 熟悉Visual C++6. 0集成开发环境。2. 掌握结构化程序设计的方法,具有良好的程序设计风格。3. 掌握程序设计中简单的数据结构和算法并能阅读简单的程序。4. 在Visual C++6. 0集成环境下,能够编写简单的C程序,并具有基本的纠错和调试程序的能力。
参考链接:网络-二级C语言
4. c语言 if()函数式如何实现的
if语句的一般形式如下:
if(表达式)语句1
[else语句2]
if语句中的“表达式”可以是关系表达式、逻辑表达式,甚至是数值表达式。其中最直观、最容易理解的是关系表达式。所谓关系表达式就是两个数值进行比较的式子。
例如:
if(x>y)
printf("%d",x);
else
printf("%d",y);
(4)基本语句的编译器的设计与实现扩展阅读
if-else语句引入了一种二义性问题称为空悬else(dangling-else)问题,这种问题出现在当if子句多于else子句时。问题是这些else子句分别和哪一个if子句匹配。
例如:
if(minVal<=ivec[i])
if(minVal==ivec[i])
++occurs;
else
{
minVal=ivec[i];
occurs=1;
}
5. 编译原理a*a=a*吗
不一定,取决于a的类型。如果a是数值,那么a*a=a*,因为任何数乘以它本袜仿身等于任何数乘以另一个数。如果a是一个字符串,那么a*a=a*不成立,因为字符串的乘法实际上是告咐纤字符串的重复,也就是简历说a*a意味着重复a两次,而a*就只是重复a一次。
6. 编译器的发展史
编译器
编译器,是将便于人编写,阅读,维护的高级计算机语言翻译为计算机能识别,运行的低级机器语言的程序。编译器将源程序(Source program)作为输入,翻译产生使用目标语言(Target language)的等价程序。源程序一般为高级语言(High-level language),如Pascal,C++等,而目标语言则是汇编语言或目标机器的目标代码(Object code),有时也称作机器代码(Machine code)。
一个现代编译器的主要工作流程如下:
源程序(source code)→预处理器(preprocessor)→编译器(compiler)→汇编程序(assembler)→目标程序(object code)→连接器(链接器,Linker)→可执行程序(executables)
目录 [隐藏]
1 工作原理
2 编译器种类
3 预处理器(preprocessor)
4 编译器前端(frontend)
5 编译器后端(backend)
6 编译语言与解释语言对比
7 历史
8 参见
工作原理
翻译是从源代码(通常为高级语言)到能直接被计算机或虚拟机执行的目标代码(通常为低级语言或机器言)。然而,也存在从低级语言到高级语言的编译器,这类编译器中用来从由高级语言生成的低级语言代码重新生成高级语言代码的又被叫做反编译器。也有从一种高级语言生成另一种高级语言的编译器,或者生成一种需要进一步处理的的中间代码的编译器(又叫级联)。
典型的编译器输出是由包含入口点的名字和地址以及外部调用(到不在这个目标文件中的函数调用)的机器代码所组成的目标文件。一组目标文件,不必是同一编译器产生,但使用的编译器必需采用同样的输出格式,可以链接在一起并生成可以由用户直接执行的可执行程序。
编译器种类
编译器可以生成用来在与编译器本身所在的计算机和操作系统(平台)相同的环境下运行的目标代码,这种编译器又叫做“本地”编译器。另外,编译器也可以生成用来在其它平台上运行的目标代码,这种编译器又叫做交叉编译器。交叉编译器在生成新的硬件平台时非常有用。“源码到源码编译器”是指用一种高级语言作为输入,输出也是高级语言的编译器。例如: 自动并行化编译器经常采用一种高级语言作为输入,转换其中的代码,并用并行代码注释对它进行注释(如OpenMP)或者用语言构造进行注释(如FORTRAN的DOALL指令)。
预处理器(preprocessor)
作用是通过代入预定义等程序段将源程序补充完整。
编译器前端(frontend)
前端主要负责解析(parse)输入的源程序,由词法分析器和语法分析器协同工作。词法分析器负责把源程序中的‘单词’(Token)找出来,语法分析器把这些分散的单词按预先定义好的语法组装成有意义的表达式,语句 ,函数等等。 例如“a = b + c;”前端词法分析器看到的是“a, =, b , +, c;”,语法分析器按定义的语法,先把他们组装成表达式“b + c”,再组装成“a = b + c”的语句。 前端还负责语义(semantic checking)的检查,例如检测参与运算的变量是否是同一类型的,简单的错误处理。最终的结果常常是一个抽象的语法树(abstract syntax tree,或 AST),这样后端可以在此基础上进一步优化,处理。
编译器后端(backend)
编译器后端主要负责分析,优化中间代码(Intermediate representation)以及生成机器代码(Code Generation)。
一般说来所有的编译器分析,优化,变型都可以分成两大类: 函数内(intraproceral)还是函数之间(interproceral)进行。很明显,函数间的分析,优化更准确,但需要更长的时间来完成。
编译器分析(compiler analysis)的对象是前端生成并传递过来的中间代码,现代的优化型编译器(optimizing compiler)常常用好几种层次的中间代码来表示程序,高层的中间代码(high level IR)接近输入的源程序的格式,与输入语言相关(language dependent),包含更多的全局性的信息,和源程序的结构;中层的中间代码(middle level IR)与输入语言无关,低层的中间代码(Low level IR)与机器语言类似。 不同的分析,优化发生在最适合的那一层中间代码上。
常见的编译分析有函数调用树(call tree),控制流程图(Control flow graph),以及在此基础上的 变量定义-使用,使用-定义链(define-use/use-define or u-d/d-u chain),变量别名分析(alias analysis),指针分析(pointer analysis),数据依赖分析(data dependence analysis)等等。
上述的程序分析结果是编译器优化(compiler optimization)和程序变形(compiler transformation)的前提条件。常见的优化和变新有:函数内嵌(inlining),无用代码删除(Dead code elimination),标准化循环结构(loop normalization),循环体展开(loop unrolling),循环体合并,分裂(loop fusion,loop fission),数组填充(array padding),等等。 优化和变形的目的是减少代码的长度,提高内存(memory),缓存(cache)的使用率,减少读写磁盘,访问网络数据的频率。更高级的优化甚至可以把序列化的代码(serial code)变成并行运算,多线程的代码(parallelized,multi-threaded code)。
机器代码的生成是优化变型后的中间代码转换成机器指令的过程。现代编译器主要采用生成汇编代码(assembly code)的策略,而不直接生成二进制的目标代码(binary object code)。即使在代码生成阶段,高级编译器仍然要做很多分析,优化,变形的工作。例如如何分配寄存器(register allocatioin),如何选择合适的机器指令(instruction selection),如何合并几句代码成一句等等。
编译语言与解释语言对比
许多人将高级程序语言分为两类: 编译型语言 和 解释型语言 。然而,实际上,这些语言中的大多数既可用编译型实现也可用解释型实现,分类实际上反映的是那种语言常见的实现方式。(但是,某些解释型语言,很难用编译型实现。比如那些允许 在线代码更改 的解释型语言。)
历史
上世纪50年代,IBM的John Backus带领一个研究小组对FORTRAN语言及其编译器进行开发。但由于当时人们对编译理论了解不多,开发工作变得既复杂又艰苦。与此同时,Noam Chomsky开始了他对自然语言结构的研究。他的发现最终使得编译器的结构异常简单,甚至还带有了一些自动化。Chomsky的研究导致了根据语言文法的难易程度以及识别它们所需要的算法来对语言分类。正如现在所称的Chomsky架构(Chomsky Hierarchy),它包括了文法的四个层次:0型文法、1型文法、2型文法和3型文法,且其中的每一个都是其前者的特殊情况。2型文法(或上下文无关文法)被证明是程序设计语言中最有用的,而且今天它已代表着程序设计语言结构的标准方式。分析问题(parsing problem,用于上下文无关文法识别的有效算法)的研究是在60年代和70年代,它相当完善的解决了这个问题。现在它已是编译原理中的一个标准部分。
有限状态自动机(Finite Automaton)和正则表达式(Regular Expression)同上下文无关文法紧密相关,它们与Chomsky的3型文法相对应。对它们的研究与Chomsky的研究几乎同时开始,并且引出了表示程序设计语言的单词的符号方式。
人们接着又深化了生成有效目标代码的方法,这就是最初的编译器,它们被一直使用至今。人们通常将其称为优化技术(Optimization Technique),但因其从未真正地得到过被优化了的目标代码而仅仅改进了它的有效性,因此实际上应称作代码改进技术(Code Improvement Technique)。
当分析问题变得好懂起来时,人们就在开发程序上花费了很大的功夫来研究这一部分的编译器自动构造。这些程序最初被称为编译器的编译器(Compiler-compiler),但更确切地应称为分析程序生成器(Parser Generator),这是因为它们仅仅能够自动处理编译的一部分。这些程序中最着名的是Yacc(Yet Another Compiler-compiler),它是由Steve Johnson在1975年为Unix系统编写的。类似的,有限状态自动机的研究也发展了一种称为扫描程序生成器(Scanner Generator)的工具,Lex(与Yacc同时,由Mike Lesk为Unix系统开发)是这其中的佼佼者。
在70年代后期和80年代早期,大量的项目都贯注于编译器其它部分的生成自动化,这其中就包括了代码生成。这些尝试并未取得多少成功,这大概是因为操作太复杂而人们又对其不甚了解。
编译器设计最近的发展包括:首先,编译器包括了更加复杂算法的应用程序它用于推断或简化程序中的信息;这又与更为复杂的程序设计语言的发展结合在一起。其中典型的有用于函数语言编译的Hindley-Milner类型检查的统一算法。其次,编译器已越来越成为基于窗口的交互开发环境(Interactive Development Environment,IDE)的一部分,它包括了编辑器、连接程序、调试程序以及项目管理程序。这样的IDE标准并没有多少,但是对标准的窗口环境进行开发已成为方向。另一方面,尽管近年来在编译原理领域进行了大量的研究,但是基本的编译器设计原理在近20年中都没有多大的改变,它现在正迅速地成为计算机科学课程中的中心环节。
在九十年代,作为GNU项目或其它开放源代码项目的一部分,许多免费编译器和编译器开发工具被开发出来。这些工具可用来编译所有的计算机程序语言。它们中的一些项目被认为是高质量的,而且对现代编译理论感性趣的人可以很容易的得到它们的免费源代码。
大约在1999年,SGI公布了他们的一个工业化的并行化优化编译器Pro64的源代码,后被全世界多个编译器研究小组用来做研究平台,并命名为Open64。Open64的设计结构好,分析优化全面,是编译器高级研究的理想平台。
编译器是一种特殊的程序,它可以把以特定编程语言写成的程序变为机器可以运行的机器码。我们把一个程序写好,这时我们利用的环境是文本编辑器。这时我程序把程序称为源程序。在此以后程序员可以运行相应的编译器,通过指定需要编译的文件的名称就可以把相应的源文件(通过一个复杂的过程)转化为机器码了。
编译器工作方法
首先编译器进行语法分析,也就是要把那些字符串分离出来。然后进行语义分析,就是把各个由语法分析分析出的语法单元的意义搞清楚。最后生成的是目标文件,我们也称为obj文件。再经过链接器的链接就可以生成最后的可执行代码了。有些时候我们需要把多个文件产生的目标文件进行链接,产生最后的代码。我们把一过程称为交叉链接。
7. 使用循环给数组赋30个数值,赋值的规律是从第三个值开始,数组元素等于前面两个元素之和
1.C源程序的框架
尽管各个C源程序的功能千变万化,但框架是不变的,主要有:编译预处理、主函数()、函数n()等,主函数的位答镇棚置不一定在最前面,可以在程序的中部或后面,主函数的名字固定为main。
2.C语言源程序的书写规则:
(1)C源程序是由一个主函数和若干个其它函数组成的。
(2)函数名后必须有小括号,函数体放在大括号内。
(3)C程序必须用小写字母书写。
(4)每句的末尾加分号。
(5)可以一行多句。
(6)可以一句多行。
(7)可以在程序的任何位置加注释。
3.语句种类
语句是程序的基本成分,程序的执行就是通过一条条语句的执行而得以实现的,根据表现形式及功能的不同,C语言的基本语句可以分为五大类。
(1)流程控制语句
流程控制语句的功能是控制程序的走向,程序的流程有三种基本结构:顺序结构、分支结构和循环结构,任何复杂的程序都可以由这三种基本结构复合而成。其中后两种结构要用特定的流程控制语句实现。
(2)表达式语句
表达式语句的形式是:表达式;,即表达式后跟一分号";",分号是语句结束符,是一个语句必不可少的成分。表达式和表达式语句的区别在于表达式代表的是一个数值,而表达式语句则代表一种动作。最常见的表达式语句是赋值语句。
(3)函数调用语句
函数调用语句实际上也是一种表达式语句,形式为:在一次函数调用的小括号后面加上一个分号。
(4)空语句
空语句的形式就是一个分号,它不代表任何动作,常常作为一个意义转折点使用。
(5)复合语句
复合语句从形式上看是多个语句的组合,但在语法意义上它只相当于一个语句,在任何单一语句存在的地方都可以是复合语句。注意复合语句中最后一个语句末尾的分号不能少。复合语句右大括号后面没有分号。
4.运算符
用来表示数据各种操作的符号称为运算符。运算符实际上代表了一种类型数据的运算规则。不同的运算符具有不同旅键的运算规则,其操作的数据类型必须符合该运算符的要求,运算结果的数据类型也是固定的。
根据参加操作的数据个数多少,可以将C语言的运算符分为单目运算符,双目运算符和三目运算符(三目运算符只有条件运算符一个)。
根据运算对象和运算结果的数据类型可分为算术运算符、关系运算符、逻辑运算符等。
5.表达式
表达式是由常量、变量、函数,通过运算符连接起来而形成的一个算式。一个常量,一个变量或一个函数都可以看成是清则一个表达式。
表达式的种类有:
算术表达式、关系表达式、逻辑表达式、赋值表达式、字位表达式、强制类型转换表达式、逗号表达式(顺序表达式)、条件表达式、指针表达式。
6.数据的输入/输出
C语言本身没有输人/输出语句,数据的输入/输出是通过调用库函数来实现的。
第二章 数据类型知识点
划分数据类型的意义是编译系统对每个不同类型的数据在内存中分配的字节数不同,不同类型的数据可以按规定参加不同类型的运算。
1.C语言的数据类型
数据类型有:整型、字符型、实型单精度型、双精度型、构造类型数组类型、结构体类型、共用体类型、枚举类型、指针类型、空类型,其中整型、实型、字符型是C语言中的基本类型。
2.各种类型数据的定义方法
定义形式:数据类型 变量名1,变量名2,......变量名n;
3.常量与变量
(1)常量--在程序执行期间其值不变的量。它不能被赋值。
(2)变量--在程序运行期间其值可以改变的量。
4.各种类型数据的混合运算
各类数据运算前会自动转换成同一类型。规律如右图示:从右向左的箭头表示必定的转换,如float型数据运算前化成double型,以提高运算精度,结果也为double型,short或char型数据运算前化成int型,结果也为int型;从下向上的箭头表示转换方向是向级别高的靠拢。
5.强制类型变换
当我们需要对数据进行类型变换,而机器又不能自动完成时,就要用强制类型变换,形式为:(数据类型符)(被转换对象)。
第三章 选择知识点
C语言中实现选择结构的控制语句有两种:条件分支语句if和开关分支语句switch。
1.if语句的三种形式:
(1) if(表达式)语句;
(2) if(表达式)语句1;
else语句2;
(3) if(表达式1)语句1;
else if(表达式2)语句2;
else if(表达式3)语句3;
...
else if(表达式n)语句n;
2.开关分支语句switch
(1)形式
switch(表达式)
{ case e1:语句1;break;
case e2:语句2;break;
case e3:语句3;break;
......
case en:语句n;break;
default :语句n+1;
}
(2)功能
当表达式的值等于e1时,执行语句1;
当表达式的值等于e2时,执行语句2;
......
当表达式的值等于en时,执行语句n;
当表达式的值与常量e1、e2......en谁都不等时,就执行default后的语句
第四章 循环知识点
循环就是在程序执行过程中,反复多次的执行同一段程序。C语言中有三种循环语句。
1.while循环语句
形式为:while(表达式)
{
循环体
};
执行过程是:先计算表达式的值,当表达式的值非0时就执行循环体,之后再判断表达式的值,且重复以上过程;当表达式的值为0时就结束循环。
2.do-- while循环语句
形式为:do
{
循环体
} while(表达式);
执行过程是:先执行循环体一次,再判断表达式的值,当表达式的值非0时就再执行循环体,之后再判断表达式的值,且重复以上过程;当表达式的值为0时就结束循环。
3.for循环语句
形式为:for(表达式1;表达式2;表达式3)
{ 循环体 }
4.三种循环语句的比较
三种循环语句可以完成同一件事,可任选其一。
使用while和do-- while循环时,要提前给循环变量赋初值。而for循环是在表达式1中赋初值的。
while循环和for循环都是先判断条件后执行循环体,有可能一次也不执行循环体,do-- while循环是先执行循环体,后判断条件,即循环体至少也得执行一次。for循环不限于计数循环,其循环条件可以是逻辑表达式和字符表达式等。
5.循环嵌套
三种循环控制语句可以互相嵌套,即在一个循环体内部又可以出现另一循环,这种嵌套在理论上来说可以是无限的。注意必须是一个循环完整的套住另一个循环。
6.break语句
break语句只能出现在三种循环语句和switch多分支语句中,其作用是用来中断这四种语句的执行。当程序执行到break语句时,会跳出break语句所在的循环或switch分支,而直接执行紧跟在它们后面的语句。
7.continue语句
continue语句只能出现在三种循环语句中,当程序执行到continue语句时,其作用是提前结束本次循环,自动跳过循环体中后半部剩余的语句的执行,而直接回到循环条件判断。根据判断的结果决定是否继续执行下次循环。
8. goto 语句
goto语句是一种非结构化语句,其作用是使程序的执行无条件的转移到某一处。使用格式为: goto 标号;利用goto语句与if条件语句配合,也可以实现条件循环。C语句允许在任何语句前添加标号,作为跳转目标,标号的构成是标识符后面加一个":"。
第五章 数组知识点
数组就是同类型的一批数据的集合,用一个变量名存放,区分各元素的办法是用下标。
1.一维数组
类型说明符数组名\[数组长度\];
(1)数组命名要符合标识符的命名规则。
(2)数组名后的括号必须是方括号,不能是圆括号。
(3)数组长度必须是正整数,可以是个表达式,但不能有变量,C语言不支持动态数组。
(4)数组长度表示数组中元素的个数
(5)数组元素的下标从0开始数,所以最大下标是数组的长度减1。
2.多维数组(以二维为例)
类型说明符数组名\[第一维长度\]\[第二维长度\];
(1)数组命名要符合标识符的命名规则。
(2)数组名后的括号必须是两个方括号,定义时不能写成inta\[3,4\];。
(3)数组长度必须是整型常量表达式。
(4)第一维长度表示数组行数,第二维长度表示数组列数。
(5)每个数组元素都有两个下标,第一维表示该元素所在的行,第二维表示该元素所在的列,每一维的下标都从0开始数。
二维数组的初始化:C语言规定只有静态数组和外部数组才允许在定义时赋初值,赋初值形式如下:
static类型说明符数组名\[第一维长度\]\[第二维长度\]={初值表};
二维数组的引用:二维数组不能整体引用,要引用数组的单个元素,形式为:数组名\[下标\]\[下标\]和普通变量的使用无任何区别。
3.字符数组
C语言中没有字符串变量,字符串是靠字符数组实现的,所谓字符数组就是元素的数据类型为字符型的数组。
(1)字符数组的定义形式:char数组名\[数组长度\];
因为C语言中的整型数据和字符型数据是相通的,所以也可以这样定义:int数组名\[数组长度\];
(2)字符数组的初始化:给字符数组的初始化有两种方式,一种是用字符常量,另一种是用字符串。形式如下:
staticchar数组名\[数组长度\]={字符常量表};
staticchar数组名\[数组长度\]={字符串常量};
4.数组与函数
数组经常作为函数的参数,数组做函数的参数有两种形式,一是数组元素做函数的参数,一是数组名做函数的参数,当用数组名做函数的实参时传送的是首地址。
5.常用的字符串处理函数
C语言提供了一些处理字符串的标准函数,用以完成一些常见的操作。对以下几个函数要掌握其功能和调用形式。
(1)gets(字符数组名)此函数功能是从键盘输入一串字符,回车后送到字符数组中,注意定义数组时数组长度要足够大。
(2)puts(字符数组名)此函数功能是将字符数组的内容输出到屏幕上。
(3)strcat(字符数组名1,字符数组名2)此函数功能是将字符数组1中的'\\0'去掉后将字符数组2的内容连接到字符数组1的末尾。
(4)strcpy(字符数组名1,字符数组名2)函数功能是将字符数组2的内容(包括'\\0')拷贝到字符数组1中,字符数组2处也可以是字符串常量。strcpy函数可以实现拷子串。
(5)strcmp(字符数组名1,字符数组名2)函数功能是两个字符串(ASCII码)比大小。
(6)strlen(字符数组名)此函数功能是求字符串的长度,注意不包括'\\0'。
(7)strlwr(字符数组名)此函数功能是将字符串中的所有大写字母都变成小写。
(8)strupr(字符数组名)此函数功能是将字符串中的所有小写字母都变成大写。
第六章 函数知识点
每个C源程序都是由函数组成的,一个主函数和若干个其它函数,C语言程序设计的基础工作就是函数的具体编写,C语言中的函数就相当于其它高级语言中的子程序。
1.函数的概念
函数就是一个数据加工厂,从函数外部接收数据,在函数内部加工处理,然后得到一个结果返回给外部的调用者。所以函数就是对语言功能的扩充,对函数的调用就是对功能的调用。
2.标准函数
各种高级语言都定义了一些标准函数,C语言中的标准函数称为库函数,是将一些基本的、常用的功能编成了函数,供大家使用方便。使用库函数时必须把它的头文件用#i nclude命令包含进来,每个库函数的功能及对应的头文件都会在手册中给出。
3.自定义函数
C 语言也允许用户自己编写函数以实现C库函数中没有提供的功能,称作自定义函数。
4.定义函数
C语言规定每个函数都要独立定义,函数定义不能嵌套。
函数定义的形式:数据类型函数名(形参表)
形参说明语句序列
{ 说明语句序列
可执行语句序列 }
5.函数调用
函数调用的形式是: 函数名(实参表)。当实参表中有多个参数时,要用逗号隔开,若被调函数无参数,调用时小括号也不能省。函数调用过程是:将实参的值传给形参,在函数体内进行加工处理,然后由return语句将函数值返回调用处。
5.全局变量和局部变量
局部变量:在函数内部定义的变量称为局部变量,只在本函数中有效。
全局变量:在函数外部定义的变量称为全局变量,它的作用范围是从定义开始到本文件结束。
6.动态存储与静态存储
内存中的用户数据区分为动态存储区和静态存储区,动态存储区是指程序运行期间给变量临时分配存储单元,变量用完后立即释放单元的区域,动态存储区放的是函数的形参、自动变量、函数调用期间的现场保护数据和返回地址。
静态存储区是指程序运行期间给变量分配固定的存储单元,放的是全局变量和局部静态变量。
一个变量除了它的数据类型以外还有存储类型,定义一个变量时应该说明这两种类型。
第七章 预处理知识点
对高级语言编译连接就是把源程序转换成机器语言,C语言在进行编译之前还要预先处理三件事:宏定义命令、文件包含命令和条件编译命令,统称为预处理命令,其特点是:
1.所有的预处理命令都放在程序的头部,以#开头,且#号后面不留空格。
2.预处理命令不是C的语句,行尾不加分号。
3.预处理命令是在编译预处理阶段完成的,所以它们没有任何计算、操作等执行功能。
4.预处理命令有所变动后,必须对程序重新进行编译和连接。
1.宏定义
宏定义命令的作用是给一些常用的对象重新命名,在程序中可以用宏名来引用这些对象,预处理时宏名会被代表的内容替换,此过程称为宏展开或宏替换。宏定义有两种形式:
2.文件包含
使用文件包含命令可以将另-个C源程序的全部内容包含进来,其形式为:
#i nclude <文件名>或#i nclude "文件名"
通常可以把经常用到的,带公用性的一些函数或符号等集合在...起形成一个源文件,然后用此命令将这个源文件包含进来,这样可以避免在每个新程序中都要重新键入这些内容。
3.条件编译
顾名思义满足条件时进行编译,为了解决程序移植问题,C语言提供了条件编译命令,它能使源程序在不同的编译环境下生成不同的目标代码文件。条件编译命令有3种形式。
第八章 指针知识点
1.什么是指针和指针变量?
指针就是内存地址,因为通过"地址"可以找到变量,所以内存"地址"形象的称为指针。
指针变量就是存地址的变量。在C语言中用一个变量存另一个变量的地址,那么就称这个变量为指针变量,指针变量的值就是地址。通常指针变量被简称为指针。
指针变量是有类型的,即指针值增1表示指向下一个数据,如整型数据在内存中占两个字节,它的指针变量增1是增两个字节。如实型数据在内存中占4个字节,它的指针变量增1是增4个字节。
2.怎样定义指针变量?
定义形式为:数据类型*指针变量名1,*指针变量名2......;
3.指针的有关运算
指针为内存地址是整数,可以进行一些算术运算、关系运算、赋值运算、特殊运算等,但要注意运算代表的实际意义。
4.指向数组的指针变量
(1)指向数组元素的指针变量定义形式为:inta\[10\];
int*p=a;
(2)指向一维数组的指针变量
定义形式为:inta\[3\]\[4\];
int(*p)\[4\];
p=a;
(3)指向字符串的指针变量
定义形式为: char*p="字符序列";
C语言中的字符串是以隐含形式的字符数组存放的,定义了指针变量p并不是将整个字符串都存放在p中了,而p中存放的是字符串的首地址。
5.指向函数的指针变量
一个函数在编译时被分配一个入口地址,这个地址就是函数的指针,可以用一个指针变量指向它。指向函数的指针变量定义形式为:
数据类型(*指针变量名);
6.指针变量做函数的参数
(1)指针作函数的参数可以传送地址,如数组的首地址,函数的入口地址等。
(2)指针作函数的参数也可以用地址方式传送数据。
7.返回值是指针的函数
即函数的返回值是内存的地址,利用这种方法可以将一个以上的数据返回给函数的调用者。定义形式如下:
数据类型*函数名(形参表)
8.指针数组
定义形式为:数据类型*数组名\[数组长度\];
数组中的每个元素都是指针类型的数据,这种数组被称为指针数组。
9.指向指针的指针
定义形式为:数据类型**指针变量名;
指向指针数据的指针变量称为指向指针的指针。
10.main函数的形参
main函数可以带两个形参,如:
main(argc,argv)
intargc;
char *argv\[\];
{
......
}
11.指向结构体的指针变量
结构体变量的指针就是该变量所占据的内存段的首地址。指向结构体的指针变量定义形式为:struct结构体类型名*指针变量名;
12.指向共用体的指针变量
共用体变量的指针就是该变量所占据的内存段的首地址。指向共用体的指针变量定义形式为:union共用体类型名*指针变量名;
替换了的字符时(这里为正中间的字符"4"),原来的字符己不复存在。
第九章 结构体与共用体知识点
结构体类型是C语言的一种构造数据类型,它是多个相关的不同类型数据的集合,相当于其它高级语言中的记录。
1.结构体类型定义
结构体类型的形式为:
struct结构体类型名
{ 数据类型成员名1;
...
数据类型成员名n;
}
2.结构体变量的定义
结构体变量有三种定义形式:
(1)先定义结构体类型,后定义结构体变量。
(2)定义结构体类型的同时定义结构体变量。
(3)不定义结构体类型名,直接定义结构体变量。
3.结构体变量的引用
(1)结构体变量的初始化:许多C版本规定对外部或静态存储类型的结构体变量可以进行初始化,而对局部的结构体变量则不可以,新标准C无此限制,允许在定义时对自动变量初始化。
(2)结构体成员的引用:由于C语言一般不允许对结构体变量的整体引用,所以对结构体的引用只能是对分量的引用,结构体变量中的任一分量可以表示为:结构体变量名·成员名
4.结构体与数组
C语言中数组的成员可以是结构体变量,结构体变量的成员也可以是数组。
结构体数组有三种定义形式:
(1)先定义结构体类型,后定义结构体数组。
(2)定义结构体类型的同时定义结构体数组。
(3)不定义结构体类型名,直接定义结构体变量。
5.结构体与指针
一方面结构体变量中的成员可以是指针变量,另一方面也可以定义指向结构体的指针变量,指向结构体的指针变量的值是某一结构体变量在内存中的首地址。
结构体指针的定义形式:struct结构体类型名*结构体指针变量名。
由结构体指针引用结构体成员的方法
6.用指针处理链表
结构体的成员可以是指针类型,并且这个指针类型就是本结构体类型的,这样可以构造出一种动态数据结构-成为链表。所谓动态数据就是指在编译时不能确定数据量的多少,而是在程序执行时才确定的数据,动态数据可以比较方便的进行数据插人或删除等操作。
7.结构体与函数
结构体变量的成员可以作函数的参数、指向结构体变量的指针也可以作函数的参数。虽然结构体变量名也可以作为函数的参数,将整个结构体变量进行传递,但一般不这样做,因为如果结构体的成员很多,或者有些成员是数组,则程序运行期间,将全部成员一个一个的传递,既浪费时间,又浪费空间,开销太大。
8.结构体与共用体
结构体变量中的成员可以是共用体,共用体变量中的成员可以是结构体。
共用体
为了节省存储空间,C语言允许将几种不同类型的数据存放在同一段内存单元,它们共用一个起始地址,称做共用体。
1.共用体类型定义
union共用体类型名
{ 数据类型成员名1;
...
数据类型成员名n;
}
2.共用体变量定义
(1)先定义类型,后定义变量。
(2)定义类型的同时定义变量。
(3)不定义类型名,直接定义变量。
3.共用体变量的引用
(1)共用体变量不能整体引用,只能引用其成员,形式为:共用体变量名·成员名
(2)共用体变量的成员不能初始化,因为它只能放一个数据。
(3)共用体变量存放的数据是最后放入的数据。
(4)共用体变量的长度是最大的成员的长度。
(5)可以引用共用体变量的地址、各个成员的地址,它们都是同一个地址。
(6)共用体变量不能当函数的参数或函数的返回值,但可以用指向共用体变量的指针作函数的参数。
(7)共用体变量的成员可以是数组,数组的成员也可以是共用体变量。
第十章 位运算知识点
位运算就是按二进制位进行操作的运算,运算的对象只能是整型或字符型,不能是实型。不同长度的变量进行位运算,系统会自动右对齐,而左端的不齐部分,对于无符号数左端补满0,对于有符号数则:正数左端补满0,负数左端补满1。
第十一章 文件知识点
操作系统是以文件为单位对数据进行管理的,任何一种计算机高级语言都要有和磁盘文件打交道的能力,否则该语言的功能充其量是算一算、显示显示而已。在C语言中没有单独的文件操作语句,所有对文件的操作都是通过库函数来完成的,所以本章的重点是学会使用有关文件操作的库函数。
1.文件的基本概念
2.文件类型指针
3.文件的操作
8. vb6语言以及基本语句
VB 就是 Visual Basic 的意思,是一种常用的编程开发工具。它的基础是编程语言Basic ,Visual Basic 简单点来说就是微软为了更好的让人们学习编程,应用上 Basic 开发语言的一套工具,简称就是 VB。VB 的面世使原本极其复杂困难的编程、软件开发的工作变得简单。最初的编程工作都是依靠全套的代码去进行的,工程量极大。Microsoft 就是看准了这个人们渴求快速发展软件开发行业的商机,利用自己的技术实力研发出 VB 这么一套完善的编程工具。VB 把过往的纯代码编程过度到可视化编程,将一些经常要使用到的功能以一个个的控件的形式出现,例如 Label(标签)、TextBox(文本框)等等的。他们在以前的编程工作中需要在使用时重复多次的输入同样的代码去实现这个功能,而这些代码却不是小工程,耗费了很大的人力物力和很多的时间。所以有了 VB 之后,编程的工作也就可以普及啦,可以免去了机械的重复的代码的输入,又可以一面编辑核心功能一面进行界面优化美化或帆档,一劳多得啊。
VB 是 Basic 语言软件开发者的首选编译器,是学习 Basic 语言编程必须要接触而且是经常接触的一款整合型技术编译器。
语言特性
VB的中心思想就是要便于程序员使用,无论是新手或者专家。VB使用了可以简单建立应用程序的GUI系统,但是又可以开发相当复杂的程序。VB的程序是一种基于窗体的可视化组件安排的联合,并且增加代码来指定组建的属性和方法。因为默认的属性和方法已经有一部分定义在了组件内,所以程序员不用写多少代码就可以完成一个简单的程序。过去的版本里面VB程序的性能问题一直被放在了桌面上,但是随着计算机速度的飞速增加,关于性能的争论已经越来越少。
窗体控件的增加和改变可以用拖放技术实现。一个排列满控件的工具箱用来显示可用控件(比如文本框或者按钮)。每个控件都有自己的属性和事件。默认的属性值会在控件创建的时候提供,但是程序员也可以进行更改。很多的属性值可以在运行时候随着用户的动作和修改进行改动,这样就形成了一个动态的程序。举个例子来说:窗体的大小改变事件中加入了可以改变控件位置的代码,在运行时候每当用户更改窗轿庆口大小,控件也会随之改变位置。在文本框中的文字改变事件中加入相应的代码,程序就能够在文字输入的时候自动翻译或者阻止某些字符的输入。
VB的程序可以包含一个或多个窗体,或者是一个主窗体和多个子窗体,类似于操作系统的样子。有很少功能的对话框窗口(比如没有最大化和最小化按钮的窗体)可以用来提供弹出功能。
VB的组件既可以拥有用户界面,也可以没有。这样一来服务器端程序就可以处理增加的模块。
VB使用引用计数的方法来进行垃圾收集,这个方法中包含有大量的对象,提供基本的面向对象支持。因为越来越多组建的出现,程序员可以选用自己需要的扩展库。和有些语言不一样,VB对大小写不敏感,但是能自动转换关键词到标准的大小写状态,以及强制使得符号表入口的实体的变量名称遵循书写规则。默认情况下字符串的比较是对大小写敏感的,但是可以关闭这个功能。
VB使得大量的外界控件衫乱有了自己的生存空间。大量的第三方控件针对VB提供。VB也提供了建立、使用和重用这些控件的方法,但是由于语言问题,从一个应用程序创建另外一个并不简单。
术语
在讨论 Visual Basic(不包含 .NET)时,经常可以听到以下这些术语,因此掌握这些术语的基本理解对初学者十分有帮助。
控件:简单的说,控件就是构成或者说建造 Visual Basic 应用程序的图形化工具,包括窗体、按钮、复选框、列表框、数据控件、表格控件和图片控件等等……
事件:由用户或操作系统引发的动作,例如击键、单击鼠标(Click)、双击鼠标(DblClick)、一段时间的限制,或从端口接收数据。
方法:嵌入在对象定义中的程序代码,它定义对象怎样处理信息并响应某事件。例如,数据库对象有打开记录集并从一个记录移动到另一个记录的方法程序的基本元素,它含有定义其特征的属性,定义其任务和识别它可以响应的事件的方法。控件和窗体是Visual Basic中所有对象的示例。
物件:一个控件、窗体等都可被看作一个物件。
过程:为完成某些特定的任务而编写的代码段,过程通常用于响应特定的事件,也可以当作应用程序的用户自定义函数来使用。
属性:属性是组成用户界面的各对象的性质的具体描述。例如上述“物件”中所提到的尺寸、位置、颜色、宽度、高度等等都称为控件的属性。属性决定物件的外观,有时也决定物件的行为。物件的属性绝大部分是VB中已经事先定义好的,但也有的属性是需要在应用过程中才去定义的。属性即可为物件提供数据,也能从物件取回信息。
·窗体的常用属性
现在,我列举出了一些窗体的常用属性,请你对它们先进行一下感性认识。
名称是窗体的标识名,代码中称它为Name。
BackColor:设置窗体背景颜色。
BorderStyle:设置窗体的边框风格。
要请注意的是,属性值为1 - Fixed Single 与 3 - Fixed Dialog 时,窗体外观相同,但功能却不同。
当属性为1 - Fixed Single 时,MaxButton与MinButton这两个属性可以起作用。MaxButton为True时窗体上具有了最大化按钮。MinButton为True时最小化按钮也有效了。
而当属性为3 - Fixed Dialog时,MaxButton与MinButton属性不起作用。此时MaxButton与MinButton为True,但最大化、最小化按钮均为出现。
Caption:设置窗体标题栏上的文字。
ControlBox:设置窗体标题栏上是否具有控制菜单栏及按钮。
Enabled:决定运行时窗体是否响应用户事件。在程序运行时可以看到改变 Enabled属性的效果。此时Enabled已设为False,所以点击按钮不会有反应。
Height:设置窗体的高度。
Width:设置窗体的宽度。
Left:设置程序运行时窗体的水平位置
Top:设置程序运行时窗体的垂直位置
Visible:设置程序运行时窗体是否可见。当Visible为False时,窗体是不可见的。将值改为为True。运行时窗体就是可见的了。
WindowsState:设置程序运行中窗体的最小化、最大化和原形这三种状态。程序运行时的最小化状态。
Icon:设置窗体标题栏上的图标。
Picture:给窗体配上漂亮的位图。
最后要说明的是:窗体的Name和Caption属性,虽然缺省值相同,都是Form1,但实际意义却不一样。Caption指的窗体标题栏上的文字,Name指这个窗体的对象名,千万不能混淆。
9. (s)\\{\\{wotd\\|(.+)\\|(.+)\\|([^#\\|]+).*\\}\\}
易语言概述
一.易语言简介
易语言是一个自主开发,适合国情,不同层次不同专业的人员易学易用的汉语编程语言。易语言降低了广大电脑用户编程的门槛,尤其是根本不懂英文或者英文了解很少的用户,可以通过使用本语言极其快速地进入Windows程序编写的大门。易语言汉语编程环境是一个支持基于汉语字、词编程的、全可视化的、跨主流操作系统平台的编程工具环境;拥有简、繁汉语以及英语、日语等多语种版本;能与常用的编程语言互相调用;具有充分利用API,COM、DLL、OCX组件,各种主流数据库,各种实用程序等多种资源歼消的接口和支撑工具。易语言有自主开发的高质量编译器,中文源代码被直接编译为CPU指令,运行效率高,安全可信性高;拥有自己的数据库系统,且支持访问现有所有数据库;内置专用输入法,支持中文语句快速录入,完全解决了中文输入慢的问题;易语言除了支持界面设计的可视化,还支持程序流程的即时可视化;除了语句的中文化之外,易语言中还专门提供了适合中国国情的命令,如中文格式日期和时间处理、汉字发音处理、全半角字符处理、人民币金额的处理等;易语言综合采用了结构化、面向对象、组件、构架、集成化等多种先进技术,并在运行效率、性能价格比、全可视化支持、适应本地化需要、面向对象以及提供Windows,linux上的运行平台等具有特色;现有各种支持库多达40多个,户可以使用她来满足几乎所有的Windows编程需求,多媒体功能支持强大,完善的网络、端口通讯和互联网功能支持,网上与论坛上的学习资源众多。在易语言及其编译器的设计与实现、可视化汉语编程的构建、提供多种语言版本等方面具有创新。目前易语言已取得国家级鉴定,鉴定会专家一致认为:易语言在技术上居于国内领先地位,达到了当前同类产品的国际先进水平。
二.易语言的文化背景
中华民族拥有五千年文化历史,民族文化源远流长,从黄帝开始即结节记事,后仓颉造字,从而有了文字,在秦朝即统一了文字,那时的文字是篆书,后一步一步发展成为隶书、楷体等。
中国计算机应用的发展在经过操作系统汉化显示环境,中文输入法的两次较大跨越后,正经历一个重要的历史氏笑知时期:中文化编程已成为当务之急。
英文编程软件只能使用英文输入程序代码,并且需要用户升毁掌握大量专业英文术语,这是国人难以进入软件开发大门的根本所在!
而且国人的述事习惯与外国人的语法习惯还有很大区别,如外国人表示"按顺序排 从大到小方式",而中国人的表达方式为:"按从大到小方式顺序排"或简称"按升序排"。外国人的语法大多数是与中国人不同的,再加上英文有多种语态,有时间动词,有不同的复数形式,这在中国人学习外语上都不能很好的适应。更何况英文编程中大多数用大写缩写的方法表示一个概念、定义和变量,因此如果不了解的人是无从知道,而中文几个字即可简单表示了。中文具有比较明确的归类表达方式,如公交车、小汽车、自行车、吉普车均是行走的车辆,都与车有关,而英语每个事物都有一个不同的名词,不容易记忆,如BUS公交车,CAR小汽车,BIKE自行车,JEEP吉普车。因此这种方式如果套用到编程上,那么每个变量均用不同的代表,那样要记忆的词汇量就非常巨大了,有个对比,中国人只要掌握3000个字就能读名着,而外国人必须掌握30000个以上单词才能看明白报纸。因此小的记忆量可以适合在编程中只考虑方法,而不必过多地考虑语法、变量的名称等。而且由于中文是方块字,包含的信息量也大,能够见文知义。
通过以上,东西方文化的差异造成对编程学习上的很大区别,中文文化背景决定了中国人还是学自己的编程语言好。
三.易语言的特点与强大优势
1、全中文支持,全部自主知识产权
2、拥有自己的编译器
3、跨平台编程
4、拥有自己的数据库系统,且支持访问现有所有数据库。
5、内置专用输入法,支持中文语句快速录入
6、全可视化编程
7、中文本土化特色的支持
8、多种语言支持
9、可以与其它编程语言协作开发
10、支持世界先进编程技术
11、人机界面友好,集成化程序设计界面
12、代码即为文档、源程序格式统一
13、超强的程序编辑器
14、多媒体功能支持强大
15、完善的网络、端口通讯和互联网功能支持
16、支持调用API底层函数
17、支持标准外部OCX组件
18、可由易语言支持库无限扩充其功能
19、模块化开发
20、强大的学习与帮助系统
四.易语言具有的重要意义
由于易语言所特有的易学、易用、实用,在我国具有如下重要发展意义:
1、推动软件产业化
众所周知,印度之所以能够成为软件大国,与他们使用英文作为母语是分不开的。现在有了易语言,国人也能够使用自己的母语进行编程,并且所编写出来的源程序可以轻松通过系统附带工具翻译转换为任何一种外文,为我国实现软件产业化和软件批量出口,培养大量软件人才奠定坚实的基础。
2、提高社会生产率
现在很多各行各业具有丰富工作经验的人们苦于很难学会英文编程语言,从而无法将自己的工作经验通过计算机软件的形式表达出来。是让专业程序员来学习行业知识,还是让行业专家来学习软件开发,一直是一个很难解决的问题。现在有了易语言,行业专家也能轻松学会软件开发,从而能够将其工作经验彻底地体现到计算机软件中去,为他人和社会所用,提高社会生产率。
3、推广编程教育
邓小平同志曾经提到过:"计算机要从娃娃抓起"。现在有了易语言,不必要先去等待学生掌握足够多的英文知识,即可马上开始学习计算机编程。并且由于易语言支持现有的先进编程理念和技术,与现有其它编程语言能够相互融合贯通,是最好的编程教育工具。
4、保障国家安全
易语言是从最底层一步一步发展起来的,拥有全部自主知识产权和核心技术。推广应用易语言不会带来任何安全或后门隐患,并且可以为国家整体战略而作具体调整和更改。
5、配合国家整体发展战略
根据上一点和国家目前推广应用linux操作系统的战略决定,易语言现在已经支持对linux操作系统软件的开发,从而对丰富linux平台下的应用软件起到帮助作用,改变现行linux应用软件缺乏的问题。
6、发展自己的核心技术
在易语言中,拥有几项关键性的核心技术,譬如编译器技术、数据库技术等等,推广应用易语言能够让我们可以对其继续发展和完善,和国内同行互相交流学习,提高我国在这些关键领域的科技水平和竞争能力。
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
但是我个人认为易语言有优有喜!首先它可以使中国人用中文编写一些东西.其次它可以提高国民信息技术素质.再次使中国的国家安全得到保障.然而它还是实验商品.技术还不够成熟.请记住一句经典IT行话“真正的程序员用C”。
参考资料:易语言官方网站