C程序设计案例教程 王明福 源代码习题答案 第2章新_第1页
C程序设计案例教程 王明福 源代码习题答案 第2章新_第2页
C程序设计案例教程 王明福 源代码习题答案 第2章新_第3页
C程序设计案例教程 王明福 源代码习题答案 第2章新_第4页
C程序设计案例教程 王明福 源代码习题答案 第2章新_第5页
已阅读5页,还剩51页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第2章数据类型和表达式通过本章的学习,使读者:了解C#语言的根本字符、标识符和关键字掌握C#语言的数据和数据类型掌握C#语言的运算符和表达式本章要点2.1根本规那么2.1.1标识符

在C#中,标识符的命名有如下规那么:(1)首字符必须是字母、下划线“_〞或“@〞;后面的字符可以是字母、下划线或数字;(2)标识符不应该使用C#的关键字。如果一定要用C#的关键字作为标识符,应使用“@〞字符作为前缀;(3)允许在标识符中使用Unicode转义符;(4)C#采用了Unicode技术,因此支持使用中文作为标识符例如:下面是几个正确的变量名称:intA、M_data、_D123。下面是几个错误的变量名称:123data〔错误原因:使用数字作为起始字符〕float〔错误原因:使用关键字作为标识符〕int-a〔错误原因:使用连字符“—〞〕。2.1根本规那么2.1.3关键字关键字又称保存字,是一种有特殊用途的标识符。由系统预先定义好的,不能用于其它目的。C#中有七十多个关键字,这些关键字都有自己的用途。C#的常见关键字参见教材表2-1。2.2根本数据类型C++语言的数据类型分为根本数据类型和构造数据类型〔或称复合数据类型〕。根本数据类型有5种:整型〔int〕、浮点型〔float〕、字符型〔char〕、双精度浮点型〔double〕和无值型〔void〕。2.2根本数据类型类型名类型说明符字长(字节)取值范围布尔型boolfalse,true字符型char1-128~127无符号字符型unsignedchar10~255整型int4-2147483648~2147483674长整型long4-2147483648~2147483674无符号长整型unsignedlong40~4294967295浮点型float43.4E-38~3.4E+38实型double81.7-308~1.7E+308空值型void02.2常量与变量常量是在程序中不能改变的量。它通常可以分为数字常量和符号常量1.整型常量

整型常量可用以下几种形式表示:2.2.1常量①十进制整数如:34、0、-56等。②八进制整数为了与十进制数区别,八进制整数以0开头,后跟假设干个0~7的数字。③十六进制整数为了与十进制整数和八进制整数区别,以0x或OX开头,后跟假设干个0~9及a~f,a~f分别表示十进制整数10~15。2.2常量与变量2.实型常量

实数又称为浮点数,一般有两种书写形式:①一般形式就是平时写实数的形式。②指数形式在C#中,指数形式表示为:<整数局部>E<指数局部>3.字符常量

字符常量是用单引号〔即撇号〕括起来的一个字符。2.2常量与变量4.字符串常量

(1)常规字符串双引号括引起的一串字符,可以包括转义字符。例如:“china〞,“〞,“teacherandstudent〞,“a〞等都是字符串常量。 (2)逐字字符串在常规字符串前面加一个@,就形成逐字字符串。例如: @“C:\windows\Microsoft〞与"C:\\windows\\Microsoft"含义相同2.2常量与变量5.布尔型常量通常表示真假用布尔常量:false表示假,true表示真。

6.符号常量

在声明语句中,可以声明一个标识符常量。具体格式为:const类型标识符=初值例如:constdoublePI=3.141592.2常量与变量在程序执行过程中其值可以改变的量叫变量。2.2.2变量的声明1.变量的定义

<数据类型><变量名>;或<数据类型><变量名1>,<变量名2>,…,<变量n>;例如:inta,x,y;//定义了3个整型变量a,x,ycharb;//定义了1个字符型变量bfloatc,d;//定义了2个实型〔单精度〕变量c,ddoubleu,v;//定义了2个实型〔双精度〕变量u,v2.2常量与变量2.变量的初始化

inta=2;//定义a为整型变量,初值为2charb=‘A’;//定义b为字符型变量,初值为‘A’doublex=2.1234;//定义x为实型变量,初值为2.1234也可对被定义的变量的局部变量进行初始化。如intu,v=100,w;//定义u,v,w为整型变量,v的初值为1002.2常量与变量2.2.3变量的命名标准通常有PascalCase和CamelCase两种命名方法,PascalCase中每个单词的首字母都是大写,CamelCase规定首字母都是小写。下面给出PascalCase和CamelCase的例子,如下表所示。PascalCaseCamelCaseMyDatamyDataCreateDaracreateDataWorldworld2.2常量与变量2.2.4变量的赋值

在C#中,给一个变量赋值的格式如下:变量名=表达式;

inta=0;//定义整型变量a,并为其赋初值等于0doubleb; //定义双精度变量b,未赋初值a=256;//为整型变量a赋值为256

b=21.78;//为双精度变量b赋值为21.78

2.2常量与变量2.2.5变量的类型

1.数值类型C#中常用的数值类型如表2-4所示。

全称简称说明字节取值范围System.Boolleanbooltrue或falseSystem.Bytebyte8位无符号整数

10~255System.SBytesbyte8位无符号整数

1-128~127System.Charchar16位Unicode字符

20~65535System.Int32int32位有符号整数

4-2147483648~2147483647System.Int16short16位有符号整数

2-32768~327672.2常量与变量2.2.5变量的类型

2.引用类型引用类型不存储它们所代表的实际值,而是指向所要存储的值,即引用类型存储的实际数据是当前的引用的地址。(1)object类型object数据类型是根类类型,它是所有类型的基类。任一个object变量,可以赋予任何类型的值。例如:

intx1=123;doublex2=34.87; objecty1,y2;//声明y1,y2是object类型的变量

y1=x1; y2=x2;2.2常量与变量2.2.5变量的类型

2.引用类型引用类型不存储它们所代表的实际值,而是指向所要存储的值,即引用类型存储的实际数据是当前的引用的地址。〔2〕字符串类型string字符串是被双引号包含的一串字符,专门用于处理字符串的引用类型,string是System.String的别名。用string关键字声明的变量〔对象〕可以存储Unicode字符的字符串,并具有字符串的连接运算。例如:stringstr1=“C#语言〞;stringstr2=“程序设计〞;stringstr3;str3=str1+str2;//str3的值为:“C#语言程序设计〞2.2常量与变量2.2.6类型之间的转换

1.隐式转换隐式转换是系统默认的,遵守“由低级〔字节数和精度〕类型向高级类型转换,结果为高级类型〞的原那么.stringa,b;a=10+“12〞;//系统将整型数据10隐式转化为字符串“10〞,结果a的内容为“1012〞doublex=3.1415;inty=21;doublez=x+y;//系统将整型数据y隐式转化为实型21.0后再与x运算,//结果z的内容为24.14152.2常量与变量2.2.6类型之间的转换

2.显示转换(1)强制转换强制转换转换的一般格式为:〔数据类型名称〕数据(2)ToString()方法─—将根本数值类型转化为字符串使用格式为:变量名称.ToString()例如: intc; c=309; stringe=c.ToString();//e的值为“309〞 doubled=3.1415; stringf=d..ToString();//f的值为“3.1415〞2.2常量与变量2.2.6类型之间的转换

(3)Parse方法─将字符串转换为数值数值类型名称.Parse(字符串表达式)例如:strings="123.32"; intx;doubley;x=int.Parse(“234〞);//将字符串"234"转化为整数234y=double.Parse(s);//将字符串"123.32"转化为实数123.32(4)Covert类─各种数据类型之间的相互转化intc;c=3;stringe=c.ToString();//e的值为“3〞intg;g=Convert.ToInt32(e);//g为int类型的值3【例2-2】数据类型转换。staticvoidMain(string[]args){strings1="123",s2="90.8";intx;doubley;//1.用parse,Convert,将字符串转换为数〔int,double,...)x=int.Parse(s1);y=double.Parse(s2);Console.WriteLine("\ns1={0},s2={1}",x,y);

x=Convert.ToInt32(s1);y=Convert.ToDouble(s2);Console.WriteLine("\ns1={0},s2={1}",x,y);

//2.用int,...,Convert,将数转换为字符串intk=12;doubled=12.56;s1=k.ToString();s2=d.ToString();Console.WriteLine("\ns1={0},s2={1}",s1,s2);s1=Convert.ToString(k);s2=Convert.ToString(d);Console.WriteLine("\ns1={0},s2={1}",s1,s2);}2.3运算符与表达式1.算术运算符

根本算术运算符及其功能如下表所示。2.3.1算术运算符与算术表达式运算符名称例子运算功能+-*/%++--加法运算减法运算乘法运算除法运算模运算递增递减x+yx-yx*yx/yx%y++x;x++--x;x--求x与y的和求x与y的差求x与y的积求x与y的商求x除以y的余数2.3运算符与表达式2.算术表达式

在C#中,用算术运算符连接起来的式子称为算术表达式。例如:2*(a+4)/18-2.98+‘A’,sin(x)+cos(x)/2,〔int〕a+4+(--z)都是合法的C++算术表达式。但 sin300+y×e9,3+|x|,3a+5不是合法的C#算术表达式。2.3运算符与表达式3.优先级和结合方向

C#语言规定了运算符的优先级和结合方向,在表达式求值时,先按运算符的优先级别上下次序执行,再按运算符的结合方向结合〔相同优先级时〕。例如先乘除后加减,如下表所示。高运算种类结合性优先级++,--从右到左高低

*,/,%从左到右+,-从左到右2.3运算符与表达式1.关系运算符

C#语言中提供6种关系运算符<,<=,>,>=,==,!=。2.3.2关系运算符与关系表达式(1)优先级别顺序是:自上而下,优先级由高到低。(2)同级运算符的结合性是“左结合性〞,即“自左向右〞顺序进行。关系运算的优先级都低于算术类,高于赋值类。例如, a>b+c 等效于 a>(b+c) a=b+c 等效于 a=(b+c)(3)关系运算符<=,>=,==,!=在书写时,不要空格将其分开,否那么会产生语法错误。2.3运算符与表达式2.关系表达式用关系运算符将两个表达式连接起来,表示关系运算的表达式称为关系表达式。一般形式为:表达式1关系运算符表达式2【例2-4】关系表达式。2.3运算符与表达式staticvoidMain(string[]args){intz; z=3+5==2*4;//即判断〔3+5〕是否等于〔2*4〕,z=1表示true Console.WriteLine("z={0}",z);z=3<=5!=4;//先判断〔3<=5〕,结果为0,再进行0!=4,z=1表示true Console.WriteLine("z={0}",z); z=2+3!=5>5-3;//等价于(2+3)!=(5>(5-3)),z=1表示trueConsole.WriteLine("z={0}",z); z=5>4>=3;//先求5>4结果为1,再进行1>=3的比较,z=0表示false Console.WriteLine("z={0}",z);}2.3运算符与表达式1.逻辑运算符

有3种逻辑运算符:“!〞(逻辑非)、“&&〞(逻辑与)和“||〞〔逻辑或〕。2.3.3逻辑运算符与逻辑表达式2.逻辑表达式

逻辑表达式的一般形式为:!x,x&&y,x||y2.3运算符与表达式【例2-5】逻辑表达式。staticvoidMain(string[]args){ intx=2,y=5,z; z=(x>0)||(y<8);

Console.WriteLine("z={0}",z);//z=1表示true z=(x==0)&&(y<8);

Console.WriteLine("z={0}",z);//z=0表示false z=!(x==2);

Console.WriteLine("z={0}",z);//z=0表示false}

2.3运算符与表达式所谓位〔bit〕运算,是指对一个数据的某些二进制位进行的运算。C#语言提供6种位运算符,如表2-8所示。2.3.4位运算和位运算符位运算符含义位运算符含义&按位与~取反|按位或<<左移^按位异或>>右移2.3运算符与表达式【例2-6】分析以下程序的执行结果(本程序在32位机上运行)。staticvoidMain(string[]args){uinta=0x1234;//0001,0010,0011,0100=>1234(前面16位均为0)

uintb=a<<2;//0100,1000,1101,0000=>48d0(前面16位均为0)

uintc=a>>2;//0000,0100,1000,1101=>048d(前面16位均为0)

uintd=b&c; //0000,0000,1000,0000=>0080(前面16位均为0)

uinte=b|c;//0100,1100,1101,1101=>4cdd(前面16位均为0)

uintf=b^c;//0100,1100,0101,1101=>4c5d(前面16位均为0)

uintg=~a;//1110,1101,1100,1011=>edcb(前面16位均为0)

Console.WriteLine("a={0:X}",a);Console.WriteLine("b={0:X}",b);Console.WriteLine("c={0:X}",c);Console.WriteLine("d={0:X}",d);Console.WriteLine("e={0:X}",e);Console.WriteLine("f={0:X}",f);Console.WriteLine("g={0:X}",g);}2.3运算符与表达式表达式1?表达式2:表达式3如果“表达式1〞的值为非0〔真〕,那么条件表达式的运算结果等于“表达式2〞的值,否那么,运算结果等于“表达式3〞的值。求x的绝对值,用条件运算符处理为:

y=(x>=0)?x:-x;2.3.5条件运算符2.3

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论