文档库 最新最全的文档下载
当前位置:文档库 › 02-Predefined+Data+Types+and+Operators

02-Predefined+Data+Types+and+Operators

02-Predefined+Data+Types+and+Operators
02-Predefined+Data+Types+and+Operators

02-Predefined Data Types and Operators

简单数值计算

学习目标:

?能够列举预定义数据类型的名称。

?能够把简单的代数公式转化为程序符号(程序表达式)。

概述:

在这一节里,将学习如何把简单数学公式转化为程序代码,从而掌握简单数值类型和算术运算符。下面所举的都是非常简单的数值计算例子。

1. 算术表达式

从诞生起,计算机的首要任务是承担繁重的计算工作。英国在第二次世界大战期间秘密研制了世界上的第一台电子计算机,用它来破解德国军队的密码。由于对外界保密,所以人们一直把美国人在1946年制造的计算机当作人类的首台电子计算机。

早期它被用来破译密码;计算火炮的弹道;飞机的航线,后来被用于更大规模的计算,如预测天气;模拟核弹爆炸等。无论哪一种计算任务,都需要把数学符号构成的公式转化为计算机能够识别的表达式才行。转换需要两个基本要素:a).要制定工时中的每个变元存放哪种类型的数据。b).用程序语言的运算符替换公式中的运算符。下面的例子一步一步地展示了如何用程序语言来描述数学公式。

2. 例1:华氏温度转摄氏温度。//把数学公式转换为程序表达式[上机做一遍]

美国和英国习惯使用英制单位,而欧洲大陆的国家和大多数的亚洲国家习惯使用公制单位。例如,2004年元旦的那天,纽约的气温是华氏33度。转化为公制,就是摄氏1度。能够通过编写程序,能够让计算机自动地把华氏温度转化为摄氏温度吗?

第1步:通过查找资料发现,摄氏温度与华氏温度转换的数学公式为:

1

摄氏温度= (华氏温度-32) * 5/9

第2步:因为编写程序的时候用英文字母比用中文词组方便,所以用英文Celsius 的“c”

代表摄氏温度;用Fahrenheit的“f”代表华氏温度。公式重写为:

c = ( f – 32 ) * 5 / 9

第3步:打开程序代码编辑器,输入框架代码:

第4步:输入实现温度转换的表达式:(说明:摄氏度后面的竖线是一个在闪烁的光标)

using System;

class Class1

{

static void Main()

{

double c, f;

f = 102;

c = (f - 32) * 5 / 9;

Console.Write(c + "摄氏度");

Console.ReadLine();

}

}

2

知识点:

?表达式中的c和f称作变量,也就是在程序运行的过程中它们的数值可以改变。

?double是变量c和f的数据类型。其作用是告诉计算机:c和f可以被赋予带小数点的数值。其他的类型将在本节的后面详细介绍。

?温度换算的表达式中,星号、斜杠、等号都叫做运算符。所谓运算符就是加、减、乘、除以及求余数和开根号之类的数学符号。圆括号用于规

定优先级,也就是括号内的先算。简而言之,程序语言的运算符用法与

数学运算符的用法相同。等号也叫做赋值符号,其作用是把右边的值赋

给左边的变量。

c = ( f – 32 ) * 5 / 9

第5步:按Ctrl+F5运行程序:

从运算的结果可以看到,华氏102度相当于摄氏38.8度。

知识点:

?变量在使用前一定要指定类型。如果程序中有未指定类型的变量,就不能通过编译。变量的类型叫做数据类型。

3

3. 例2:下面的程序使用了没有指定类型的变量t:[上机做一遍]

using System;

class App1

{

static void Main()

{

t=2; //变量t还没有被定义,所以不能赋值。

}

}

编译之后得到如下出错信息:

D:\>csc app1.txt

Microsoft (R) Visual C# .NET Compiler version 7.10.3052.4

for Microsoft (R) .NET Framework version 1.1.4322

Copyright (C) Microsoft Corporation 2001-2002. All rights reserved.

app1.txt(6,3): error CS0103: The name 't' does not exist in the class or

namespace 'App1'

任何一个变量都必须指定数据类型。如果打算用t存放整数类型数据,就应该声明为int 类型;如果打算存放有理数,就应该声明为float或者double。

方便起见,程序语言总是提供一些预先定义好的类型。下表列出了所有的预定义类型:(提示:并不需要硬背所有这些类型。常用的仅有string, int, double三个类型。)类型名类型说明举例

String字符串类型-Unicode字符串序列string str = "Mahesh";

Sbyte有符号的8位整数类型sbyte val = 12;

Short有符号的16位整数类型short val = 12;

Int有符合的32位整数类型int val = 12;

Long有符号的64位整数类型long val1 = 12;

long val2 = 34L;

Bool布尔类型;一个布尔类型变量值是true bool val1 = true;

4

或者false bool val2 = false;

Char 字符类型;一个字符类型变量值是一个

Unicode编码字符

char val = 'h';

Byte无符号的8位整数类型byte val1 = 12;

byte val2 = 34U;

Ushort无符号的16位整数类型ushort val1 = 12;

ushort val2 = 34U;

Uint无符号的32位整数类型uint val1 = 12;

uint val2 = 34U;

Ulong无符号的64位整数类型ulong val1 = 12;

ulong val2 = 34U;

ulong val3 = 56L;

ulong val4 = 78UL;

Float单精度浮点数类型float val = 1.23F;

Double双精度浮点数类型double val1 = 1.23;

double val2 = 4.56D; Decimal小数类型;具有28到29位的数据精度decim al val = 1.23M;

预定义数据类型表

5

知识点:

?定义变量的格式为:类型变量名;

int a; //定义a为整形变量

float b; //定义b为浮点类型变量

char c; //定义c为字符类型变量

?字符串类型也是一种常见的数据类型。下面的程序代码把两个字符串变量的值相加(首尾相连)并输出:

string str1,str2; //定义字符串变量str1和str2

str1=”hello ”;//给str1赋值

str2=”world.”;//给str2赋值

Console.Write(str1+str2);//输出两个字符串变量相加的值

4. 输入/输出语句

为了能够让程序动态地接受用户的键盘输入并在屏幕上输出结果,我们常常用ReadLine 和WriteLine方法(第六节将详细介绍方法的概念,目前只要记住ReadLine用来读取键盘输入;WriteLine用来输出结果就行了)。下面的程序从键盘读入用户的名字,然后加上Hello并输出。

例3.从键盘读取名字[上机做一遍]

using System;

class App1

{

static void Main()

{

Console的ReadLine()方法能够从键盘得到用户输入。例如:

string name; //定义name变量为字符串型

name=Console.ReadLine();//把从键盘得到的字符串赋给name变量

6

Console.WriteLine(“Hello “+name); //输出name的值

}

}

5. 数据类型转换

由于Console.ReadLine()返回的总是字符串型数据,因而不能赋给其他类型的变量。例如下面的代码试图把字符串赋给整数型变量,这是错误的:

例4.错误的类型转换[上机做一遍]

int i;

i=Console.ReadLine(); //Error 不能把字符串直接赋给整数型变量为了把字符串转为整数,应该使用int的Parse方法。例如:

string keyboardvalue=Console.ReadLine();

int i;l

i=int.Parse(keyboardvalue);

为了不必每次计算都要重新编译源代码,能否利用输入输出和数据类型转换,把例1的温度转换程序改进一下,使它能够从键盘读取华氏温度值,然后把摄氏温度值输出到屏幕上呢?

例5.从键盘读取华氏温度值[上机做一遍]

using System;

class App1

{

static void Main()

{

double c,f;

7

string s;

Console.WriteLine("请输入华氏温度:");//提示语句

s=Console.ReadLine();//读取键盘输入

f=double.Parse(s);//把字符串转换为数值

c=(f-32)*5/9;

Console.Write(c+"摄氏度");

}

}

运行结果为:

第4步:输入实现温度转换的表达式:(说明:摄氏度后面的竖线是一个在闪烁的光标)

using System;

class Class1

{

static void Main()

{

double c, f;

f = 102;

c = (f - 32) * 5 / 9;

Console.Write(c + "摄氏度");

Console.ReadLine();

}

}

8

自测练习

1.下图是透镜成像原理。已知下图中物的高度H=29.5米,像的高度h=19毫米,从透镜中心O到d的距离为210毫米,求物距OD的长度。请编写一程序,从键盘输入已知条件,并把计算结果输出到屏幕上。

using System;

class App1

{

static void Main()

{

double H, h, Od, OD;

H = 29.5 * 100; h = 19 * 0.1; Od = 210 * 0.1; OD = H /h * Od;

Console.WriteLine(OD + "cm");

Console.ReadLine();

}

}

2.已知:1英尺=12英寸,1英寸=2.54厘米。设计一个程序,从键盘输入你的身高值,将公制值转换成英制单位值输出。例如,我的身高是1.79米。用英制表示为:

1.79米=5英尺+10英寸。

// using System;

class App1

{

static void Main()

{

double c, f;

string s;

Console.WriteLine("请输入身高");

s=Console .ReadLine ();

c=double.Parse(s)/12/2.54;f=(c-(int)c)*12;

s=(int)c+"英尺"+f+"英寸";

Console.WriteLine(s);

Console.ReadLine();

}

}

知识点:

数值类型变量之间的转换

9

变量其实就是计算机内存中一小块空间的名字。这块存储空间的大小就是变量的类型。假设有x(整数型)和y(有理数型)两个变量。这两个类型不同的变量在相互赋值的时候可能产生两种情况:

●y=x; 这种情况为低精度向高精度的转换,也就是把小内存空间的内容放入相对

较大的内存空间。由于不会发生数据丢失,所以也叫做隐式转换。

●x=(int)y; 这种情况为高精度向低精度的转换,也就是把大内存空间的内容放入

相对较小的内存空间。由于可能发生数据丢失,所以也叫做显式转换。必须采

用小括号内写上目标类型名的格式告诉计算机确实要做这样的转换。

课后练习:计算最高时速

下图是一辆最高时速为209英里的汽车。这辆车最快每小时能跑多少公里?请编写一程序,从键盘读入每小时的英里数,然后把公里数输出到屏幕上。

a).请填写下表:

英里和公里的换算公式:

换算的程序表达式:

程序用到的变量名:

程序用到的类型名:

英里和公里的换算公式:

换算的程序表达式:

程序用到的变量名:

程序用到的类型名:

b).请把完整的程序代码写在下面:

10

相关文档