c语言基础

c语言基础
c语言基础

C#.NET是微软公司推出的一种类型安全、现代、简单、由C和C++衍生出来的面向对象的编程语言。掌握C#.NET的特点、程序结构、集成开发环境、C#语言的基本知识等,是利用好C#的前提。

本章内容

?C#概述

?C#语言基础

?控制结构

?数组

?异常处理

1.1 C# 概述

C#是微软公司在2000年7月发布的一种全新的简单、安全、面向对象的程序设计语言。它是专门为.NET的应用而开发的语言。

https://www.360docs.net/doc/0911667848.html,简介

1..NET定义

.NET技术是微软公司推出的一个全新概念,它代表了一个集合、一个环境和一个可以作为平台支持下一代Internet的可编程结构。.NET的目的就是将互联网作为新一代操作系统的基础,对互联网的设计思想进行扩展,使用户在任何地方、任何时间、利用任何设备都能访问所需要的信息、文件和程序。.NET平台包括.NET框架和.NET开发工具等部分。.NET框架(Framework)是整个开发平台的基础,包括公共语言运行库和.NET类库。.NET开发工具包括Visual https://www.360docs.net/doc/0911667848.html,集成开发环境和.NET编程语言。.NET编程语言包括Visual Basic、Visual C++和新的Visual C#等用来创建运行在公共语言运行库(Common Language Run,CLR)上的应用程序。.NET框架结构如图1-1所示。

C#程序设计与案例教程

2

图1-1 .NET框架结构

2.公共语言运行库

公共语言运行库是.NET Framework 的基础。可以将运行库看成一个在执行时管理代码的代理,它提供核心服务(如内存管理、线程管理和远程处理),而且还强制实施严格的类型安全以及可确保安全性和可靠性的其他形式的代码准确性。事实上,代码管理的概念是运行库的基本原则。以运行库为目标的代码称为托管代码,而不以运行库为目标的代码称为非托管代码。公共语言运行库管理内存、线程执行、代码执行、代码安全验证、编译以及其他系统服务。这些功能是在公共语言运行库上运行的托管代码所固有的。

3..NET框架类库

.NET Framework 类库是一个与公共语言运行库紧密集成的可重用的类型集合,是对Windows API封装的全新设计,它为开发人员提供了一个统一的、面向对象的、分层的和可扩展的庞大类库。该类库是面向对象的,使.NET Framework 类型易于使用,而且还减少了学习.NET Framework 的新功能所需要的时间。此外,第三方组件可与.NET Framework 中的类无缝集成。

例如,用.NET Framework 集合类实现一组可用于开发您自己的集合类的接口。您的集合类将与.NET Framework 中的类无缝地混合。

.NET Framework 类型使您能够完成一系列常见编程任务(包括字符串管理、数据收集、数据库连接以及文件访问等任务)。除这些常见任务之外,类库还包括支持多种专用开发方案的类型。例如,可使用.NET Framework 开发下列类型的应用程序和服务:?控制台应用程序。

?Windows GUI应用程序(Windows 窗体)。

?https://www.360docs.net/doc/0911667848.html,应用程序。

?XML Web services。

?Windows 服务。

例如,Windows窗体类是一组综合性的可重用类型,它们大大简化了Windows GUI 的开发。如果要编写https://www.360docs.net/doc/0911667848.html, Web窗体应用程序,可使用Web窗体类。

1.1.2什么是C#

1.C#及其特点

C#是微软公司在2000年7月发布的一种全新且简单、安全、面向对象的程序设计语

第1章C#语言基础

3

言,是专门为.NET的应用而开发的语言。它吸收了C++、Visual Basic、Delphi、Java等语

言的优点,体现了当今最新的程序设计技术的功能和精华。C#继承了C语言的语法风格,

同时又继承了C++的面向对象特性。不同的是,C#的对象模型已经面向Internet进行了重

新设计,使用的是.NET框架的类库;C#不再提供对指针类型的支持,使得程序不能随便

访问内存地址空间,从而更加健壮;C#不再支持多重继承,避免了以往类层次结构中由于

多重继承带来的可怕后果。.NET框架为C#提供了一个强大的、易用的、逻辑结构一致的

程序设计环境。同时,公共语言运行时(Common Language Runtime)为C#程序语言提供

了一个托管的运行时环境,使程序比以往更加稳定、安全。其特点有:

?语言简洁。

?保留了C++的强大功能。

?快速应用开发功能。

?语言的自由性。

?强大的Web服务器控件。

?支持跨平台。

?与XML相融合。

2.C#与C++的比较

C#对C++进行了多处改进,主要区别如下:

?编译目标:C++代码直接编译为本地可执行代码,而C#默认编译为中间语言(IL)代码,执行时再通过Just-In-Time将需要的模块临时编译成本地代码。

?内存管理:C++需要显式地删除动态分配给堆的内存,而C#不需要这么做,C#采用垃圾回收机制自动在合适的时机回收不再使用的内存。

?指针:C++中大量地使用指针,而C#使用对类实例的引用,如果确实想在C#中使用指针,必须声明该内容是非安全的。不过,一般情况下C#中没有必要使用指针。

?字符串处理:在C#中,字符串是作为一种基本数据类型来对待的,因此比C++中对字符串的处理要简单得多。

?库:C++依赖于以继承和模板为基础的标准库,C#则依赖于.NET基库。

?C++允许类的多继承,而C#只允许类的单继承,而通过接口实现多继承。

在后面的学习中会发现,C#与C++相比还有很多不同和改进之处,包括一些细节上的

差别,这里就不一一列举了。

3.C#与Java的比较

?C#面向对象的程度比Java高。

?C#中的基本类型都是面向对象的。

?C#具有比Java更强大的功能。

?C#语言的执行速度比Java快。

1.1.3 Visual https://www.360docs.net/doc/0911667848.html,的集成开发环境

.NET开发语言都采用了统一的集成开发环境Visual https://www.360docs.net/doc/0911667848.html,。下面加以介绍。

C#程序设计与案例教程

4

(1)Visual Studio起始页

启动Visual https://www.360docs.net/doc/0911667848.html,后,首先看到一个如图1-2所示的起始页。在起始页可以打开已有的项目或建立新的项目。

图1-2 Visual Studio起始页

(2)新建Visual C#.NET项目

在Visual https://www.360docs.net/doc/0911667848.html,集成开发环境中,通过执行“文件”→“新建”→“项目”菜单命令,将会弹出“新建项目”对话框,在该对话框中,可以选择不同的编程语言来创建各种项目,这些语言将共享Visual https://www.360docs.net/doc/0911667848.html,的集成开发环境,如图1-3所示。

图1-3 “新建项目”对话框

要创建新的Visual C#.NET项目,需要在该对话框的“项目类型”窗口中选中“Visual C#项目”,在“模板”窗口中选中“Windows应用程序”。然后在“位置”组合框中输入项目的保存位置(路径),在“名称”文本框中输入项目名称,如图1-3所示。然后单击“确定”按钮,将会出现如图1-4所示的Visual https://www.360docs.net/doc/0911667848.html,集成开发环境。

第1章C#语言基础

5

图1-4 Visual https://www.360docs.net/doc/0911667848.html,开发环境

(3)“解决方案资源管理器”窗口

项目可以视为编译后的一个可执行单元,可以是应用程序、动态链接库等。而企业级

的解决方案往往需要多个可执行程序的合作,为便于管理多个项目,在Visual https://www.360docs.net/doc/0911667848.html,

集成环境中引入了解决方案资源管理器,用来对企业级解决方案设计的多个项目进行管理,如图1-5所示。

(4)“类视图”窗口

“类视图”窗口以树形结构显示了当前项目中的所有类,并在类中列出成员变量和成

员函数。每一个类首先列出带紫色图标的成员函数,然后列出带有蓝色图标的成员变量。

每个成员的图标左边都有一个标志,以表示成员类型和存储类别的信息,保护类型成员图

标旁边的标志为一把钥匙,私有成员的标志是一把锁,而公有成员图标旁边没有标志。如

图1-6所示。

图1-5 “解决方案资源管理器”窗口图1-6 “类视图”窗口

C#程序设计与案例教程

6

在“类视图”窗口中双击类名,会在主工作区中打开这个类的头文件,显示出类的声明;而双击某个类的成员,则主工作区中会显示该成员的定义代码。

(5)“工具箱”窗口

“工具箱”窗口包含了可重用的控件,用于定义应用程序。使用可视化的方法编程时,可在窗体中“拖放”控件,绘制出应用程序界面。“工具箱”中的控件分成几组,如“数据”

组、“组件”组、“Windows窗体”组。单击组名称可展开一个组。如图1-7所示。

图1-7 “工具箱”窗口

(6)“属性”窗口

“属性”窗口用于设置控件的属性。属性定义了控件的信息,如大小、位置、颜色等。

“属性”窗口左边一栏显示了控件的属性名,右边一栏显示属性的当前值。如图1-8所示。

控件选择

事件图标

属性图标

属性名属性值

属性描述

图1-8 “属性”窗口

1.1.4初识C#程序

C#.NET主要用于开发三类程序:控制台程序、Windows程序和https://www.360docs.net/doc/0911667848.html,程序。C#程

第1章C#语言基础

7序的扩展名为.CS,使用编译器CSC.EXE可编译成可执行文件。

1.控制台程序

【案例1-1】一个简单的控制台程序。

程序运行后显示“欢迎XXX进入C#世界!”,运行结果如图1-9所示。

图1-9 欢迎进入C#世界

【技术要点】

C#应用程序包含Main方法,它是C#应用程序执行的起点。在该函数中通过系统类Console的方法WriteLine(),可以在屏幕上输出字符串。

【实现步骤】

(1)启动Visual https://www.360docs.net/doc/0911667848.html,。

(2)选择主菜单“文件”→“新建”→“项目”,打开“新建项目”对话框。

(3)在“新建项目”对话框中的左窗格选择“Visual C#项目”,右窗格选择“控制台应

用程序”,然后指定项目名称和存放位置,单击“确定”按钮。

(4)在代码编辑窗口中可看到自动生成的程序代码框架,在Main函数中加入代码。

(5)选择主菜单“生成”→“生成Welcome”,进行编译和连接。

(6)选择“调试”→“启动”执行程序。

【程序代码】

using System;

namespace Welcome

{

///

///Class1 的摘要说明

///

class Class1

{

///

///应用程序的主入口点

///

[STAThread]

static void Main(string[] args)

{

Console.WriteLine("请输入你的名字:");

string username= Console.ReadLine();

Console.WriteLine("欢迎{0}进入C#世界!",username);

C#程序设计与案例教程 8

}

}

}

程序中的第一行语句“using System;”的作用是导入命名空间,该语句类似于C 和C++中的#include 命令。导入命名空间之后,就可以自由使用其中的元素了。System 是.NET 框架提供的最基本的命名空间之一,Console 是System 命名空间中包含的系统类库中已定义的一个类。利用该类的ReadLine()和WriteLine()方法可以进行输入输出。

{0}代替WriteLine 方法的参数表中紧随格式串后的第一个变量。可以用该技术格式化多个变量。例如:

Console.WriteLine( "Hello {0} {1}, from {2}", strFirstname, strLastname, strCity );

namespace 语句声明了一个命名空间Welcome 。每个C#程序可以包含一个或多个命名空间。类、结构、接口、枚举、委托等类型都包含在命名空间中。

class 为定义类的关键字,类的名称为Class1。C#程序的基本单位是类。

程序中的语句“static void Main(string[] args);”为类Class1声明了一个主方法。在C#程序中,程序的执行总是从Main()方法开始的,一个程序只能包含一个主方法。

可以通过Windows 记事本来编写程序。保存的文件名为Welcome.cs 。然后从开始菜单中选择“程序”→“Microsoft Visual https://www.360docs.net/doc/0911667848.html, 2003”→“Visual https://www.360docs.net/doc/0911667848.html, 工具”→“Visual https://www.360docs.net/doc/0911667848.html, 命令行提示”命令,将会出现命令行。在命令行中输入命令“CSC 盘符\目录\Welcome.cs ”,回车即可生成可执行文件Welcome.exe 。执行Welcome 即可看到运行结果。

2.图形界面程序

【案例1-2】 第一个图形界面程序。

设计一个程序,界面上用一个文本框输入姓名,单击“确定”按钮后,在文本框中显示“欢迎XXX 进入C#世界!”,运行结果如图1-10所示。

【技术要点】

在按钮的单击事件private void button1_Click (object sender, System.EventArgs e )中取出文本框中的内容,然后

与“欢迎”及“进入C#世界!”相连,再赋给文本框的Text

的属性。

【实现步骤】

(1)启动Visual https://www.360docs.net/doc/0911667848.html, 。

(2)选择主菜单“文件”→“新建”→“项目”,打开“新建项目”对话框。 (3)在“新建项目”对话框中的左窗格选择“Visual C#项目”,右窗格选择“Windows 应用程序”,指定项目名称和存放位置后,单击“确定”按钮。

(4)从工具箱中选择文本框,然后抬起鼠标,在窗体的适当位置按下鼠标左键后拖动到适当大小,抬起左键。利用类似的方法再放置一个按钮。

(5)在属性窗口中将文本框的Text 属性清空,将按钮的Text 属性改为“确定”。

图1-10 第一个图形界面程序

第1章C#语言基础

9

(6)双击按钮,在按钮的单击事件中加入代码。

(7)选择工具栏中的运行程序。

【程序代码】

using System;

using System.Drawing;

using System.Collections;

using https://www.360docs.net/doc/0911667848.html,ponentModel;

using System.Windows.Forms;

using System.Data;

namespace WindowsWelcome

{

///

///Form1 的摘要说明

///

public class Form1 : System.Windows.Forms.Form

{

private System.Windows.Forms.TextBox textBox1;

private System.Windows.Forms.Button button1;

///

///必需的设计器变量

///

private https://www.360docs.net/doc/0911667848.html,ponentModel.Container components = null;

public Form1()

{

//

//Windows 窗体设计器支持所必需的

//

InitializeComponent();

//

//TODO: 在 InitializeComponent 调用后添加任何构造函数代码

//

}

///

///清理所有正在使用的资源

///

protected override void Dispose( bool disposing )

{

if( disposing )

{

if (components != null)

{

components.Dispose();

}

}

C#程序设计与案例教程

10

base.Dispose( disposing );

}

#region Windows 窗体设计器生成的代码

///

///设计器支持所需的方法——不要使用代码编辑器修改此方法的内容

///

private void InitializeComponent()

{

this.textBox1 = new System.Windows.Forms.TextBox();

this.button1 = new System.Windows.Forms.Button();

this.SuspendLayout();

//

//textBox1

//

this.textBox1.Location = new System.Drawing.Point(56, 32);

https://www.360docs.net/doc/0911667848.html, = "textBox1";

this.textBox1.Size = new System.Drawing.Size(168, 21);

this.textBox1.TabIndex = 0;

this.textBox1.Text = "";

//

//button1

//

this.button1.Location = new System.Drawing.Point(112, 72);

https://www.360docs.net/doc/0911667848.html, = "button1";

this.button1.Size = new System.Drawing.Size(56, 24);

this.button1.TabIndex = 1;

this.button1.Text = "确定";

this.button1.Click += new System.EventHandler(this.button1_ Click);

//

//Form1

//

this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);

this.ClientSize = new System.Drawing.Size(280, 117);

this.Controls.Add(this.button1);

this.Controls.Add(this.textBox1);

https://www.360docs.net/doc/0911667848.html, = "Form1";

this.Text = "Form1";

this.ResumeLayout(false);

}

#endregion

///

///应用程序的主入口点

///

[STAThread]

第1章C#语言基础

11

static void Main()

{

Application.Run(new Form1());

}

private void button1_Click(object sender, System.EventArgs e)

{

textBox1.Text="欢迎"+textBox1.Text+"进入C#世界!";

}

}

}

本案例的实现步骤反映了一个Windows应用程序建立的一般步骤。除事件过程的代码

是手工加入的外,其余代码都是由设计器生成的。程序的组成大体包括:

(1)导入必要的命名空间

using System.Drawing;

using System.Collections;

using https://www.360docs.net/doc/0911667848.html,ponentModel;

using System.Windows.Forms;

using System.Data;

(2)声明命名空间

namespace WindowsWelcome

(3)声明System.Windows.Forms的派生类。在该类中主要包含:

?控件的定义。

?构造函数Form1():调用InitializeComponent建立界面。

?清理资源函数Dispose():窗口关闭时调用,用于清理所有正在使用的资源。

?初始化函数InitializeComponent():建立控件,设置控件属性,生成界面。

?主函数Main():程序的运行起点,用于启动程序,建立窗口对象。

?单击事件处理函数button1_Click():处理按钮单击事件。

1.1.5命名空间

命名空间就像在文件系统中用一个文件夹容纳多个文件一样,可以看作某些类的一个

容器。通过把类放入命名空间可以把相关的类组织起来,并且可以避免命名冲突。命名空

间既用于程序的“内部”组织系统,也用于“外部”组织系统(一种向其他程序公开自己

拥有的程序元素的方法)。

命名空间可以包含其他的命名空间。这种划分方法的优点类似于文件夹。与文件夹不

同的是,命名空间只是一种逻辑上的划分,而不是物理上的存储分类。

1.命名空间声明

namespace关键字用于声明一个命名空间。格式如下:

C#程序设计与案例教程

12

namespace name[.name1] ...] {

类型声明

}

其中name,name1为命名空间名,可以是任何合法的标识符。命名空间名可以包含句点。

例如:

namespace N1.N2

{

class A{}

class B()

}

等同于:

namespace N1

{

namespace N2

{

class A{}

class B()

}

}

在一个命名空间中,可以声明一个或多个下列类型:类、接口、结构、枚举、委托。

即使未显式声明命名空间,也会创建默认命名空间。该未命名的命名空间(有时称为全局命名空间)存在于每一个文件中。全局命名空间中的任何标识符都可用于命名的命名空间中。命名空间隐式具有公共访问权,并且这是不可修改的。

2.命名空间的使用

使用using指令能够引用给定的命名空间或创建命名空间的别名(using 别名)。

using [别名= ]类或命名空间名;

下面的示例显示了如何为类定义using 指令和using 别名:

using System; //using directive

using AliasToMyClass = NameSpace1.MyClass; //using alias for a class namespace NameSpace1

{

public class MyClass

{

public override string ToString()

{

return "You are in NameSpace1.MyClass";

}

第1章C#语言基础

13

}

}

namespace NameSpace2

{

class MyClass

{ }

}

namespace NameSpace3

{

using NameSpace1; //using directive

using NameSpace2; //using directive

class Test

{

public static void Main()

{

AliasToMyClass somevar = new AliasToMyClass();

Console.WriteLine(somevar);

}

}

}

3.系统定义的命名空间

命名空间分为两类:用户定义的命名空间和系统定义的命名空间。用户定义的命名空

间是在代码中定义的命名空间。表1-1列出了C#常用的命名空间。

表1-1C#常用的命名空间

C#程序设计与案例教程

14

1.2 C#语言基础

1.2.1基本编码规则

1.标识符和保留字

程序员对程序中的各个元素加以命名时使用的命名记号称为标识符,如:变量名、类名、方法名等。

C#语言中,标识符是以字母、下划线(_)或@开始的一个字符序列,后面可以跟字母、下划线、数字。C#语言区分大小写。一般变量名首字母小写,后面各单词首字母大写;

而常量、类名、方法、属性等首字母大写。

具有专门的意义和用途,不能当作一般的标识符使用的标识符称为保留字,也称为关键字,如continue、for、new、switch、default等。C#语言中的保留字均用小写字母表示。

如果一定要用C#保留字作标识符,应使用@字符作为前缀。

2.书写规则

?每条语句以“;”结尾。

?空行和缩进被忽略。

?多条语句可以处于同一行,之间用分号分隔即可。

3.注释

有三种类型的注释语句:

//注释一行

/*一行或多行注释*/

///XML注释方式

“///”符号是一种特殊的注释方式,可以利用Visual https://www.360docs.net/doc/0911667848.html,开发工具将“///”注释转换为XML文件。XML常使用的标签有:

1.2.2 数据类型

1.C#语言中的数据类型划分

C#语言的数据类型按内置和自定义划分,有内置类型和构造类型。如图1-11所示。内置类型是C#提供的、无法再分解的一种具体类型。每种内置类型都有其对应的公共语言运行库类型(或称为.NET数据类型)。构造类型是在内置类型基础上构造出来的类型。表1-2

第1章C#语言基础

15

列出了C#包含的内置类型。

object

string

byte, sbyte

int, uint

short, ushort

long, ulong

char

bool

float

double

decimal

内置类型

构造类型枚举数组结构集合类接口委托

数据类型

图1-11 按内置和自定义划分的类型表1-2 内置数据类型

C#程序设计与案例教程 16

按数据的存储方式划分,有值类型和引用类型,如图1-12所示。值类型在其内存空间中包含实际的数据,而引用类型中存储的是一个指针,该指针指向存储数据的内存位置。值类型的内存开销小,访问速度快,但是缺乏面向对象的特征;引用类型的内存开销大(在堆上分配内存),访问速度稍慢。

2.值类型

各种值类型总是含有对应该类型的一个值。每当把一个值赋给一个值类型时,该值实际上被复制了。

相比,对于引用类型,仅是引用被复制了,而实际的值仍然保留在相同的内存位置。C#的值类型可以归类如下:

? 简单类型(Simple types )

? 枚举类型(Enumeration types ) ? 结构类型(Structure types )

C#的简单类型具有如下特性:第一,它们都是.NET 系统类型的别名;第二,由简单类型组成的常量表达式仅在编译时而不是运行时受检测;最后,简单类型可以按字面被初始化。C#简单类型包括:整数类型、布尔类型、字符类型(整型的一种特殊情况)、实数类型以及枚举类型。

(1)整数类型

C#中定义了8种整数类型:字节型(sbyte )、无符号字节型(byte )、短整型(short )、无符号短整型(ushort )、整型(int )、无符号整型(uint )、长整型(long )、无符号长整型(ulong )。表示方法有:

? 十进制整数 如:123,– 456,0。

? 十六进制整数 以0x 或0X 开头,如:0x123表示十进制数291,– 0X12表示十进制数–18。

? 无符号整数 可以用正整数表示无符号数,也可以在数字的后面加上U 或u ,如125U 。 ? 长整数 可以在数字的后面加上L 或l ,如125L 。 (2)实数类型 有三种实型:float 、double 、decimal 。其中double 的取值范围最广,decimal 取值范围其次,但它的精度高。实型数据的表示形式有:

? 十进制数形式 由数字和小数点组成,且必须有小数点,如:0.123, 1.23, 123.0。 ? 科学计数法形式 如:123e3或123E3。

? float 型的值 在数字后加f 或F ,如:1.23f 。 ? double 型的值 在数字后加D 或d ,如:12.8d 。 ? decimal 型的值 在数字后加M 或m ,如:99.2m 。 (3)字符类型

字符型变量类型为char ,它在机器中占16位,其范围为0~65535,每个数字代表一个Unicode 字符。字符一般是用单引号括起来的一个字符,如'a','A',也可以写成转义字

所有的数值类型 boolean 、char 类型 所有的枚举类型 结构类型 值类型

数组

string 类型 类类型 接口类型 委托类型

数据类型

图1-12 按数据的存储方式划分的类型

第1章C#语言基础

17

符、十六进制转换码或Unicode表示形式。此外,整数也可以显式地转换为字符。常用的

转义字符如表1-3所示。

表1-3常用的转义字符

例如:

char ch1='A';

char ch2='\x0058'; //十六进制

char ch3=(char)88; //整数转换

char ch4='\u0058'; //Unicode形式

char ch5='\r'; //转义字符

(4)布尔类型

布尔型数据只有true和false两个值,且它们不对应于任何整数值,在内存中占用4

个字节。与C和C++相比,在C#中,true值不再为任何非零值。

(5)枚举类型

枚举(enum)是值类型的一种特殊形式,它从System.Enum继承而来,并为基础类型

的值提供替代名称。枚举类型有名称、基础类型和一组字段。基础类型必须是一个除char 类

型外的内置的有符号(或无符号)整数类型(如Byte、Int32或UInt64)。

enum关键字用于声明枚举类型,基本格式如下:

[修饰符] enum 枚举类型名[: 基类型] { 由逗号分隔的枚举数标识符 } [;]

枚举元素的默认基础类型为int。默认情况下,第一个枚举数的值为0,后面每个枚举

数的值依次递增1。例如:

enum Days {Sun,Mon,Tue,Wed,Thu,Fri,sat}; //Sun为0,Mon为1,Tue为2,……

enum Days {Mon=1,Tue,Wed,Thu,Fri,Sat,Sun}; //第一个成员值从1开始

enum MonthNames {January=31,February=28,March=31,April=30};//指定值

在定义枚举类型时,可以选择基类型,但可以使用的基类型仅限于long、int、short

和byte。例如:

enum MonthNames : byte { January=31, February=28, March=31, April=30 };

注意:下列写法是错误的:

enum num:byte{x1=255,x2};

C#程序设计与案例教程

18

这里因为x1=255,x2应该是256,而byte型的范围是0~256。

【案例1-3】定义一个职称枚举类型,输出类型中所有枚举常量。

程序运行后显示结果如图1-13所示。

图1-13 职称枚举型案例运行界面

【技术要点】

定义一个职称枚举类型,有4个枚举常量Prof(教授),AProf(副教授),Lect(讲师),TAssi(助教)。再定义一个方法,该方法有一个参数用来接受一个枚举类型的值,然后返回一个字符串。

【程序代码】

using System;

namespace Exam1_3

{

class Class1

{

enum ZC{Prof,AProf,Lect,TAssi};

static string getZCAndValue(ZC z)

{

string result;

switch(z)

{

case ZC.Prof:

result=String.Format("Prof={0}",(int)z);

break;

case ZC.AProf:

result=String.Format("AProf={0}",(int)z);

break;

case ZC.Lect:

result=String.Format("Prof={0}",(int)z);

break;

case ZC.TAssi:

result=String.Format("Prof={0}",(int)z);

break;

default:

result="非法职称";

break;

}

第1章C#语言基础

19

return result;

}

static void Main(string[] args)

{

Console.WriteLine(getZCAndValue(ZC.Prof));

Console.WriteLine(getZCAndValue(ZC.AProf));

Console.WriteLine(getZCAndValue(ZC.Lect));

Console.WriteLine(getZCAndValue(ZC.TAssi));

}

}

}

(6)结构类型

结构类型是用户自己定义的一种类型,它是由其他类型组合而成的,可包含构造函数、

常数、字段、方法、属性、索引器、运算符、事件和嵌套类型的值类型。结构在几个重要

方面不同于类:结构为值类型而不是引用类型,并且结构不支持继承。

用结构的主要思想是用于创建小型的对象,如Point和FileInfo等等。这可以节省内存,

因为没有如类对象所需的那样有额外的引用产生。例如,当声明含有成千上万个对象的数

组时,这会引起极大的差异。

struct关键字用于声明枚举类型,基本格式如下:

struct结构类型名

{

成员声明;

}

下面的例子中包含一个命名为IP的简单结构,它表示一个使用byte类型的4个字段

的IP地址。

using System;

struct IP

{

public byte b1,b2,b3,b4;

}

class Test

{

public static void Main()

{

IP myIP;

myIP.b1 = 192;

myIP.b2 = 168;

myIP.b3 = 1;

myIP.b4 = 101;

Console.Write("{0}.{1}.",myIP.b1,myIP.b2);

Console.Write("{0}.{1}",myIP.b3,myIP.b4);

C#程序设计与案例教程

20

}

}

3.引用类型

和值类型相比,引用类型不存储它们所代表的实际数据,但它们存储实际数据的引用。

在C#中引用类型主要包括object类型、类、接口、string类型、数组以及委托。这里先介绍一下object,其他内容在后续的章节中介绍。

object类是所有类的基类,C#中所有的类型都是直接或间接地从object继承而来。因为它是所有对象的基类,所以可把任何类型的值赋给它,例如,一个整型:

object theObj = 123;

当一个值类型被装箱(作为一个对象利用)时,对象类型就被使用了。这一章稍后会讨论到装箱和拆箱。

1.2.3 字符串类(string)

它是System.String类型的别名,表示一个Unicode字符序列。一个字符串可存储约20亿(231)个Unicode字符。

1.字符串的建立

(1)通过直接赋值建立字符串。例如:

string str="Hello";

也可以写成:

String str="Hello";

在C#中,可以在字符串前边加上字符@表示该字符串中的所有字符是其原来的含义,而不是解释为转意字符。例如:

string str= "C:\\test\\first.cs";

也可以表示为:

string str=@"C:\test\first.cs";

(2)使用字符型数组建立字符串。例如:

char []ch={'C','h','i','n','a'};

string str=new String(ch) //值为"China"

string str1=new String(ch,2,2); //值为"in"

2.字符串的表示格式

可以使用Format方法将字符串表示为规定格式。规定格式的一般形式为:

C语言入门手册

●C语言入门手册 ●这里不是教你什么知识,而是给你澄清一些资料,只给对编程一窍不通的或 者刚入门的人看。如果你尚未学习或者才学习不够一天,一定要看这手册,这份手册已经讲述的知识,我们不会在版面给予回答,此手册我会尽量保持准确,但如有不正确,请指正,我也会不断更新此手册 ●Q:什么是C? ●A:一门面向过程的计算机语言,发明至今已经差不多有三十年历史,由于 它相对其他高级语言高效,运行效率又比较接近低级语言,所以至今仍得到广泛的引用,无论你用windows还是linux,你现在看到东西的底层都是用C 写的,而大部分的网络协议都是用C实现的,画面最漂亮的游戏用C实现的,工业控制程序也是用C实现的。C不是万能,也不是垃圾,只是一门某些方面适用,某些方面不适用的语言 ●Q:什么是C++? ●A:一门面向对象的计算机语言,发明至今已经有二十多年了。由于面向对 象编程对程序架构有较好的帮助,因为比较适合构建大型的系统(当然,学术界对此存在争论),但无论如何,C++由于和C一样接近底层,而且又面向对象,所以也得到广泛的使用。C++不是万能,也不是垃圾,只是一门某些方面适用,某些方面不适用的语言,不要向某一个笨蛋一样认为c + 类== c++ ●Q:TC,VC,BC,BCB是什么?有什么区别?谁好? ●A:它们都是开发C/C++的开发环境,是软件。它们是不同时期由不同公司 发行的软件Turbo C ,Borland公司在八十年代末期发行的C语言的开发环境Turbo C++,Borland公司在八十年代末九十年代初发行的C++语言的开发环境Visual C++,Microsoft公司在九十年代至今发行的C/C++开发环境Borland C++,Borland公司在九十年代中发行的C/C++开发环境Borlan C++ Builder,Borland公司在九十年代后期至今开发的C/C++开发环境,与其他开发环境不用的是它属于快速应用程序开发(RAD),可以让你不写代码就能建立程序,当然它的运行效率见仁见智没有什么是万能的,不同场合用不同的东西而且C/C++还有很多开发环境,譬如gcc,watcom C++,Dev C/C++ ●Q:什么语言/开发环境最好? ●A:没有最好,只有最适用某方面 ●Q:需要什么基础才能学C/C++ ●A:至少学过幼儿园语文,小学英语,小学数学才能学,所以先确定你拥有 小学学历,然后就能学了至于学习C++前是否需要学C,C++的发明者认为不用,但见仁见智 ●Q:如何更有效的学习C/C++? ●A:不断的看书+实践,先把书上的练习题做完再说,务必记住不要钻牛角尖, 很多初学者经常犯这样的错误,不要盲目的提出问题,现在看来是问题其实在以后的实践和学习中都会慢慢理解的,任何东西都需要一个过程。万万不可浮躁。 ●Q:TC能开发windows软件吗? ●A:不能,因为不同系统,生成的程序格式不同 ●Q:要多久才能成为高手? ●A:当你不再问这个问题的时候,总是会有比你技术高的人,也许你在你生 活的环境中没有,的确可以说你在这个小范围是高手,但是再在别的地方一定会有比你厉害的人只是你没有接触到而已 ●Q:学C/C++有什么用? ●A:先想想你为了什么而学,想不到就不要学 ●Q:学完C/C++又能怎样 ●A:没怎样,学是为了使用服务的,只证明你会一门语言,但不等于你会开 发软件。就像学外语,为的是跟外国人交际,但如果你不懂交际,即使精通英语,法语,日语,朝鲜语,阿拉伯语,西班牙语……还是不会跟人交际。 你应该继续学习软件开发的知识,包括数据结构,算法,软件工程等等,还有要提高数学水平,譬如微积分,离散数学,矩阵,概率,统计,数值分析。 ●Q:我有很多不懂,怎么办? ●A:查帮助,搜索引擎。最著名的帮助文档叫MSDN,我们主要使用其光盘发 行版,D版可以从电脑城买,正版可以去微软订购,如果没有光盘可以去https://www.360docs.net/doc/0911667848.html,查询。 ●二、开始学习了 ●Q:我在TC看到缺少cos.obj的提示,为什么?

C语言基础知识_测试题

C语言程序设计基础测试题 一、单选 [1] 下面叙述中错误的是____。 A. 复合语句中定义的函数只在该复合语句中有效 B. return( )语句中的括号中,可以是变量,常量或有确定值的表达式 C. 形式参数也是局部变量 D. 主函数中定义的变量在整个程序中都是有效的 [2]下列说法中正确的是____。 A.带参数的宏定义中的参数是没有类型的 B.宏展开将占用程序的运行时间 C.宏定义命令是C语言中的一种特殊语句 D.使用#include命令包含的头文件必须以“.h"为后缀 [3.] 若函数的形参为一维数组,则下列说法中正确的是____。 A.调用函数时的对应实参必为数组名 B.形参数组可以不指定大小 C.形参数组的元素个数必须等于实参数组的元素个数 D.形参数组的元素个数必须多于实参数组的元素个数 [4]. 系统的标准输出设备是____。 A.键盘 B.硬盘 C.内存 D.显示器 [5] 下面叙述中正确的是____。 A.全局变量在定义它的文件中的任何地方都是有效的 B.全局变量在程序的全部执行过程中一直占用内存单元 C. C语言的switch语句中case后可为常量或表达式或有确定值的变量及表达式 D. 说明函数时必须明确其参数类型和返回类型 [6]. C程序的基本结构单位是____。 A.文件 B.语句 C.函数 D.表达式 [7] 对于定义,char *aa[2]={"abcd","ABCD"},选项中说法正确的是____。 A.aa数组元素的值分别是"abcd"和"ABCD" B.aa是指针变量,它指向含有两个数组元素的字符型一维数组 C.aa数组的两个元素分别存放的是含有4个字符的一维字符数组的首地址 D.aa数组的两个元素中各自存放了字符'a'和'A'的地址 [8]. 任何一个C语言的可执行程序都是从____开始执行的。 A.程序中的第一个函数 B.main( )函数的入口处

C语言一些常用语句

C语言一些常用语句 2010-03-25 09:55 423人阅读评论(0) 收藏举报一break 1. break语句形式:break; 2. break语句功能: A. switch语句中,break语句会终止其后语句的执行,退出switch语句。 B. 使一个循环立即结束,也就是说在循环中遇到break语句时,循环立即终止, 程序转到循环体后的第一个语句去继续执行。 3. 注: A. break语句在循环中使用时,总是与if一起使用,当条件满足(或不满足) 时,负责退出循环。 B. 如果循环体中使用switch语句,而break出现在switch语句中,则它只用 于结束switch,而不影响循环。 C. break语句只能结束包含它的最内层循环,而不能跳了多重循环。 4. 例: break语句的执行只能从while循环中退出,继续执行for循环的其它语句 而不是退出外层循环。 for() { : : while()

{ : : if() break; : : } : : } 二。continue 1.continue语句形式:continue; 2.continue语句功能:它只能出现在循环体中,其功能是立即结束本次循环, 即遇到continue语句时,不执行循环体中continue后的语句,立即转去判断循环条件是否成立。 3.Continue与break语句的区别: continue只是结束本次循环,而不是终止整个循 环语句的执行,break则是终止整个循环语句的 执行,转到循环语句后的下一条语句去执行。 程序表达式及流程图如下:

(1.) while(表达式1) (2.)while(表达式1) { { : : If(表达式2) break; if(表达式2) continue; : : } } 三.goto 1.goto语句形式:goto语句是无条件转向语句,其一般形式为: goto 语句标号; 2.功能:goto语句往往用来从多重循环中跳出。它在解决一些特定问题时很方便,但由于goto语句难于控制,尽量少用。 3.例: IN: For() { : : Goto IN; }

C语言基础知识

常量和变量 1.常量: 程序执行过程中,值不变的量。 3 ,'a' 变量:值可以改变的量。 一个变量有一个名字,在内存中有一定的存储单元,存放变量的值。 2.常量类型: a.整型:12,0,-3 b.实型:4.6,-1.2 c.字符型: 'a','d' d.符号常量: #define PRICE 30 (PRICE不能再被赋值且要大写) 3.变量: 先定义,后使用。一个变量只能被指定为一确定类型。 4.标识符:标识变量名,符号常量名,函数名,数组名,类型名,文件名的有效字符数列。 a.由字母、数字、下划线三种字符组成,第一个字符必须为字母或下划线。 b.大写字母、小写字母被认为是两个不同的字符。 c.长度一般小于8个。 数据类型 一.整型: 1.整型常量 a.十进制:12,-3,0 b.八进制:以0开头。 c.十六进制:以0x开头。 2.整型变量 a. int -32768——32767 b. short int -32768——32767 c. long int d. unsigned int 0——65535 e. unsigned short 0——65535 f. unsigned long int、short int、long int 第一位为符号位 0000001 (0为正,1为负) unsigned 第一位不是符号位 0000001 所以int型和unsigned型的000001不是同一个值。 二.实型: 1.实型常量:

a.十进制数:数字和小数点组成。0.12,.12,12.0,0.0 b.指数:e之前必须有数字,e后面必须为整数。12e3 2.实型变量: a.单精度:float 7位有效数字 111111.1可,111111.11不可。 b.双精度:double 15—16位有效数字。 三.字符型: 1.字符常量: a. 'a' , 'x' , '*' ,'$' 。 b. 转义字符:‘\n'换。 '\t'从第九列开始。'\r'回车。 '\b'退一格。 2.字符变量: char char='a' 一个字符变量在内存占一个字节。 。将一个字符常量放到一个字符变量中,并不是把该字符本身放到内存单元中去,而是将该字符的ASC码 放到存储单元中,所以字符型数据和整型数据之间可以通用。一个字符型数据既可以以字符形式输出, 又可以以整数形式输出。 四.字符串常量: "how are you", "a","&12" 。不能把一个字符串赋给一个字符变量。 char c='a'对,char c="how" 错。 。'a' :在内存中存a。 “a”:在内存中存a\0。 ‘\0’是C语言中判断字符串是否结束的标志。 变量赋初值 a. int a=3; float f=7.2; char c='a'; b. int a,b,c=5; 相当于 int a,b,c; c=5; c. int a=3;b=3;c=3; 不可写: int a=b=c=3;

《C语言程序设计》基本知识点

《C语言程序设计》教学基本知识点 第一章C语言基本知识 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.表达式 表达式是由常量、变量、函数,通过运算符连接起来而形成的一个算式。一个常量,一个变量或一个函数都可以看成是一个表达式。 表达式的种类有: 算术表达式、关系表达式、逻辑表达式、赋值表达式、字位表达式、强制类型转换表达式、逗号

C语言从入门到精通所需的7本书

C语言从入门到精通所需的7本书 作者:王霸羔子 1.C primer plus C primer plus作为一本被人推崇备至的c入门经典,C primer plus绝非浪得虚名。应该算得上C教材里最好的入门书了。 在知识广度上,很少有书能匹及。它能为你系统学习c提供一个良好的平台。作者对c 的见解精辟。在娓娓叙述的同时,作者辅以大量程序以分析。它让我对C有了更加系统的全新认识。决非国人所写的那些公理化的教条说教,我觉得作者把自己的心血全部吐露。书很厚,近700页,却不没有让我觉得任何的烦琐。甚至是兴趣盎然。我把上面所有的课后题目都做了。 最为重要的是,看完这本书后,我再也不觉得c很高深枯燥无味了。如果你问我,你最大收获是什么。我会告诉你,兴趣! 2.The C programming language

拿到这本薄薄的书,很多人开始怀疑,C语言是这么几百页能讲清楚的么。看完这本书,我想答案已经很明了,却真的让人感到震憾。什么是好书?无法删减的书才是真正的好书。 K&R的书一如C语言的设计理念:简单而高效里面的习题建议都认真做一遍,而且是在linux下用vi来做,用makefile来编译,用shell脚本来进行测试,本来第八章的题就是和linux 相关的计算机的大学生们不应只会在WINDOWS下用VC来编程,而都应该在linux环境下进行程序设计,因为linux本身就是为开发者准备的操作系统。 3. C和指针 这本书最大的特点就是和指针结合在一起进行讲解,通过一些经典的C例题对所学的知识进行巩固,对指针的基础和深入的探讨,有助于初学者更好的理解C语言,还有明白C 的存储机制。我之前买了《C语言详解》和《C Primer Plus》结合这本书一起学习,可以说是完美的,希望每个热爱C语言的人能够拥有这本书。 我在这里推荐给所有想学好C语言的朋友! 4.C专家编程

C语言基础知识归纳

C语言基础知识 1.每个C程序有且只有一个主函数main(),且程序必须从main() 函数开始执行,并在main()函数中结束。 2.在C语言中,用e来表示科学计数法时,规定在e的前面必 须有数字,后面必须为整数。 3.用单引号括起来的一个字符常量只能存放一个字符;C语言中 没有字符串变量,只能用字符数组来存储字符串。 4.外部变量在编译时由系统分配永久的内存空间,所以外部变 量的类型不是自动存储类别。 5.在一个函数内的复合语句中定义的变量,只能在这个复合语 句范围内有效。 6.用sizeof(int)计算int类型数据的字节数。 7.C语言运行时,首先系统检查语法的正误,再运行程序的语法; C语言中,可以在一个函数中嵌套一个函数,但是不能在一个函数中定义一个函数;只有在函数外部定义的函数才是外部函数;C语言的子程序有过程和函数两种。 8.预处理命令行的位置没有规定,只是习惯放在前面;在源文 件中的可以有多条预处理命令,但一行只能写一条;宏名的大写只是习惯性的表示;宏替换不仅不占用运行时间还不分配内存空间。 9.feof函数的作用是检查文件是否结束,当结束时返回的 值为非零,否则为零。

10.当定义了数组后,在给其赋值时,不能直接把字符串赋给数 组名。 11.在赋值表达式中,赋值运算符“=”右侧不能为表达式;在 求余运算符中的两侧都必须为整型;在强制类型转换时,类型名应用括号括起来。 12.静态局部变量,只有当程序结束后,其值才释放。 13.当调用函数时,实参是一个数组名,则向函数传送的是数组 每一个元素的地址。 14.算法的特点为有零个或多个输入,有一个或多个输出,当相 同的输入时,其结果相同;算法正确的程序最终一定会结束。 15.在C语言中,预处理命令行都以“#”开头;当需要时才用 #include;预处理的作用就是实现宏定义和条件编译。 16.当数组元素的下标超出了定义的下标范围时,系统不给出“下 标越界”的字样,而是得出错误的答案,因此在编程时务必检查下标是否越界。 17.共用体变量不能作为函数的参数,也不能使函数带回共用体 变量。 18.指向函数的指针变量的定义形式为:数据类型(*指针变量) ();,因此其为指向函数的指针变量。 19.用C语言编写的代码程序是源程序,只有通过编译、连接才 能进行。 20.在说明为static时,其生存期得到延长,而其作用域并没有改

第1章 C语言基本知识

第一章C语言基本知识 一、C语言的产生和发展 1、C语言的发展源于人们希望用高级语言编写操作系统。(C-BCPL第二字母)ALGOL60(高级语言)->CPL(硬件支持)-BCPC->B->C->标准C->ANSI C->ISO C 2、语言既具有高级语言特性,又具有低级语言特性-中级语言。 二、C语言的特点 1、语言简明、紧凑、使用方便、灵活。 2、运算符丰富。 3、数据结构丰富,具有现代化语言的各种数据结构。 4、具有结构化的控制语句。 5、语法限制不太严格,程序设计自由度大。 6、C语言允许直接访问物理地址,能实现汇编语言的大部分功能,可以直接对硬件进行操作。 7、生成目标代码质量高,程序执行效率高。 8、用C语言写的程序可移植性好。 三、C程序的基本规则 1、C程序由函数构成。(亦称为函数语言。) 2、C程序中每条语句都用一个分号结尾,分号是C程序语句的必要组成部分,语句最后的分号不能省略。 3、每个C程序都有一个主函数(main()),且只有一个主函数。并且程序是从主函数开始执行的。 4、调用C语言的标准函数通常要在程序开头使用包含命令include,C程序中的命令不用分号结尾。 5、C程序中的变量必须先定义,后使用。 6、C语言以小写字母作为基本书写形式,并且C语言要区分字母的大小写,同一字母的大小写被作为两个不同的字符。 7、C程序中可以用“/*……*/”的形式加注释。 8、C程序书写格式自由,一行内可以写几条语句,一条语句可以写在多行。 9.一个函数包含两个部分: (1)函数的说明部分。包括函数名,函数类型,函数属性,函数参数名等。 如:int max(x,y) int x,y; 函数名后必须跟一对圆括弧,函数参数可以没有,如:main()。 (2)函数体。

C语言基础知识(详细版)

C语言程序的结构认识 用一个简单的c 程序例子,介绍c 语言的基本构成、格式、以及良好的书写风格,使小伙伴对 c 语言有个 初步认识。 例1:计算两个整数之和的c 程序: #include main() { int a,b,sum; /* 定义变量a,b ,sum 为整型变量*/ a=20; /* 把整数20 赋值给整型变量a*/ b=15; /* 把整数15 赋值给整型变量b*/ sum=a+b; /* 把两个数之和赋值给整型变量sum*/ printf( “ a=%d,b=%d,sum=%d\n” ,a,b,sum); /* 把计算结果输出到显示屏上*/ } 重点说明: 1、任何一个c 语言程序都必须包括以下格式: main() { } 这是c 语言的基本结构,任何一个程序都必须包含这个结构。括号内可以不写任何内容,那么该程序将不执行任何结果。 2、main() - 在c 语言中称之为“主函数” ,一个c 程序有且仅有一个main 函数,任何一个c 程序总是从 main 函数开始执行,main 函数后面的一对圆括号不能省略。 3、被大括号{ }括起来的内容称为main 函数的函数体,这部分内容就是计算机要执行的内容。 4、在{ }里面每一句话后面都有一个分号(; ),在c 语言中,我们把以一个分号结尾的一句话叫做一个 c 语 言的语句,分号是语句结束的标志。 5、printf( “ a=%d,b=%d,sum=%d\n” ,a,b,sum); 通过执行这条c 语言系统提供给我们直接使用的屏幕输出 函数,用户即可看到运行结果,本程序运行后,将在显示器上显示如下结果: a=20,b=15,sum=35 6、#include 注意:(1)以#号开头 (2)不以分号结尾这一行没有分号,所以不是语句,在c 语言中称之为命令行,或者叫做“预编译处理命令” 。 7、程序中以/* 开头并且以*/ 结尾的部分表示程序的注释部分,注释可以添加在程序的任何位置,为了提高程序的可读性而添加,但计算机在执行主函数内容时完全忽略注释部分,换而言之就是计算机当做注释部分不存在于主函数中。 C程序的生成过程 C程序是先由源文件经编译生成目标文件,然后经过连接生成可执行文件。 源程序的扩展名为.c ,目标程序的扩展名为.obj , 可执行程序的扩展名为.exe 。

c语言基本代码

c语言基本代码 Prepared on 22 November 2020

'\0':是字符串的结束标志 ‘‘:空格 auto:声明自动变量一般不使用 double:声明双精度变量或函数(和%lf连用), m=(double)(v-l)/l*100+; 这个式子加个double是将后面式子中非double类型强制转换类型为double float:声明浮点型变量或函数(和%f连用),单精度 int:声明整型变量或函数(与%d连用) struct:声明结构体变量或函数 long:声明长整型变量或函数 switch:用于开关语句 enum:声明枚举类型 register:声明积存器变量 typedef:用以给数据类型取别名(当然还有其他作用) extern:声明变量是在其他文件正声明(也可以看做是引用变量) return:子程序返回语句(可以带参数,也看不带参数) union:声明联合数据类型 const:声明只读变量 short:声明短整型变量或函数 unsigned:声明无符号类型变量或函数 signed:生命有符号类型变量或函数 void:声明函数无返回值或无参数,声明无类型指针(基本上就这三个作用)default:开关语句中的“其他”分支 goto:无条件跳转语句 sizeof:计算数据类型长度,,是整型表达式用法sizeof(类型说明符,数组名或表达式);sizeof()是获取类型占用的字节数,是整形的 volatile:说明变量在程序执行中可被隐含地改变 static:声明静态变量 char:声明字符型变量或函数 strcmp:strcmp(s1,s2)比较字符串大小两个字符串自左向右逐个字符相比(按ASCII值大小相比较),直到出现不同的字符或遇'\0'为止大于返回1小于返回-1等于返回0 循环: for:一种循环语句(可意会不可言传)for(表达式1;表达式2;表达式3)while:循环语句的循环条件 do:循环语句的循环体 break:跳出当前循环 continue:结束当前循环,开始下一轮循环 判断: d=a>30b:c:相当于if暨当a>30是d=b否则d=c;

c语言基本代码

c语言基本代码 Company Document number:WTUT-WT88Y-W8BBGB-BWYTT-19998

'\0':是字符串的结束标志 ‘‘:空格 auto:声明自动变量一般不使用 double:声明双精度变量或函数(和%lf连用), m=(double)(v-l)/l*100+; 这个式子加个double是将后面式子中非double类型强制转换类型为double float:声明浮点型变量或函数(和%f连用),单精度 int:声明整型变量或函数(与%d连用) struct:声明结构体变量或函数 long:声明长整型变量或函数 switch:用于开关语句 enum:声明枚举类型 register:声明积存器变量 typedef:用以给数据类型取别名(当然还有其他作用) extern:声明变量是在其他文件正声明(也可以看做是引用变量) return:子程序返回语句(可以带参数,也看不带参数) union:声明联合数据类型 const:声明只读变量 short:声明短整型变量或函数 unsigned:声明无符号类型变量或函数 signed:生命有符号类型变量或函数 void:声明函数无返回值或无参数,声明无类型指针(基本上就这三个作用)default:开关语句中的“其他”分支

goto:无条件跳转语句 sizeof:计算数据类型长度,,是整型表达式用法sizeof(类型说明符,数组名或表达式);sizeof()是获取类型占用的字节数,是整形的 volatile:说明变量在程序执行中可被隐含地改变 static:声明静态变量 char:声明字符型变量或函数 strcmp:strcmp(s1,s2)比较字符串大小两个字符串自左向右逐个字符相比(按ASCII值大小相比较),直到出现不同的字符或遇'\0'为止大于返回1小于返回-1等于返回0 循环: for:一种循环语句(可意会不可言传)for(表达式1;表达式2;表达式3)while:循环语句的循环条件 do:循环语句的循环体 break:跳出当前循环 continue:结束当前循环,开始下一轮循环 判断: d=a>30b:c:相当于if暨当a>30是d=b否则d=c; if:条件语句与elseifelse并用1、在C语言中一般认为“0”是假,其他不是“0”的都是真。 2、if()里面为真,则进入if下的大括弧{},为假,就跳过。 以此题为例: 若X是“0”(为假)。则里面为假,跳过if下的大{} 若X不是“0”(为真)。则里面为真,进入if下的大{}。 case:开关语句分支,与switch(表达式)连用,case常量表达式;default冒号后面的语句,表示除去各种casei:情况外,其它情况均用default冒号后面的语句处理,即缺省case默认case的处理 else:条件语句否定分支(与if连用)

C语言基础知识归纳

C 语言基础知识 1. 每个C 程序有且只有一个主函数main() ,且程序必须从main() 函 数开始执行,并在 main() 函数中结束。 2. 在 C 语言中,用 e 来表示科学计数法时,规定在 e 的前面必须有 数字,后面必须为整数。 3. 用单引号括起来的一个字符常量只能存放一个字符;C 语言中没有 字符串变量,只能用字符数组来存储字符串。 4. 外部变量在编译时由系统分配永久的内存空间,所以外部变量的类 型不是自动存储类别。 5. 在一个函数内的复合语句中定义的变量,只能在这个复合语句范围 内有效。 6. 用 sizeof(int) 计算 int 类型数据的字节数。 7. C 语言运行时,首先系统检查语法的正误,再运行程序的语法; C语言中,可以在一个函数中嵌套一个函数,但是不能在一 个函数中定义一个函数;只有在函数外部定义的函数才是外部函数; C语言的子程序有过程和函数两种。 8. 预处理命令行的位置没有规定,只是习惯放在前面;在源文件中的 可以有多条预处理命令,但一行只能写一条;宏名的大写只是习惯性的表示;宏替换不仅不占用运行时间还不分配内存空间。 9. feo f函数的作用是检查文件是否结束,当结束时返回的值为非零, 否则为零。 10. 当定义了数组后,在给其赋值时,不能直接把字符串赋给数

组名。 11. 在赋值表达式中,赋值运算符“=”右侧不能为表达式;在求余运 算符中的两侧都必须为整型;在强制类型转换时,类型名应用括号括起来。 12. 静态局部变量,只有当程序结束后,其值才释放。 13. 当调用函数时,实参是一个数组名,则向函数传送的是数组每一个 元素的地址。 14. 算法的特点为有零个或多个输入,有一个或多个输出,当相同的输 入时,其结果相同;算法正确的程序最终一定会结束。 15. 在 C 语言中,预处理命令行都以“ # ”开头;当需要时才用 #in clude;预处理的作用就是实现宏定义和条件编译。16. 当数组元素的下标超出了定义的下标范围时,系统不给出“下标 越界”的字样,而是得出错误的答案,因此在编程时务必检查下标是否越界。 17. 共用体变量不能作为函数的参数,也不能使函数带回共用体变量。 18. 指向函数的指针变量的定义形式为:数据类型(* 指针变量) ();,因此其为指向函数的指针变量。 19. 用 C 语言编写的代码程序是源程序,只有通过编译、连接才能进 行。 20. 在说明为static时,其生存期得到延长,而其作用域并没有改 变,在定义后系统会自动帮它赋值为 0, static 为关键字不能 被用作它用。

C语言基础题(含答案)

第一章C语言基础知识 1.1 选择题 1. 以下不是C语言的特点的是()。 A、语言简洁紧凑 B、能够编制出功能复杂的程序 C、C语言可以直接对硬件操作 D、C语言移植性好 2.下列字符序列中,不可用作C语言标识符的是()。 A.abc123 B.no.1 C._123_ D.-_ok 3.正确的C语言标识符是()。 A._buy_2 B.2_buy C.?_buy D.buy? 4. 请选出可用作C语言用户标识符的一组标识符()。 A.void B.a3_b3C.For D.2a define _123 -abc DO WORD IF Case sizeof 5.下列符号中,不属于转义字符的是()。 A.\\ B.\0xAA C.\t D.\0 6.不属于C语言关键字的是()。 A.int B.break C.while D.character 7.是C语言提供的合法关键字的是()。 A.Float B.signed C.integer D.Char

8.以下不能定义为用户标示符的是()。 A.scanf B.V oid C._3com_ D.int 9.一个C程序是由()。 A.一个主程序和若干子程序组成 B.一个或多个函数组成 C.若干过程组成 D.若干子程序组成 10. C语言程序的基本单位是()。 A.程序行B.语句C.函数D.字符 11.下列说法中,错误的是()。 A.每个语句必须独占一行,语句的最后可以是一个分号,也可以是一个回车换行符号 B.每个函数都有一个函数头和一个函数体,主函数也不例外C.主函数只能调用用户函数或系统函数,用户函数可以相互调用 D.程序是由若干个函数组成的,但是必须有、而且只能有一个主函数 12.以下说法中正确的是()。 A.C语言程序总是从第一个定义的函数开始执行 B.在C语言程序中,要调用的函数必须在main( )函数中定义 C.C语言程序总是从main( )函数开始执行 D.C语言程序中的main( )函数必须放在程序的开始部分13. C编译程序是()。 A.C程序的机器语言版本 B.一组机器语言指令

(完整word版)C语言基本概念

第2章C语言基本概念 2.1 初识“Hello world”程序 为纪念C语言的设计者,第一个程序范例选自C语言的定义文档——Brian Kernighan和Dennis Ritchie合著的The C Programming Language。该范例是“Hello world”程序,它是所有C 程序员共有的财富,而你也即将成为其中的一员。 该程序作为一个文件存储在你所用的计算机系统的永久存储器中。文件名为hello.c,其中.c说明该文件为C语言源程序。 下面介绍hello.c程序的组成部分:程序注释、库包含和主函数。 2.1.1 程序注释 C语言中,注释是在/*和*/之间的所有文字,可以占连续的几行。例2.1中的注释描述了该程序的作用。 注释是写给人看的,而不是写给计算机的。注释向其他程序员传递该程序的有关信息。当C语言编译器将程序转换为可由机器执行的形式时,注释被完全忽略。 当程序越来越复杂时,读者会发现给出合适的注释是使程序易读的最好方法之一。 2.1.2 库包含(预处理指令) C语言只明确定义了一小部分操作,在计算机程序中许多必要的操作并不是由C直接定义的(如C语言中没有内置的“读”或“写”命令),实际的做法是,在每个C实现中都包含了一些使用函数和符号的集合,称之为库。C的ANSI(American National Standards Institute)标准要求在每个C实现中提供特定的标准库。C系统可以通过提供附加库来扩展可执行操作

stdio.h。 #include 这条预处理指令说明,在编译前把stdio.h中的信息“包含”到程序中。该指令通知预处理器,程序中用到的某些内容,如printf,可以在标准头文件stdio.h中找到。Stdio.h中包含了关于C标准输入/输出库的信息。 注意: ●对每一个库使用一行#include ●预处理指令结束时没有“;” 预处理指令详细内容将在后面章节介绍。 2.1.3 主函数 1. 函数 术语“函数”来源于数学。在数学中函数是一条根据一个或多个给定参数进行数值计算的规则: f(x) = x + 1 g(y,z) = y – z C语言对“函数”的使用更加宽松。C语言中,函数是一系列独立的程序步骤,将这些 一个C程序是一个函数的集合。函数分为两类:程序员编写的函数;由C语言的实现所提供的函数。后一种函数也叫库函数,因为这些函数属于一个函数的“库”,而这个库是由编译器提供的。 每个C程序必须有一个main函数,在执行程序时系统会自动调用main函数,即该函数是程序的入口。 2. 语句 函数所执行的步骤在{}中列出,这些步骤称为“语句”。这些语句共同组成函数的主体。大多数函数都有几个连续执行的语句。 当运行C语言程序时,计算机执行main函数主体中包含的语句。 printf("Hello,world.\n");该语句用到了printf函数。此函数代表一组操作。当想要调用这些

C语言入门基础教案

C语言基础教案 教学目标: 一认知目标:了解C语言的特点和C语言的开发步骤 二能力目标:初步了解C程序的组成结构和主函数的作用; 掌握五种基本算术运算符的使用:+、—、*、/、%,了解优先级与结合性;三情意目标:学习C语言基础上能使用Microsoft Visual C++6.0 进行基本的C程序开发 教学要求: 识记:计算机程序设计语言的一些必备知识与理论 理解:理解C程序的组成结构和主函数的作用; 理解C语言等高级程序设计语言的开发过程 理解C语言中各种运算的运算规则,由运算符和相关数据组成表达式的方法; 运用:能使用printf()函数进行信息的输出; 能编写简单程序 教学重点: 1)计算机程序设计语言的理论知识,语言的分类和特点以及开发过程等; 2)C语言的简介,结构特征和特点等; 3)如何使用Microsoft Visual C++ 6.0进行C语言程序开发; 4)C语言源程序的结构介绍及基本语法的简介; 5)C语言源程序的书写要求; 6)C语言基础:函数的组成、标识符及其命名、变量的声明、变量的赋值、各种算数运算符的使用及优先级与结合性等。 教学难点: 如何让学生理解C语言的结构及语法基础还有源程序的书写要求,掌握对函数的组成、标识符及其命名、变量的声明、变量的赋值、各种算数运算符的使用及优先级与结合性等 授课方法:讲授法与演示法相结合

计算机程序设计语言基础 一新课导入 大家都听过程序员没?或者是网络上俗称调侃的码农?对,简单讲就是编写计算机代码的工作。在新世纪大家对与计算机相关的软件和产品都不陌生,每个人都使用过计算机软件如微信,QQ等等,那这些软件又是怎么开发出来的呢?简单来讲它们是怎么产生的呢?对,它们都是使用计算机程序编写出来的。今天我们就来学习了解下计算机程序设计语言。 二新课讲授 1计算机程序设计语言介绍及分类 程序概念:程序是由一系列指令组成的,为解决某一具体问题而设计的一系列排列有序的指令的集合。 程序设计语言分为三类:机器语言、汇编语言、高级语言。 ●机器语言:一台计算机中所有指令集合称为该计算机的指令系统,这些指令就是机器语 言,它是一种二进制语言。 优点:面向机器、程序简洁、运行速度快; 缺点:不直观、难懂、难记、难写、难以修改和维护 ●汇编语言:使用符号(助记符)来代替机器语言中的二进制代码 优点:质量高、执行速度快、占用内存少 缺点:面向机器,与机器语言基本上一一对应,具有机器语言的缺点 ●高级语言:接近自然语言,使用英语单词表达语句,便于理解、记忆和掌握 优点:通用性强,便于理解、记忆和掌握 缺点:不能直接运行源程序,运行速度相对慢 2高级程序设计语言的开发过程 ?分析问题、建立模型 ?表现模型 ?源程序的编写 ?程序的编译与连接 ?程序的测试与调试 3 C语言的特点 ①既有高级语言的程序思想与设计方法,又有低级语言的操作能力; ②结构化体系 ③可以直接访问内存的物理地址,丰富的运算符和数据类型 ④可移植性强 ⑤代码效率高 4 使用Microsoft Visual C++ 6.0开发C语言程序 (1)启动Microsoft Visual C++ 6.0

C语言-基本选择题及答案解析

计算机程序设计基础(C语言) 单项选择练习题 说明:带*号的对非信息学院的同学不作要求。 一、基本概念 1. C语言程序是由 C 构成的。 A)一些可执行语言 B)main函数 C)函数 D)包含文件中的第一个函数2.(A)是构成C语言程序的基本单位。 A、函数 B、过程 C、子程序 D、子例程 3.C语言程序从 C开始执行。 A) 程序中第一条可执行语句 B) 程序中第一个函数 C) 程序中的main函数 D) 包含文件中的第一个函数 4.C语言程序从main()函数开始执行,所以这个函数要写在_D___。 A) 程序文件的开始 B) 程序文件的最后 C) 它所调用的函数的前面 D) 程序文件的任何位置 5、以下说法中正确的是(C)。 A、C语言程序总是从第一个定义的函数开始执行 B、在C语言程序中,要调用的函数必须在main( )函数中定义 C、C语言程序总是从main( )函数开始执行 D、C语言程序中的main( )函数必须放在程序的开始部分 6. 下列方法中错误的是(D)。 A.主函数可以分为两个部分:主函数说明部分和主函数体。 B.主函数可以调用任何非主函数的其它函数。 C.任何非主函数可以调用其它任何非主函数。 D.程序可以从任何非主函数开始执行。 7. 下列说法错误的是:(B) A.C程序运行步骤是编辑、编译、连接、执行。 B.C语言的变量名必须用小写,常量用大写。 C.C语言的三种基本结构是顺序、选择、循环。 D. C程序一定由函数构成的。 8.下列关于C语言的说法错误的是( B )。 A) C程序的工作过程是编辑、编译、连接、运行 B) C语言不区分大小写。 C) C程序的三种基本结构是顺序、选择、循环 D) C程序从main函数开始执行

第一章 C语言基础知识

第一章C语言基础知识 考点 1 C语言程序的结构认识 本节通过一个简单的c程序例子,介绍c语言的基本构成、格式、以及良好的书写风格,使读者对c语言有个初步认识。 例1 计算两个整数之和的c程序: #include main() { int a,b,sum; /*定义变量a,b,sum为整型变量*/ a=20; /*把整数20赋值给整型变量a*/ b=15; /*把整数15赋值给整型变量b*/ sum=a+b; /*把两个数之和赋值给整型变量sum*/ printf(“a=%d,b=%d,sum=%d\n”,a,b,sum); /*把计算结果输出到显示屏上*/ } 重点说明: 1、任何一个c语言程序都必须包括以下格式: main() { } 这是c语言的基本结构,任何一个程序都必须包含这个机构。括号内可以不写任何内容,那么该程序将不执行任何结果。 2、main()----在c语言中称之为“主函数”,一个c程序有且仅有一个main函数,任何一个c 程序总是从main函数开始执行,main函数后面的一对圆括号不能省略。 3、被大括号{ }括起来的内容称为main函数的函数体,这部分内容就是计算机要执行的内容。 4、在{ }里面每一句话后面都有一个分号(;),在c语言中,我们把以一个分号结尾的一句话叫做一个c语言的语句,分号是语句结束的标志。 5、printf(“a=%d,b=%d,sum=%d\n”,a,b,sum); ----通过执行这条c语言系统提供给我们直接使用的屏幕输出函数,用户即可看到运行结果,本程序运行后,将在显示器上显示如下结果: a=20,b=15,sum=35 6、#include 注意:(1)以#号开头(2)不以分号结尾 这一行没有分号,所以不是语句,在c语言中称之为命令行,或者叫做“预编译处理命令”。 7、程序中以/*开头并且以*/结尾的部分表示程序的注释部分,注释可以添加在程序的任何位置,为了提高程序的可读性而添加,但计算机在执行主函数内容时完全忽略注释部分,换而言之就是计算机当做注释部分不存在于主函数中。 考点 2 C程序的生成过程 C程序是先由源文件经编译生成目标文件,然后经过连接生成可执行文件,如图所示。 编译过程

C语言基础代码

C 基础 1、输入成绩,判断是否及格 #include void main() { float a,b,max; printf("please enter a:"); scanf("%f ",&a); if (a>=60) printf("及格\n"); else printf("不及格\n"); } 2、输入两个学生a和b的成绩,输出其中高的成绩 #include void main() { float a,b,max; printf("please enter a and b:"); scanf("%f,%f",&a,&b); // 数据输入时若无逗号一般用空格区分两输入值,本 例一定要在两数之间加逗号 if (a>=b) max=a; if (b>a) max=b; printf("max=%f\n",max); } 3、要求按照百分制考试分数输出等级。 #include "stdio.h" main() { int grade; printf("input grade="); scanf("%d",&grade); switch ((int)(grade/10)) { case 10: case 9: printf("A\n");break; case 8: printf("B\n");break; case 7: printf("C\n");break; case 6: printf("D\n");break; default: printf("E\n"); } }

4、求1+2+……+100的和,分别用while、do…while和for语句实现(1)while #include void main ( ) { int sum=0,i=1; while (i<=100) { sum=sum+i; i++; } printf("sum=%d\n",sum); } (2)do…while #include void main( ) { int sum=0,i=1; do {sum=sum+i; i++; }while (i<=100); printf("sum=%d\n",sum); } (3)for #include void main( ) { int sum=0,i; for (i=1;i<=100;i++) sum=sum+i; printf("sum=%d\n",sum); }

相关文档
最新文档