第4章 C#语言基础
计算机二级 C语言第四章-第五章
逻辑或
逻辑非
“&&”和“ ||”是双目运算符 “!”是单目运算符
C语言程序设计
第五章 选择结构程序设计
逻辑运算真值表
a 真 b 真 !a 假 !b 假 a&&b 真 a||b 真
真 假 假
假 真 假
假 真 真
真 假 真
假 假 假
真 真 假
逻辑运算符的优先次序 !(非) , &&(与),
优先次序:高(2) 结合方向:从右向左 (11) 从左向右
4.00, c=
6.00 s=
6.50
C语言程序设计
第四章 顺序程序设计
例4.11 从键盘输入大写字母,用小写字母输出
#include "stdio.h" void main() { char c1,c2; c1=getchar(); printf("%c,%d\n",c1,c1); c2=c1+32; printf("%c,%d\n",c2,c2); }
值为0 值为1 值为1 值为1 值为1 //(5>3)&&2||(8<(4-(!0))) 值为1 值为1
C语言程序设计
第五章 选择结构程序设计
复杂逻辑条件的表述
判断某一年year是否为闰年
判别闰年的条件(int year): 能被4整除: year%4==0 能被4整除但不能被100整除: (year%4==0)&&(year%100!=0) 能被400整除: year%400==0 综合起来: ((year%4==0)&&(year%100!=0))||year%400==0 优化语句: 此表达式为真时是闰年 (year%4==0&&year%100!=0)||year%400==0
大学物理第4章 狭义相对论时空观习题解答改
习 题4-1 一辆高速车以0.8c 的速率运动。
地上有一系列的同步钟,当经过地面上的一台钟时,驾驶员注意到它的指针在0=t ,她即刻把自己的钟拨到0'=t 。
行驶了一段距离后,她自己的钟指到6 us 时,驾驶员瞧地面上另一台钟。
问这个钟的读数就是多少? 【解】s)(10)/8.0(16/12220μ=-μ=-∆=∆c c s cu t t所以地面上第二个钟的读数为)(10's t t t μ=∆+=4-2 在某惯性参考系S 中,两事件发生在同一地点而时间间隔为4 s,另一惯性参考系S′ 以速度c u 6.0=相对于S 系运动,问在S′ 系中测得的两个事件的时间间隔与空间间隔各就是多少?【解】已知原时(s)4=∆t ,则测时(s)56.014/1'222=-=-∆=∆s cu t t由洛伦兹坐标变换22/1'c u ut x x --=,得:)(100.9/1/1/1'''8222220221012m c u t u c u ut x c u ut x x x x ⨯=-∆=-----=-=∆4-3 S 系中测得两个事件的时空坐标就是x 1=6×104 m,y 1=z 1=0,t 1=2×10-4 s 与x 2=12×104 m,y 2=z 2=0,t 2=1×10-4 s 。
如果S′ 系测得这两个事件同时发生,则S′ 系相对于S 系的速度u 就是多少?S′ 系测得这两个事件的空间间隔就是多少? 【解】(m)1064⨯=∆x ,0=∆=∆z y ,(s)1014-⨯-=∆t ,0'=∆t0)('2=∆-∆γ=∆cxu t t 2cxu t ∆=∆⇒ (m/s)105.182⨯-=∆∆=⇒x t c u (m )102.5)('4⨯=∆-∆γ=∆t u x x4-4 一列车与山底隧道静止时等长。
单片机原理及应用教程(C语言版)-第4章 单片机C语言及程序设计
4.3.2 C51变量的存储类型
三、外部存储
外部(存储)变量:用extern声明的变量为外 部变量,是在其它文件定义过的全局变量。 用 extern声明后,便可以在所声明的文件中使用。
需要注意的是:在定义变量时,即便是全局变 量,也不能使用extern修饰。
4.3.2 C51变量的存储类型
四、寄存器存储
动态(存储)变量:用auto定义的为动态变量, 也叫自动变量。
作用范围:在定义它的函数内或复合语句内部 当定义它的函数或复合语句执行时,C51才为 变量分配存储空间,结束时所占用的存储空间释放。 定义变量时,auto可以省略,或者说如果省略 了存储类型项,则认为是动态变量。动态变量一般 分配使用寄存器或堆栈。
“C51”概念:为了与ANSI C区别,把“单片 机C语言”称为“C51”,也称为“Keil C”。
4.1.1 C语言编程的优势
在编程方面,使用C51较汇编语言有诸多优势: 1)编程容易 2)容易实现复杂的数值计算 3)容易阅读与交流 4)容易调试与维护 5)容易实现模块化开发 6)程序可移植性好
本 无符号整型 unsigned int 2字节 0~65535 有符号整型 signed int 2字节 -32768~32767
类 无符号长整型 unsigned long 4字节 0~4294967295
型 有符号长整型 signed long 4字节 -2147483648~2147483647
MCS-51单片机有四个存储空间,分成三类, 它们是片内数据存储空间、片外数据存储空间和 程序存储空间。
MCS-51单片机有更多的存储区域:由于片内 数据存储器和片外数据存储器又分成不同的区域, 所以单片机的变量有更多的存储区域。
2022年C语言程序设计教程(第3版) 谭浩强 课件 最新 4
4.1.4 虚实结合与传值调用
一个函数中的函数体,只有在该函数 被调用时才会执行。在函数被调用时,将 要进行如下两个操作: • 将函数调用中的实际参数值传送给函数定 义中的形式参数; • 将流程从调用处转到被调用的函数的开头, 开始执行函数体中的代码。
{ 函数体
}
1. 函数头函数类型 函数名(形式参数表列)
一个函数的函数头的结构如下: (1)函数类型。指定函数值的类型,即函数返 回值的类型。 (2)函数名。函数名必须采用合法的用户标识 符。 (3)圆括号:在函数名后面的一对圆括号是 “函数运算符”,表示进行函数运算,函数运算符 具有很高的运算优先级别 (4)形式参数表。形式参数表由写在一对圆括 号(函数运算符)中的一系列参数组成。每一个参数 由一个类型符和一个参数名组成。参数名也应当是 合法的用户关键字。函数可以没有参数,这时在函 数运算符内写一个“void”,也可以空允白。
c
no1 no2 no3
第一步:先把上面的n-1个盘子设法借助b杆放到c杆, 如图4.8中的箭头①所示,记做hanoi(n-1, a,c,b)。
第二步:把第n个盘子从a杆直接移到b杆,如图4.8中的 箭头②所示。
第三步:把c杆上的n-1个盘子借助a杆移到b杆,如图4.8 中的箭头③所示,记做hanoi(n-1,c,b,a)。
递归计算n!的函数rfact( )。 通常,n的阶乘可以描述为: n!=1·2·…·n 但是,也可以描述为: n!= n·(n-1)·…·2·1 或者可以写为: n!= n·(n-1)! 更一般的形式是:
1
(x≤1)
n!= n·(n-1)! (x>1)
第4章单片机原理及应用(C51编程)
4.3 C51的函数
4.3.1
返回值类型 { 函数体 }
C51函数的定义
函数名(形式参数列表)[编译模式][reentrant][interrupt n][using n]
一般形式:
编译模式为SMALL、COPACT或LARGE reentrant用于定义可重入函数 interrupt n 用于定义中断函数,n为中断号,可以为0~31 using n 确定工作寄存器组,取值为0~3
从而使DBYTE用于以字节形式对data区访问,可以写成:
与此类似: CBYTE用于以字节形式对code区进行访问; PBYTE用于以字节形式对pdata区进行访问; XBYTE用于以字节形式对xdata区进行访问。
CWORD、DWORD、PWORD和XWORD用于以字形式对 code区、data区、pdata区和xdata区进行访问。
4.2.4
C51程序编写示例
C51源程序
C51编译器
浮动目标码模块 系统库 连接器
列表文件 用户库
绝对定位目标码文件
映像文件
软件模拟器
转换器
硬件仿真器
OMF51格式文件 写入程序存储器 编程器
【例4-1】将30H至3FH共16个RAM单元初始化为“55H”。 #include <reg52.h> #include <absacc.h> void main(void) { unsigned char i; for (i=0;i<=15;i++) { DBYTE[0x30+i]=0x55; } while(1); } 编译系统自动连接了 startup.a51生成代码 一是将内部RAM的 00H~7FH清0; 二是设置堆栈指针SP。 有全局变量赋值时 编译系统会自动连接 init.a51生成代码
高树芳C语言程序设计--第四章
4.5 switch语句
案例4-10 计算成绩级别 案例4-11 根据月份求季度 案例4-12 输入算式做四则运算
38
4.5 switch语句
案例4-10 [案例任务]
计算成绩级别
输入百分制成绩,输出成绩级别A、B、C、D、E。 90~100分以上为A,80~89分为B,70~79为C, 60~69为D,0~59为E,其他成绩则显示“成绩 错误!”。
26
4.4
if语句
4.4.3多分支
案例4-7 用多分支求解分段函数
27
4.4
if语句
4.4.3多分支
案例4-7 用多分支求解分段函数
[案例任务]
对于如下函数: 用scanf函数输入x的值,输出y的值。 运行结果如下(输入的数据是9)
[解决方案]使用if „ else if„else语句。
28
4.4
分析下列程序的运行结果,掌握“与”、 “或”、“非”三个逻辑运算符及其优先级。
程序代码
11
4.3 逻辑运算符和逻辑表达式
相关知识: 1.逻辑运算符及其优先级 2. 逻辑表达式 3. 逻辑表达式的优先级与结合性
12
4.3 逻辑运算符和逻辑表达式
案例4-4 [案例任务]
逻辑运算中的“短路”现象
分析下列程序的运行结果,掌握多个运算对象 进行“与”、“或”情况下的“短路”现象。
22
4.4
if语句
4.4.2双分支
案例4-6 求两个数中的最大者
23
4.4
if语句
4.4.2双分支
案例4-6 求两个数中的最大者
[案例任务]
由键盘输入两个整数,输出它们中的最大 者。运行结果如下:
C语言程序设计第4章
能够使用if语句和switch语句,进行 选择结构程序设计 会利用多分支结构解决较复杂逻辑 判断问题
目录
CONTENTS
00 案例4 百分制转换等级制 01 4.1 选择结构判定条件的构成 02 4.2单分支和双分支选择结构程序设计 03 4.3 多分支选择结构程序设计
目录
CONTENTS
04 4.4 小结 05 4.5 拓展案例
案例4 百分制转换等级制
问题描述
学生成绩管理系统中需要对老师录入的百分制转换为等 级制。百分制与等级制的对应关系如下:90-100 对应A、 80-89对应B、70-79对应C、60-69对应D、0-59对应E。
问题分析
这是一个需要根据不同条件作出相应选择的程序,根据 描述,我们可以定义float变量fScore用来存放成绩值, 从而根据题目列出下列条件表达式: fScore>=90&&fScore<=100 your grade is A fScore>=80&&fScore<=89 your grade is B fScore>=70&&fScore<=79 your grade is C fScore>=60&&fScore<=69 your grade is D fScore>=0&&fScore<=59 your grade is E
4.4 小结
(1)嵌套if-else语句和switch语句都是用来实现多分支选择结构的,它们的 应用环境不同,嵌套if-else 语句用于对多条件并列测试,从中取一的情形; switch语句用于单条件测试,从其多种结果中取一种的情形。 (2)一般情况下用switch能解决的问题,用嵌套if-else 也一样能解决,反 之用嵌套if-else 语句能解决的问题用switch也能解决,在使用时要根据具体 问题灵活运用。 (3)如果多分支选择结构中需要判断的逻辑关系只是是否相等,则最好用 switch语句。switch语句的执行效率高于嵌套if-else语句。
第四章 用C语言编程1
数据类型、运算符与表达式
常用运算符
算数运算符 + - * / % ++ - 关系运算符 > < == != <= >= 逻辑运算符 && || ! 位运算符 & | ^ << >> ~ 逗号运算符 , 赋值运算符 = 取地址运算符 & 指针运算符 * 条件运算符 <表达式1>?<表达式2>:<表达式3> 长度运算符 sizeof 复合运算符 += -= *= /= &= ^= |= <<= >>= 16
39
函数
函数参数传递的方法 传值调用(传值):将实际参数的值传递给被 调用函数。此时,形式参数值的变化对实际参 数没有任何影响 引用调用(传地址):将实际参数的地址传递 给被调用函数。如,传递一个数组名。此时, 形式参数与实际参数在内存中共用一个地址, 所以,即形式参数的与实际参数操作的是同一 个内存单元,所以形参值的变化就是实参值的 变化。
27
循环语句
while (循环表达式) { 循环体 }
do { 循环体 } while (循环表达式)
for (初始化表达式;循环表达式;增量表达 式) { 循环体; }
28
函数
函数定义的形式:
存储类型 数据类型 函数名(参数表) 参数说明; { 函数体; } 函数名是符合C语言语法规则的标识符 数据类型是基本数据类型或指针 参数表中是形式参数的列表 参数说明是对参数的变量类型进行定义 函数体是函数的执行部分,要实现的功能写在这里
33
函数
函数返回值 函数可以返回一个值给调用它的函数。 返回语句 return 表达式; return(表达式); 无函数也可以不返回值,此时可以只写一个 return;也可以什么都不写。 函数只能返回一个值 不返回值的函数可定义为void类型
第04章 C程序设计
2.逻辑运算符的运算优先级 (1)逻辑非的优先级最高,逻辑与次之,逻辑或最低, 即: !(非) → &&(与) → ||(或) (2)与其它种类运算符的优先关系 !→ 算术运算 → 关系运算 → &&→ || → 赋值运算 4.2.2 逻辑表达式 1.逻辑表达式的概念 所谓逻辑表达式是指,用逻辑运算符将1个或多个表达 式连接起来,进行逻辑运算的式子。在c语言中,用逻辑表 达式表示多个条件的组合。 例如,(year%4==0)&&(year%100!=0)||(year%400==0)就 是一个判断一个年份是否是闰年的逻辑表达式。
程序运行情况如下: Please input three numbers:11,22,18↙ Three numbers after sorted: 11,18,22
1.if语句的一般格式
if(表达式) {语句组1;} [else {语句组2;} ] (1)if语句中的“表达式”必须用“(”和“)”括起来。 (2)else子句(可选)是if语句的一部分,必须与if配对使用,不 能单独使用。 (3)当if和else下面的语句组,仅由一条语句构成时,也可不使 用复合语句形式(即去掉花括号)。
main() {int year,leap=0; /* leap=0:预置为非闰年*/ printf("Please input the year:"); scanf("%d",&year);
if (year % 4==0) {if (year % 100 != 0) leap=1;} else {if (year%400==0) leap=1; } if (leap) printf("%d is a leap year.\n",year); else printf("%d is not a leap year.\n",year);
C语言程序设计第四章
运行情况: 1989↙ 1989is not a leap year.
2000↙
2000 is a leap year.
C程序设计
第五章
选择结构程序设计
例4.6 求
2 ax bx c 0 方程的解
#include "stdio.h" #include "math.h" main() {float a,b,c,d,disc,x1,x2,realpart,imagpart; scanf("%f,%f,%f",&a,&b,&c); printf("The equation"); if (fabs(a)<=1e-6) printf("is not a quadratic"); else disc=b*b-4*a*c; if(fabs(disc)<=1e-6) printf("has two equal roots:%8.4f\n",-b/(2*a)); else if(disc>1e-6) {x1=(-b+sqrt(disc))/(2*a); x2=(-b-sqrt(disc))/(2*a); printf("has distinct real roots:%8.4f and %8.4f\n",x1,x2); } else {realpart=-b/(2*a); imagpart=sqrt(-disc)/(2*a); printf("has complex roots:\n"); printf("%8.4f+%8.4fi\n",realpart,imagpart); printf("%8.4f-%8.4fi\n",realpart,imagpart); } }
c语言程序设计概述
例1.1 输出Good afternoon!
#include <stdio.h>
编译预处理
main()
函数
{
printf(“Good afternoon!”);
语句
}
输出: Good afternoon!
>
例1.2
/* 计算a+b*/ #include <stdio.h> main() { int a,b,sum;
Language,这本书中介绍的C语言成为后来广泛使用的C语言版本的基础,它是实际上第一个C
语言标准。
• 1983年,美国国家标准协会(ANSI),根据C语言问世以来各种版本对C语言的发展和扩充,制
定了第一个C语言标准草案(83 ANSI C)。
• 1989年,ANSI公布了一个完整的C语言标准——ANSI X3.159—1989(常称为ANSI C或C 89)。
double else
enum extern float for
goto
if
int
long register return
short signed sizeof static struct
switch typedef unsigned union void
volatile while
<
基本控制语句:
目录
第1章 C语言概述 第2章 算法 第3章 数据类型、运算符与表达式 第4章 顺序程序设计 第5章 选择结构程序设计 第6章 循环控制 第7章 函数 第8章 数组
问题思考与讨论
1、程序设计有那些语言? 2、智能制造、智能服装与程序设计有什么关系? 3、服装数字化、信息化与程序设计有什么关系?
第4章核磁共振碳谱
4.3 13C的化学位移及影响因素
13C的化学位移是13CNMR的频率及化学位移
计算如下
vC =
γC 2π
B0 (1-)
δC =
v样 - v标 v标
×106 (ppm )
(屏蔽常数)值越大,屏蔽作用越强,δC位于高场端。 以TMS为内标物质。规定TMS的13C的δC为零,位于其左侧
提高灵敏度的方法
(1) 提高仪器灵敏度; (2) 提高仪器外加磁场强度和射频场功率; (3) 增大样品浓度; (4) 采用双共振技术,利用NOE效应增强信号强
度; (5) 多次扫描累加,这是最常用的方法。
2、分辨能力高
13CNMR的δ值范围为0-220ppm, 1HNMR 的常用δ值范围为0-10ppm,约是氢谱的20 倍,其分辨能力远高于1HNMR。
(低场)的δC为正值,右侧(高场)的δC为负值。
一、屏蔽常数
σ=σdia+σpara+σN+σmed
σdia (σ抗磁):为核外局部电子环流产生的抗磁屏蔽,即 在外磁场Bo诱导下,产生与Bo场方向相反的局部磁 场。 σdia随核外电子云密度的增大而增加。
σpara (σ顺磁):为非球形各向异性的电子(如p电子)环 流产生的顺磁屏蔽(去屏蔽)与σd方向相反,反映了 各向异性。除1H核外的各种核,都以σp为主。13C核 的屏蔽,顺磁屏蔽项是主要的。它与电子云密度、激 发能 量和键级等因素有关;
(1)INEPT法 由于核磁共振本身信号灵敏度很低,尤其是低
天然丰度的核(如13C、15N等)更为突出。 INEPT法是在具有两种核自旋的系统中,以
CH为例,通过脉冲技术,把高灵敏1H核的自旋 极化传递到低灵敏的13C核上去,这样由1H到与其 偶合的13C的完全极化传递可使,13C信号强度增 强4倍。
c语言 第四章 选择结构课件
if (expr1) if (expr2) statement1 else statement2
内嵌if
if (expr1) if (expr2) statement1
else statement3
内嵌if
if (expr1) statement1
else if(expr3) statement3 else statement4
if ~ else 配对原则:缺省{ }时,else 总是和它上面离它最近的未配对的if配对
if(……) if(……) if(……) else…... else…...
else…...
例: if (a==b) if(b==c) printf("a==b==c");
else printf("a!=b");
if(x>y) printf("X>Y\n");
else printf("X<Y\n");
else printf("X==Y\n");
}
运行:Enter integer x,y:12,23 X<Y Enter integer x,y:12,6 X>Y Enter integer x,y:12,12 X==Y
内嵌if
if (expr1)
if (expr2) else
statement1 statement2
内嵌if
else
if(expr3) else
statement3 statement4
内嵌if
例 输入两数并判断其大小关系
main() { int x,y;
printf("Enter integer x,y:"); scanf("%d,%d",&x,&y); if(x!=y)
C语言第4章(顾元刚)-5
由于通话计费时间都是取不小于tm的最小整数,所以需对tm进行 “向上舍入”。有两种情况,可分别作如下处理: 若tm不含小数,则不必舍入,其判断的条件为:tm==(int)(tm); 若tm包含小数,则必需舍入,其方法为:tm=(int)(tm+1); 综上,可用下列if语句完成这两项处理过程: if (tm!=(int)tm) tm=(int)(tm+1); (语句4.1) 0.9× rate 当tm≤3 (0.9+(tm-3)×0.6)×rate 当tm>3 cost=
当计算出计费时间tm后,则应收电话费cost可用下列分段函数表示
0.9× rate cost= (0.9+(tm-3)×0.6)×rate 当tm>3
上一张 下一张Biblioteka 当tm≤3于是,可编程序如下:
#include <math.h> 上一张 下一张 main() {int ts; float tm,rate,cost; printf(“Enter ts,tm:”); 向 scanf(“%d,%f”,ts,tm); 上 if(ts>21||ts<7) 舍 { printf(“Half charge rate”); rate =0.5;} 入 else 计 { printf(“Full charge rate”); rate =1.0;} 费 时 if (tm!=(int)tm) tm=(int)(tm+1); 间 if (tm<=3) cost=0.9* rate; else cost=(0.9+(tm-3)*0.6)* rate; printf(“charge of this call is %f\n”, cost ); } 程序运行情况如下:
简明通信原理第4章C
AM
A02 1 2 A02 A02 3
(4-2-8)
评注:此时AM的最大调制效率仅为AM 1/ 3 ,即33.3%。这意味着AM的 调制效率很低,原因在于载波分量不携带信息却占用了大部分功率。
第
4.2.2 抑制载波双边带调制
4
章
模拟调制系统
sDSB (t ) m(t )cos ct
c m 或
fc fm
(4-2-5)
图4-4 “过调幅”现象
否则,已调信号的频谱将会发生混叠,包络 检波也将产生失真。
第
3.AM信号的功率与效率
AM信号的平均功率为
PAM A02 m2 (t ) Pc Pm 2 2
4
章模Biblioteka 调制系统(4-2-6)式中,Pc A02 / 2 为 载波功率 , Pm m2 (t ) / 2 为边带功率。
BAM 2 f m
(4-2-3)
(3)已调信号的频谱仅仅是基带信号频谱的简单搬移
线性调制
第
注意: 上述结果必须符合以下两个条件。 ① m(t ) ma x ≤ A0
4
章
模拟调制系统
(4-2-4)
否则,将发生 “过调幅(over modulation)” 现象,如图4-4所示。
“=”成立时,称为临界调幅 (也称满调幅)。
已调信号 : 经过调制后 的载波,它 含有消息信 号的全部特 征。
消息信号
载波 调制过程中涉及的3种信号
已调信号
“ 消息信号 、 调制信号和基带信号”对于已调信号来说是同义词。 解调 是调制的逆过程 (或称检波) 从已调信号中还原消息信号
第 4.1.2 为什么要进行调制?
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2. 通过造型转换数据类型
3. 显式转换
值类型-引用类型
• 装箱
int i=10; object 0=i; i=20; i值为20 o值为10
引用类型-值类型
• 拆箱
被拆箱的变量值必须是对某个对象的引用, 而此对象是通过对目标值装箱创建的,即先 装箱再拆箱
int i=10;
object o=i; int j=(int)o;
值类型变量:堆 栈(stack) 编译器自动分配、 自动清除 引用类型变量: 值存储在托管堆 (managed heap) 中,地址存储在 堆栈中 由程序员自行申 请分配和释放
4.2.1值类型中的简单类型
简单类型
整型 浮点型 小数型 布尔型
特点
第一,它们都是.NET系统类型的别名,例如:int就是 System.Int32的别名。 第二,由简单类型组成的常量表达式仅在编译时而不是运 行时受检测。
返回
常量和变量的命名规则
• 常量
– – – – – 可以使用字母、数字、下划线等字符; 不可以使用空格、斜杠、逗号、句号等特殊字符; 首字母必须是英文字母; 长度不能超过255个字符; 不能使用C#中的关键字,如using,int,void等。
• 变量
– 变量名的第一个字符必须是字母、下划线或@; – 如果第一个字符是@,则第二个字符不能是数字; – 其余的字符可以是字母、下划线或数字。
第4章 C#语言基础
本章要点
熟悉C#中简单的数据类型和操作符 熟悉C#中三种控制语句 了解C#与其他语言的关系 了解异常处理的方法 了解C#面向对象的几个高级特性
教学内容
C#语言基础 C#语言的数据类型 C#语言的运算符 C#语言的控制语句 C#语言与其他语言的关系 了解C#面向对象的几个高级特性
有符号8位整数 无符号8位整数
有符号16位整数 无符号16位整数 有符号32位整数 无符号32位整数 有符号64位整数 无符号64位整数 16位Unicode字符 32位单精度浮点数 64位双精度浮点数 true或false布尔值 128位高精度浮点数
0 0
0 0 0 0 0L 0 „\0‟ 0.0F 0.0D false 0.0M
2、数组
数组是包含一串变量的数据结构。数组变量也称作数组元 素,它们具有相同的类型,这种类型也称做数组类型。数 组用下标确定每一个数组元素的索引号,索引号从0开始。 只有一个下标的数组称为一维数组,多于一个下标的数组 称为多维数组 在 C++ 中,数组只是一个指针。在 C# 中,数组是包含方 法和属性的对象。例如,可通过 Length 属性查询数组的 大小。 (1) 声明数组时,方括号跟在类型后面。 Int[] a (2) 数组的每个维数的长度不是数组类型的一部分
相关用法:
(1) 取字串长度 str1.length (2) 截取字串的一部分 str1.Substring(0,2); (3) 字串替换 str.Replace(“llo”,”ight”); (4) 字串中指定字符或字串首次(最后一次)出现位臵 str1.IndexOf(“e”); str1.IndexOf(“el”); -1表示未找到
new
子类不会重写基类中的方法,应用于虚方法
C#语言的数据类型-引用类型
ቤተ መጻሕፍቲ ባይዱ• 类
– 类是对一系列具有相同性质的对象的抽象,是对对象共同特征的 描述,是一组具有相同数据结构和相同操作的对象的集合。
• 接口
– 接口是对一组能够提供相同服务的类的抽象,是一种特殊的类, 不实现任何方法或属性,只定义要完成什么任务而不定义如何完 成。
4.2.2 引用类型
(5) 在字串中指定索引位插入指定字符 str1.Insert(5,”,how are you”); (6) 在字串左(或右)加空格或指定char字符,使字串达 到指定长度 str.PadLeft(10,’*’); 默认为空格 (7) 从指定位臵开始删除指定个数的字符 str1.Remove(2,2); (8) 清除字串前后空格 str1.Trim();
4.1 C#简介
C#是Microsoft为.NET平台量身定做的新的程序语言,可以 用来构建在.NET Framework上运行的各种安全、可靠的应 用程序。 C#语言自C/C++演变而来,是一种简洁、类型安全的面向 对象的编程语言。它简化了C++在类、名字空间、方法重载 和异常处理等领域,并借鉴了Java语言的许多优点。 C#的新功能包括严格的类型安全、版本控制、垃圾收集等, 所有这些功能都瞄准了开发面向组件的软件。
– System.Object是.NET框架中所有类型的根类型
方 法 public Equals public GetHashCode public GetType public ReferenceEquals public ToString 描 述 已重载,确定两个对象实例是否相等 作为一个特殊类型的哈希函数,适用于哈希算法和数据结构,如哈希表 获取对象的类型 确定指定的实例是否是相同的实例 返回一个表示当前对象的字符串
4.3 操作符
根据操作符作用的操作数 的个数来分,C#包括多 个一元操作符、多个二元 操作符和一个三元操作符。 当一个表达式包含多个操 作符时,操作符的优先级 决定了计算的顺序。
操作符类别 算术 逻辑 字符串连接
操作符 + - * / % && & + || | !
递增、递减
关系 赋值 成员访问 索引 转换 条件 创建对象
4.2.4数据转换
C#数据类型之间必须显式转换
1. 使用框架类(Parse方法、Convert类)
如:int iAge; iAge=int.Parse(txtAge.Text); iAge=Convert.ToInt32(txtAge.Text); 如:double MyDouble=1.23; int MyInteger; MyInteger=(int)MyDouble; 如:float num=1.23f;
protected Finalize
protected MemberwiseClone
已重载,允许对象在被垃圾回收之前去释放资源并执行其他清理操作
创建一个当前对象的浅层副本
几个引用类型例子 1、字符串类型
string类型 :常见用法
string str1="Hello"; //字符串赋值 string str2=str1+"World!"; //字符串连接 char c1=str1[0]; //通过下标访问字符,从0索引 bool flag=(str1==str2); //比较两个字符串是否相等
4.2.2 引用类型
不存储它们所代表的实际数据,而是存储 实际数据的引用。 C#中的引用类型,其实就是特殊的指针, 既有基本的指针语义,又有C++中引用(别 名)的某些特征。 C#中的引用类型有类、接口、委托、字符 串类型和数组。
C#语言的数据类型-引用类型
• 引用类型的访问限定修饰符
访问限定修饰符 public private 描 述 可以被所有类及其方法访问 仅可以被所定义的类中的方法访问
.NET框架-FCL
• 多种.NET编程语 言的统一类库
– 只要学习一套统一 的类库而不是大量
不同的API
• 7000多种类型
– 依靠命名空间 (Namespace) 将多个提供相似功 能的类组织在相关 的单元中,以分层 的命名空间结构来 组织
4.2 数据类型
C#的数据类型主要有两类:值类型(value type) 和引用类型(reference type)。 值类型包括简单类型(整型、浮点型和布尔型等)、 枚举类型和结构类型。引用类型包括类类型、接口 类型、代表类型、字符串类型和数组类型等。 值类型:变量存储数据本身 引用类型:变量不存储实际数据,而是存储对实际数 据的引用。
4.2.3其它数据类型
DateTime日期时间类型 :表示值范围在公元0001年1月1 日午夜12:00:00到公元9999年12月31日晚上11:59:59之间 的日期和时间
DateTime currentTime; currentTime=System.DateTime.Now; //取当前年月日时分秒 int year=currentTime.Year; //取当前年 int month=currentTime.Month; //取当前月 int day=currentTime.Day; //取当前日 int hour=currentTime.Hour; //取当前时 int minute=currentTime.Minute; //取当前分 int second=currentTime.Second; //取当前秒 string strCurrentTime=currentTime.ToString(); //取当前时间作为字符串返回
protected
internal protected internal
仅可以被所定义的类及其派生类中的方法访问
仅可以被所定义的同一项目中的方法访问 仅可以被所定义的类、派生类及同一项目中的方法访问
• 引用类型的预定义特性
预定义特性 abstract sealed 描 述 不能被实例化,可以用做其他类型的基类型;如果派生 类不是抽象的,则可以创建它的实例 不能用做基类型
• 委托
委托类似于C和C++等编程语言中的函数指针,用于封装某个方 法的调用过程。但在C#中,委托是完全面向对象的,它所封装的方 法必须与某个类或对象相关联。