实验二 运算符和表达式

实验二  运算符和表达式
实验二  运算符和表达式

实验二运算符和表达式

实验时间:2010年10月8日

【实验目的】

1、掌握C语言各种基本数据类型的定义和表示方法;

2、掌握变量的定义、赋值方法;

3、掌握基本运算符的功能及其应用;

4、掌握基本运算符的优先级和结合性;

5、掌握表达式的概念及运算规则;

6、掌握常用数据类型的转换规则。

【实验内容】

1、常用基本数据类型的存储长度,求字节运算符的使用;

2、运算符及其表达式的应用;

3、数据类型的自动转换与强制转换。

【实验步骤】

一、在E或F盘上建立以自己的学号命名的文件夹。

二、内容与步骤

1、求字节运算符的使用

利用sizeof()函数,了解C语言各种数据类型所占用的存储空间大小,将编写的源程

2、写出下列程序运行的结果

⑴、/*ex2_2.c*/

#include

#define PRICE 12.5

main()

{ int num=3;

float total;

char ch1,ch2=…D?;

total=num*PRICE;

ch1=ch2-…A?+…a?;

printf(“total=%f,ch1=%c\n”,total,ch1);

}

⑵、/*ex2_3.c*/

# include

main()

{

int i, j, k;

int m, n, p;

i = 8;

j = 10;

k = 12;

/* 自增在操作数之前*/

m = ++i;

printf("i = %d\n", i);

printf("m = %d\n", m);

/* 自减在操作数之后*/

n = j--;

printf("j = %d\n", j);

printf("n = %d\n", n);

/* 自增、自减的混合运算*/

p = (++m)*(n++)+(--k);

printf("k = %d\n", k);

printf("p = %d\n", p);

}

3、运算符的优先级别和结合性:请写出下列程序运行的结果,并进行分析。/*ex2_4.c*/

#include

Main()

{

int x,y,z;

x=y=z=-1;

++x&&++y||++z;

printf(“x=%d\ty=%d\tz=%d\n”,x,y,z);

/*”\t”为按横向跳格格式输出*/

x=y=z=-1;

++x||++y&&++z;

printf(“x=%d\ty=%d\tz=%d\n”,x,y,z);

x=y=z=-1;

++x&&++y&&++z;

printf(“x=%d\ty=%d\tz=%d\n”,x,y,z);

}

4、位运算符的使用

位运算符C语言提供了六种位运算符:

| 按位或

^ 按位异或

~ 取反

<< 左移

>> 右移

⑴按位与运算

按位与运算符“&”是双目运算符。其功能是参与运算的两数各对应的二进位相与。只有对应的两个二进位均为1时,结果位才为1 ,否则为0。参与运算的数以补码方式出现。

例如:9&5

可写算式如下:00001001 (9的二进制补码)&00000101 (5的二进制补码) 00000001 (1的二进制补码)可见9&5=1。

按位与运算通常用来对某些位清0或保留某些位。例如把a 的高八位清0 ,保留低八位,可作a&255 运算( 255 的二进制数为0000000011111111)。

⑵按位或运算

按位或运算符“|”是双目运算符。其功能是参与运算的两数各对应的二进位相或。只要对应的二个二进位有一个为1时,结果位就为1。参与运算的两个数均以补码出现。

例如:9|5

可写算式如下:00001001|00000101

00001101 (十进制为13)可见9|5=13

main()

{

int a=9,b=5,c;

c=a|b;

printf("a=%d\nb=%d\nc=%d\n",a,b,c);

}

⑶按位异或运算

按位异或运算符“^”是双目运算符。其功能是参与运算的两数各对应的二进位相异或,当两对应的二进位相异时,结果为1。参与运算数仍以补码出现,例如9^5

可写成算式如下:00001001^00000101 00001100 (十进制为12)

/*ex2_5.c*/

#include

main()

{

int a=9;

printf("a=%d\n",a);

}

⑷求反运算

求反运算符~为单目运算符,具有右结合性。其功能是对参与运算的数的各二进位按位求反。

例如~9

运算为:~(0000000000001001)结果为:1111111111110110

/*ex2_6.c*/

#include

main()

{

int a=9;

a=~9;

printf(“b=%d\n",a);

}

⑸左移运算

左移运算符“<<”是双目运算符。其功能把“<< ”左边的运算数的各二进位全部左移若干位,由“<<”右边的数指定移动的位数,高位丢弃,低位补0。例如:a<<4 指把a的各二进位向左移动4位。如a=00000011(十进制3),左移4位后为00110000(十进制48)。

⑹右移运算

右移运算符“>>”是双目运算符。其功能是把“>> ”左边的运算数的各二进位全部右移若干位,“>>”右边的数指定移动的位数。

例如:设a=15,a>>2

表示把000001111右移为00000011(十进制3)。应该说明的是,对于有符号数,在右移时,符号位将随同移动。当为正数时,最高位补0,而为负数时,符号位为1,最高位是补0或是补1 取决于编译系统的规定。Turbo C和很多系统规定为补1。

5、程序调试与编程

(1)求圆锥体积,判定下列程序是否正确:

main( )

{

int r=5, h=15;

double v;

v=1/3*3.14*r*r*h;

printf(“v=%f ”,v);

}

并将修改后的程序,以ex2_7.c保存在自己的文件内。

(2)计算下面各程序段的输出结果

int a=3,b=2,c;

①b*=a+4*3%5;

printf("%d“,b );

②a=8;

a*=b=c=3;

printf("%d,%d“,a,b);

③a=5+(c+=3);

printf("%d,%d“,a,c);

并将编译运行后的程序,分别以ex2_8.c、ex2_9.c、ex2_10.c命名,保存在自己的文件内。

(3)已知:a=3,b=2, c =1, 编程计算并输出下面各表达式的值,

①c > a+b ②a>b== c③a==b

④m=b> c⑤m=a>b>c ⑥c+1>= a

⑦c *2 != b ⑧m=c==a%b

并将编译运行后的程序,以ex2_11.c命名,保存在自己的文件内。

(4)计算下面各程序段的输出结果

①int i=2 ; float f =3.6; double d=3.2;

long int e=45;

10+…a?+i*f-d/e ;

②char st=…a? ;

printf(“%d”,st);

③int a;

double b=3.25 ;

a=(int)b+8;

printf(“%d, %f ”,a,b);

④main( )

{

int a=1,b=2,c=3,d=4;

int m, n=1;

m=a>b&&(n=c>d);

printf("m=%d,n=%d\n",m,n);

}

⑤int a , b ,c ;

c=( a=1 , b = 3 , a+b )

⑥x = ( a=3, 6*a )

x = a = 3, 6*a

⑦int x=5, y=2, z ;

z = sizeof( x > y? 1 : 1.5 );

⑧int a=1,b=2,c=3,d=4,m ;

m = a>b ? a : c>d ? c :d ;

并将编译运行后的程序,分别以ex2_12.c、ex2_13.c、ex2_14.c、ex2_15.c、ex2_16.c、ex2_17.c、ex2_18.c、ex2_19.c、ex2_20.c命名,保存在自己的文件夹内。【实验小结】

应知:

1、基本运算符的功能及其应用;

2、基本运算符的优先级和结合性;

3、基本数据类型及其转换。

应会:

1、各种运算符及其表达式的应用;

2、各种表达式的正确表示;

3、数据类型转换规则。

【实验思考】

1、请说明自增/自减运算符(++/--)前置运算和后置运算的区别。

2、试列出常用几种运算符的优先级别与结合方向。

3、数据类型转换的规则是什么?

运算符与表达式练习题附答案

1. 以下运算符中优先级最高的是()。 A.&&B.+ C.!= D.?: 2.能正确表示逻辑关系:“a≥10或a≤0”的C语言表达式是()。 A.a>=10 or a<=0 B.a>=10| a<=0 C.a>=10 && a<=0 D.a>=10||a<=0 3. C语言中运算对象必需是整型的运算符是()。(A)+ (B)/ (C)% (D)* 4. 已知int i;float f;正确的表达式是()。 A)(int f)%i B) int(f)%i C) int(f % i) D) (int)f % i 5. 下列程序的输出结果是()。 void main( ) { int a=7,b=5; printf("%d\n",b=b%a); } (A)0 (B)1 (C)5 (D)不确定值6. 若有定义:int a=8,b=5,c;,执行语句c=a/b+0.4;

后,c的值为()。 (A)1.4 (B)1 (C)2.0 (D)2 7. 已知x=4.5,y=2.5,求表达式(x+y)/2+(int)y%(int)x的值()。 A) 3 B) 5 C) 3.5 D) 5.5 8. 已知各变量的类型如下 int i=8,k,a,b; unsigned long w=5; double x=1.42,y=5.2; 则以下符合C语言语法的表达式是()。 (A)a+=a-=(b=4)*(a=3)(B)a=a*3+2 (C)x%(-3)(D)y=float(i) 9. 已知int a,b;执行语句a=(b=3*2,b*4),a+6;后变量a的值为()。 A) 6 B) 12 C) 24 D)30 10. 若有以下程序 main() { int k=2,i=2,m; m=(k+=i*=k);

实验8--友元函数与运算符重载函数

实验十三 1.实验目的 通过本次实验 (1)理解友元函数与运算符重载函数的概念; (2)学会友元函数的定义与使用方法; (3)掌握运算符重载函数的定义与使用方法; 2.实验要求 (1)编写实验程序 (2)在VC++运行环境中,输入源程序 (3)编译运行源程序 (4)输入测试数据进行程序测试; (5)写出运行结果。 3.实验内容 (1)定义一个复数类,重载“-=”运算符,使这个运算符能直接完成复数的“-=”运算。分别用成员函数与友元函数编写运算符重载函数。在主函数中定义复数对象c1(10,20)、c2(15,30),进行c2-=c1的复数运算,并输出c1、c2的复数值。 参考资料: (1)成员函数 # include class Complex { private: float Real,Image; public: Complex(float r=0,float i=0) { Real=r;Image=i;} void Show(int i) { cout<<"c"< class Complex { private: float Real,Image; public: Complex(float r=0,float i=0) { Real=r;Image=i;} void Show(int i) { cout<<"c"<

(完整word版)C语言运算符与表达式的练习题答案

C语言运算符与表达式的练习题 单项选择题 (1)以下选项中,正确的 C 语言整型常量是(D)。 A. 32L B. 510000 C. -1.00 D. 567 (2)以下选项中,(D)是不正确的 C 语言字符型常量。 A. 'a' B. '\x41' C. '\101' D. "a" (3)字符串的结束标志是(C)。 A. 0 B. '0' C. '\0' D. "0" (4)算术运算符、赋值运算符和关系运算符的运算优先级按从高到低依次为(B)。 A. 算术运算、赋值运算、关系运算 B. 算术运算、关系运算、赋值运算 C. 关系运算、赋值运算、算术运算 D. 关系运算、算术运算、赋值运算 (5)逻辑运算符中,运算优先级按从高到低依次为(D)。 A. && ! || B. || && ! C. && || ! D. ! && || (6)表达式!x||a==b 等效于(D)。 A. !((x||a)==b) B. !(x||y)==b C. !(x||(a==b)) D. (!x)||(a==b) (7)设整型变量 m,n,a,b,c,d 均为1,执行 (m=a>b)&&(n=c>d)后, m,n 的值是(A)。 A. 0,0 B. 0,1 C. 1,0 D. 1,1 *(8)设有语句 int a=3;,则执行了语句 a+=a-=a*=a; 后,变量 a 的值是(B)。 A. 3 B. 0 C. 9 D. -12 (9)在以下一组运算符中,优先级最低的运算符是(D)。 A. * B. != C. + D. = (10)设整型变量 i 值为2,表达式(++i)+(++i)+(++i)的结果是(B,上机13)。 A. 6 B. 12 C. 15 D. 表达式出错 (11)若已定义 x 和 y为double 类型,则表达式的值是(D)。

C语言中的逻辑运算符和位运算符总结

一、逻辑运算符: 包括:1。&&逻辑与 2。||逻辑或 3。!逻辑非 逻辑运算符用于对包含关系运算符的表达式进行合并或取非 对于使用逻辑运算符的表达式,返回0表示“假”,返回1表示“真”。关于逻辑运算符的解释 请注意:任何使用两个字符做符号的运算符,两字符之间不应有空格,即将==写成= =是错误的。 假设一个程序在同时满足条件a<10和b==7时,必须执行某些操作。应使用关系运算符和逻辑运算符“与”来写这个 条件的代码。用&&表示“与”运算符,该条件代码如下: (a<10) && (b==7); 类似地,“或”是用于检查两个条件中是否有一个为真的运算符。它由两个连续的管道符号(||)表示。如果上例 改为:如果任一语句为真,则程序需执行某些操作,则条件代码如下: (a<10) || (b==7); 第三个逻辑运算符“非”用一个感叹号(!)表示。这个运算符对表达式的真值取反。例如,如果变量s小于10,程序 程序需执行某些操作,则条件代码如下: (s<10) 或 (!(s>=10)) //s不大于等于10 关系运算符和逻辑运算符的优先级一般都低于算术运算符。例如,5>4+3的计算与5>(4+3)运算符是一样的,即 先计算4+3,再执行关系运算。此表达示的结果为“假”,即,将返回0。 下面的语句 printf("%d",5>4+3); 将输出 0 可以总结为:&&的结果是真真为真。||的结果是假假为假。 与A&&B 只有A B都为真才是真 或A||B 只有A B都为假才是假 非 ~A A为真时,此式为假 二、位运算符: 包括:1。&位与符 2。|位或符 3。^位异或符 4。~位取反符 以操作数12为例。位运算符将数字12视为1100。位运算符将操作数视为位而不是数值。数值 可以是任意进制的:十进制、八进制或十六进制。位运算符则将操作数转化为二进制,并相应地返回1或0。 位运算符将数字视为二进制值,并按位进行相应运算,运算完成后再重新转

实验五 运算符重载

实验五运算符重载 【实验目的】 1.进一步了解运算符重载的概念和使用方法。 2.掌握几种常用的运算符重载的方法。 3.了解转换构造函数的使用方法。 4.了解在Visual C++6.0环境下进行运算符重载要注意的问题. 【实验要求】 1.硬件基本配置:Intel PentiumIII以上级别的CPU,大于64MB的内存。 2.软件要求:Window 2000操作系统,Visual Studio 6.0或更高版本开发环境。 3.实验学时:2学时 4.实现实验内容中的题目。 5.写实验报告 【实验内容】 (1)声明一个复数类Complex,重载运算符“+’’,“一”,“*”,“/”使之能用于复数的加、减、乘、除.运算符重载函数作为Complex类的成员函数,重载流提取运算符实现对复数的输出。编程序,分别求两个复数之和、差、积和商并用重载后的流运算符进行输出。 请思考:你编的程序能否用于一个整数与一个复数的算术运算?如4+ (5-2i). (2)声明一个复数类Complex,重载运算符“+“,使之能用于复数的加法运算。 参加运算的两个运算量可以都是类对象.也可以其中有一个是整数,顺序任意。例如, cl+c2, i+cl,cl+i均合法(设i为整数,c1, c2为复数)。 运行程序.分别求两个复数之和、整数和复数之和。 (3)有两个矩阵a和b,均为2行3列。求两个矩阵之和。重载运算符“+”,使之能用于矩阵相加。如c=a+b。重载流提取运算符实现对矩阵的输出如:cout<

C语言运算符与表达式的练习题

C语言运算符与表达式的练习题 (作业写到纸质作业本上,在规定时间内交给助教批阅,不要 再网上提交) 一、单项选择题 (1) 以下选项中,正确的C 语言整型常量是。 A. 32L B. 510000 C. -1.00 D. 567 (2) 以下选项中,是不正确的C 语言字符型常量。 A. 'a' B. '\x41' C. '\101' D. "a" (3) 在C 语言中,字符型数据在计算机内存中,以字符 的形式存储。 A. 原码 B. 反码 C. ASCII 码 D. BCD码 (4) 字符串的结束标志是。 A. 0 B. '0' C. '\0' D. "0" (5) 算术运算符、赋值运算符和关系运算符的运算优先级按 从高到低依次为。 A. 算术运算、赋值运算、关系运算 B. 算术运算、关系运 算、赋值运算

C. 关系运算、赋值运算、算术运算 D. 关系运算、算术运算、赋值运算 (6) 逻辑运算符中,运算优先级按从高到低依次为。 A. &&,!,|| B. ||,&&,! C. &&,||,! D. !,&&,|| (7) 表达式!x||a==b 等效于。 A. !((x||a)==b) B. !(x||y)==b C. !(x||(a==b)) D. (!x)||(a==b) (8) 设整型变量m,n,a,b,c,d 均为1,执行(m=a>b)&&(n=c>d)后, m,n 的值是。 A. 0,0 B. 0,1 C. 1,0 D. 1,1 (9) int b=0,x=1;执行语句if(x++) b=x+1; 后,x,b 的值依次为。 A. 2,3 B. 2,0 C. 3,0 D. 3,2 (10) 设有语句int a=3;,则执行了语句a+=a-=a*=a; 后,变量 a 的值是。 A. 3 B. 0 C. 9 D. -12 (11) 在以下一组运算符中,优先级最低的运算符是。 A. * B. != C. + D. =

实验十_运算符重载

实验十运算符重载1.实验目的及要求 1)掌握运算符重载的基本概念和方法。 2)熟习几种特殊的运算符的重载。 2.实验内容 1.分析下面的程序,指出程序运行的结果: 1) #include class point{ int x,y; public: point(int vx,int vy){ x=vx; y=vy;} point(){x=0,y=0;} point operator+(point p1) { int px=x+p1.x; int py=y+p1.y; return point(px,py); } point operator-(point p1) { point p; int px=x-p1.x; int py=y-p1.y; return point(px,py); } void print(){cout<

运行结果为: 30,30 Press any key to continue 2)分析下面程序,指出程序运行的结果: #include static int dys[]={31,28,31,30,31,30,31,31,30,31,30,31}; class date { int mo,da,yr; public: date(int m,int d,int y){mo=m;da=d;yr=y;} date(){} void disp() {cout<dys[dt.mo-1]) {day-=dys[dt.mo-1];//cout<

实验二 运算符和表达式

实验二运算符和表达式 实验时间:2010年10月8日 【实验目的】 1、掌握C语言各种基本数据类型的定义和表示方法; 2、掌握变量的定义、赋值方法; 3、掌握基本运算符的功能及其应用; 4、掌握基本运算符的优先级和结合性; 5、掌握表达式的概念及运算规则; 6、掌握常用数据类型的转换规则。 【实验内容】 1、常用基本数据类型的存储长度,求字节运算符的使用; 2、运算符及其表达式的应用; 3、数据类型的自动转换与强制转换。 【实验步骤】 一、在E或F盘上建立以自己的学号命名的文件夹。 二、内容与步骤 1、求字节运算符的使用 利用sizeof()函数,了解C语言各种数据类型所占用的存储空间大小,将编写的源程 2、写出下列程序运行的结果 ⑴、/*ex2_2.c*/ #include #define PRICE 12.5 main() { int num=3; float total; char ch1,ch2=…D?; total=num*PRICE; ch1=ch2-…A?+…a?; printf(“total=%f,ch1=%c\n”,total,ch1); } ⑵、/*ex2_3.c*/ # include main()

{ int i, j, k; int m, n, p; i = 8; j = 10; k = 12; /* 自增在操作数之前*/ m = ++i; printf("i = %d\n", i); printf("m = %d\n", m); /* 自减在操作数之后*/ n = j--; printf("j = %d\n", j); printf("n = %d\n", n); /* 自增、自减的混合运算*/ p = (++m)*(n++)+(--k); printf("k = %d\n", k); printf("p = %d\n", p); } 3、运算符的优先级别和结合性:请写出下列程序运行的结果,并进行分析。/*ex2_4.c*/ #include Main() { int x,y,z; x=y=z=-1; ++x&&++y||++z; printf(“x=%d\ty=%d\tz=%d\n”,x,y,z); /*”\t”为按横向跳格格式输出*/ x=y=z=-1; ++x||++y&&++z; printf(“x=%d\ty=%d\tz=%d\n”,x,y,z); x=y=z=-1; ++x&&++y&&++z; printf(“x=%d\ty=%d\tz=%d\n”,x,y,z); } 4、位运算符的使用 位运算符C语言提供了六种位运算符:

03填空题(运算符与表达式)

2.2 填空题 (191)&运算符作为单目运算符时表示的是____运算;作为双目运算符时表示的是_____运算。 (192)请计算sizeof的值: char str[] = "Hello" ; char *p = str ; int n = 10; 请计算 sizeof (str ) = ____ sizeof ( p ) = _____ sizeof ( n ) = ______ (193)请计算sizeof的值: void Func ( char str[100]) { // 请计算 sizeof( str ) = _____ } (194)请计算sizeof的值: void *p = malloc( 100 ); // 请计算 sizeof ( p ) = ______ (195)下列程序段的输出是_______。 #define f(a, b, x) a*x+b printf("%d, %d\n", f(3,2,1), f(6, 5, f(3, 2, 1))); (196)下列程序段的输出是_____。 main() { int k; for(k=1; k<5; k++) { if(k % 2) printf("*"); else continue; printf("#"); } } (197)下列程序段的输出是_____。 int *p, *q, k=5, j=6; q=&k; p=q;

q=&j; printf("%d", *p); (198)设有语句int a=3;则执行了语句a+=a-=a*a;后,变量a的值是____。 (199)下面程序的输出是_________。 V oid main(void) { int a = 2; printf("%d %d %d\n", a, ++a, a--); } (200)有int i, j, k; 则表达式i=1,j=2,k=3, i&&j&k 的值为______。 (201)设y是int型变量,请写出判断y为非法的关系表达______。 (202)若已定义:int a[10], i;,以下fun函数的功能是:在第一个循环中给前10个数组元素依次赋1、2、3、4、5、6、7、8、9、10;在第二个循环中使a数组前10个元素中的值对称折叠,变成1、2、3、4、5、5、4、3、2、1。请填空。 fun(int a[ ]) { int i; for(i=1; i<=10; i++) _____ = i; for(i=0; i<5; i++) ______ = a[i]; } (203)设ch是字符型变量,判断ch为英文字母的表达式是______。 (204)下列程序段的输出结果是______。 printf("%xn", (0x19 <<1) & 0x17); (205)表示x≥y≥z的C表达式是_______。 (206)下列程序段的输出是______。 printf("%on", 010<<1^1); (207)下列程序段的输出是______。 int k; float s; for (k=0, s=0; k<7; k++) { s += k/2; } printf("%d, %fn", k, s); (208)设x和y均为int型变量,且x=1,y=2,则表达式1.0+x/y的值为_____________。

逻辑运算符用于构成逻辑表达式

逻辑运算符用于构成逻辑表达式,从而实现逻辑判断功能。逻辑运算符包括逻辑与(And),逻辑非(Not),逻辑或(Or),逻辑异或(Xor),逻辑相等(Eqv)和逻辑蕴含(Imp)。 (1)逻辑与And 逻辑与的语法为: 当且仅当两个表达式expressionl莉expression2都为真时,其结果result才为真则当两个表达式中有一个为假时,其结果必为假False。 (2)逻辑非Not 逻辑非的语法为: Not为单目运算符,后跟的expression为关系表达式或算术表达式。 当关系表达式为True时,其结果为False;当关系表达式为False时,结果为Tme。 当算术表达式取值为1时,结果为0;当算术表达式取值为0时,结果为1。 (3)逻辑或Or 逻辑或的语法为: 当Or两边的表达式中有一个为True时,结果result就为TRUE;只有两个表达式均为FALSE时,其结果才为False。 (4)逻辑异或Xor 逻辑异或的语法为: 所谓的“异或",就是当两个表达式的值不同时(即一个为True,另一个为FALSE),其结果为True;当两个表达式的值相同(都为True或都为False)时,结果为False。也就是“异"则“真”,“同”则“假”。 (5)逻辑相等Eqv 逻辑等价运算的语法为: 逻辑“相等"与“异或"运算是一对互逆运算符,即当两个表达式的值相同(都为True或都为False) 寸,其结果为True;当两个表达式的值不同(一个为True,另一个为False)时,其结果为False。只要表达式中有一个为Null,则结果为Null。 (6)逻辑蕴含Imp 逻辑蕴含的语法为: result=expres sion l Imp expression2 “蕴含"逻辑的真值表见表2-9,只有当第一个表达式expressionl为True,第二个表达式expreesion2为False时,结果才为False,其他情况下结果均为True。

实验5-运算符重载、继承 ( 1 )

实验五运算符重载、继承 ●实验目的 1、了解类的两种使用方式。 2、学习从现有类派生出新类的方式。 3、了解在派生类中如何使用基类的成员。 4、了解基类成员在派生类中的访问控制。 5、掌握运算符重载的方法。 ●实验内容 1、从类Person中派生出一个教师类,新增的属性有专业(Specialty)、职称(Position)和主讲课程(MajorCourse,一门),并为这些属性定义相应的方法。 [实现要求] Person类的设计如下,请将空白处补充完整。 class Person { string Name; int Age; string Sex; public: void Register(char *name,int age,char *sex) { ; Age=age; Sex=sex; } string GetName() { } string GetSex() { return Sex; } int GetAge() { } void ShowMe() { cout<

//带参数的构造函数去初始化各个成员的值,使其显示运行结果的第一行t.TeacherRegister("张三",40, "f","计算机","副教授","C++"); t.ShowMe(); return 0; } 运行结果如下: XXX m 0 XXX XXX XXX 张三 f 40 计算机副教授C++ [思考问题] ①在Teacher类中是否要需要重新定义ShowMe成员函数?不重新定义ShowMe成员函数能否得到上述要求的运行结果?为什么? 2、从Point类中派生出一个Line类。Line类增加一个数据成员EndPoint,计算线的长度。 [实现提示] Point类可以按下面方式进行设计: class Point{ int x,y; public: Point(int a=0,int b=0){SetPoint(a,b);} void SetPoint(int a,int b); //设置点的坐标值 int GetX(){return x;} int GetY(){return y;} void Print(); //显示点的坐标值 }; Line类增加一个数据成员EndPoint为Point类对象,注意在设计Line类的构造函数时应为其基类和对象成员EndPoint提供形参。 为了检验Line类的功能,主函数按如下方式设计: int main(){ Line line(1,1,10,10); cout<<"Line line:"; line.Print(); cout<<"\n线line的长度:"; cout<

运算符和表达式教案

QBASIC语言程序设计之 运算符和表达式 科目:计算机 授课人:赵华 时间:2007年10月

《运算符和表达式》教案 教学目标: 1、识记运算符的分类及表达式的定义。 2、掌握算术运算符的运算规则。 3、掌握QBASIC表达式的书写规则。 4、掌握算术表达式的求值方法。 教学重点: 1、掌握算术运算符的运算规则。 2、掌握算术表达式的求值方法。 教学难点: 1、掌握算术运算符的运算规则。 2、掌握算术表达式的求值方法。 课前巩固: 1、函数SQR(X)的功能是什么?(举例介绍) 2、函数INT(X)的功能是什么?(举例介绍) 教学内容: 一、运算符的分类 运算符表示对数据进行的具体运算。在QBASIC中分为四类:算术运算符、字符串运算符、关系运算符、逻辑运算符本节我们重点学习算术运算符和算术表达式的有关内容。 二、算术运算符 1、种类: 2、运算规则: ①^ 是乘方运算符: 例如:6^2就表示数学上的62,其值等于36。 2^-2就表示数学上的2-2,其值等于0.25。

② \ 是整除运算符: 运算功能是:如果参与运算的两个数是整数,运算结果为商的整数部分;如果参与运算的量含有小数,则系统先将它们按四舍五入转换为整数,然后再进行运算。 例1: 7 \ 2 = 3 10 \ 4 = 2 例2: 8.7 \ 5 = 1 12.37 \ 4.78 = 2 ③ MOD 是求余运算符: 运算功能是:如果参与运算的两个数是整数,运算结果为两数相除后的余数;如果参与运算的量含有小数,则系统先将它们按四舍五入转换为整数,然后相除取它们的余数。 例1: 12 MOD 5 = 2 23 MOD 4 = 3 例2: 11.7 MOD 8 = 4 13.23 MOD 4.76 = 3 三、算术表达式 1、什么叫表达式? 是指用圆括号和运算符将常量、变量和函数连接起来的式子。 2 、表达式分为哪几类? 根据运算性质不同可分为四类: 算术表达式 、 字符表达式 、 关系表达式 、 逻辑表达式 3、什么是算术表达式? 就是用圆括号和算术运算符将数值常量、变量和函数连接起来的式子。 4、怎样把代数式写成QBASIC 的算术表达式 例1: 2X + Y +6 写成QBASIC 表达式为: 2*X +Y + 6 例2:A AC 24B +B -2-写成QBASIC 表达式为: (-B+SQR (B^2-4*A*C ))/(2*A) 例3: B A y x +写成QBASIC 表达式为: (ABS (X )* ABS (Y ))/(A+ B )

实验十六运算符重载解读

实验十六运算符重载 一、实验目的 1、理解运算符重载作用和意义; 2、掌握类运算符和友元运算符重载的定义和使用; 3、掌握常用运算符(++、--、+、-、*、/、=、+=、-=、*=、/=、<<(插入)、>>(提取))的重载。 二、实验内容 1、下列程序定义了一个复数类,重载"+"运算符以实现复数的加法运算。 #include class Complex{ float Real,Image; //复数的实部和虚部 public: Complex(float r=0,float i=0) //初始化对象 { Real=r,Image=i; } float& AccessR() //存取实部 { return Real; } float& AccessI() //存取虚部 { return Image; } void Show() //显示复数 { cout<=0) cout<<"\t+"; else cout<<"\t"; cout<

逻辑运算符和表达式(c语言)

南京高等职业技术学校 课堂教学设计 授课时间:2014年11月6日第11周星期四教学目标教学准备 授课教师课时课程通过本节课的学习,学生能够: 1.清晰地说出各种逻辑运算符; 2.正确运算出逻辑表达式的值,并 通过程序验证结果; 重点教案□√ 马丽娟 1 C语言多媒体课件□√班级授课地点课题教学讲义□ 512212 机房4.2逻辑运算符与逻辑表达 式 1.逻辑表达式的求值运算; 2.逻辑表达式的求值优化。 学生工作页□ 课堂特殊要求(指教师、学生的课前准备活动等) 教师:安装Win-TC程序难点 教具□√ 逻辑表达式的求值优化授课形式 理论讲授课 教学环节时间分配教师活动学生活动教学方法媒体手段导入新课 5 提出问题,并举例说明听讲、思考、回答讲授法PPT 新课讲授20 讲授、分析听讲、讨论并记录讲授法PPT 巩固练习15 布置任务、巡视、答疑思考、编程并回答问题练习法Win-TC 课堂小结 3 归纳、总结听讲、回答问题讲授法PPT 布置作业 2 布置作业记录讲授法PPT 板书设计 §4.2 逻辑运算符与逻辑表达式 ?逻辑运算符:&&、||、! ?逻辑表达式的值:非0即1 ?逻辑运算的求值优化工作任务/教学情境设置 无课后作业 书面作业:P52 随堂练习 课后反思

教案纸 教学内容 4.2 逻辑运算符与逻辑表达式 一、复习导入(5min) 1. 复习:请学生说出关系运算符有哪些? 请学生回答关系运算表达式的值? 教师进行补充。 2.导入新课: 1、学生参加技能大赛培训的条件? ?扎实的专业知识与较高的实践能力 教师强调与的关系 2、参加技能大赛集训而停课的条件? ?移动互联或智能家居 教师强调或的关系 3、学生回答引入禁烟区的条件? ?没有吸烟非 教师强调非的关系 二、新课讲授(20min) 逻辑运算符 1.教师根据逻辑关系给出三种逻辑运算符的表示形式: &&、||、! 2.教师利用具体的表达式关系分析各种逻辑运算符的作用: 逻辑与相当于英语中的and; 逻辑或相当于英语中的or; 逻辑非相当于英语中的no; 3.教师根据具体的逻辑关系引出逻辑表达式的概念及表示形式: 表达式1&&表达式2 a&&b 表达式1||表达式2 a || b !表达式!a

C++运算符和表达式

2.4C++的运算符和表达式 运算符是施加在数据上的重要操作,变量、常量通过操作符组合成C++的表达式,构成了C++程序的基本要素。本节将介绍C++语言中基本运算符和表达式。 2.4.1C++中的基本运算符 运算是对数据的加工过程,而标识不同运算的符号称职运算符,参与运算的数据称为操作数。表2.3列出了C++中的基本运算符、其优先级及对操作数的结合性。 注:优先级相同的运算符,其执行顺序由该运算符在语句中的位置先后决定。 根据参与运算的操作数的类型不同,运算符可以分为单目运算符(1个操作数)、双目运算符(2个操作数)、三目运算符(3个操作数)。有一些运算符既可以是单目的,也可以是双目的,根据赋予该运算符的操作数的不同,运算符具有不同的功能。 例如:*pFile; var1*var2;

运算符的优先级和数学运算中的优先级意义相同,它决定了一个操作符在表达式的运算顺序,优先级越高,运算次序越靠前。而结合性则决定一个操作符对其操作数的运算顺序。如果一个操作符对其操作数的操作运算是自左向右执行的,则称该操作符是右结合的;反之如果一个操作符对其操作数的操作运算是自右向左执行的,则称该操作符是左结合实际的。 根据操作符表示的运算的性质不同,可以将C++中的操作符分为算术运算、关系运算符、逻辑运算符、赋值运算符、条件运算符、自增自减运算符、位运算符和sizeof运算符等。下面分别进行讨论。 1、算术运算符 表2.4列出了C++中的算术运算符。 对于单目运算符-,其返回值的数据类型与操作数的数据类型相同.对于双目运算符+、-、*和/,若其两个操作数的数据类型相同,则返回值的数据类型与操作数的数据类型相同;若两操作数的数据类型不同,则返回值的数据类型与字长较长的操作数的数据类型相同。 注意:两个整数相除的结果仍然是整数。若被除数不能被除数整除,则相除的结果将被取整,其小数部分将被略去。 例如:34/7;12.5%3(非法)35%7 在某些情况下,算术运算表达式会产生某些问题,计算的结果将给出错误或没有定义的数值,这些情况称为运算异常。对不同的运算异常,将产生不同的后果。在C++中,除数为零和实数溢出被视为一个严重的错误而导致程序运行的异常终止。而整数溢出则不被认为是一个错误(尽管其运算结果有可能与预期值不同)。因此,在一些与硬件打交道的低级程序中利用整数溢出查看设备的状态位等。 2、关系运算符 表2.5列出了C++中的关系运算符,它们都是双目运算符。关系运算符的返回值只有逻辑真和逻辑假两种。当两个操作数满足关系运算符所要求的比较关系时,返回整型数1(真);否则返回整型数0(假)。 表2.5 C++中的关系运算符 var3=(var1

实验5 运算符重载

实验5 运算符重载 1.实验目的 通过本次实验 (1)理解运算符重载函数的概念; (2)掌握运算符重载函数的定义与使用方法; 2.实验要求 (1)编写实验程序 (2)在运行环境中,输入源程序 (3)编译运行源程序 (4)输入测试数据进行程序测试; (5)写出运行结果。 3.实验内容 (1)定义一个复数类,重载“-=”运算符,使这个运算符能直接完成复数的“-=”运算。分别用成员函数与友元函数编写运算符重载函数。在主函数中定义复数对象c1(10,20)、c2(15,30),进行c2-=c1的复数运算,并输出c1、c2的复数值。 (2)定义一个数组类Array,其私有数据成员为整型一维数组a[10]。通过构造函数给a[10]赋初值。用Show函数显示a[10]的元素值。用成员函数重载运算符“+”,直接实现两个一维数组对应元素相加的运算。在主函数中定义数组a、b分别为: int a[10]={1,2,3,4,5,6,7,8,9,10}; int b[10]={4,5,6,7,8,9,10,11,12,13}; 用Array定义三个数组对象arr1(a)、arr2(b)、arr3,执行arr3=arr1+arr2运算,输出arr3的数组元素值。 (3)定义一个人民币类Money,类中数据成员为元、角、分。用成员函数与友元函数重载“――”运算符,实现人民币对象的减1运算。在主函数中定义人民币对象m1=10元8角5分及对象m2、m3。对m1作前置“――”并赋给m2。对m1作后置“――”并赋给m3。显示m1、m2、m3的结果。 (4)定义描述字符串的类String,编写字符串运算符“+=”的重载函数,使运算符“+=”用于两个字符串联接操作,即用str1+=str2实现字符串函数strcat(str1,str2)的操作功能。要求分别用成员函数与友元函数编写运算符重载函数。在主函数中定义字符串对象s1("software and ")与s2("hardware"),进行s1+=s2的字符串联接,并输出s1、s2的值。

c语言中逻辑运算符和逻辑表达式只是定总结

逻辑运算符和逻辑表达式 (一)逻辑运算符及其优先次序 1.&& (逻辑与) 相当于其他语言中的AND 2.|| (逻辑或) 相当于其他语言中的OR 3.! (逻辑非) 相当于其他语言中的NOT 例:a&&b 若a,b为真,则a&&b为真。 a||b 若a,b之一为真,则a||b为真。 !a 若a为真,则!a为假。 优先次序: ?逻辑运算符中的“&&”和“||”低于关系运算符,“!”高于算术运算符 ?逻辑非>算数运算符>关系运算符>&&和||>赋值运算符>逗号运算符(二)逻辑表达式 ?用逻辑运算符将关系表达式或逻辑量连接起来的式子就 是逻辑表达式 ?逻辑表达式的值应该是一个逻辑量“真”或“假”。 任何非零的数值都被认作“真” 例:设a=4,b=5: !a的值为0 a&&b的值为1 a||b的值为1 !a||b的值为1 4&&0||2的值为1 例:5>3&&8<4-!0 (从左向右运算)

表达式值为0 1)!0=1 2)4-1=3 3)5>3值为1 8<3值为0 4)1&&0值为0 (三)短路现象 在逻辑表达式的求解中,并不是所有的逻辑运算符都要被执行。 (1)a&&b&&c 只有a为真时,才需要判断b的值,只有a和b都为真时,才需要判断c的值。 (2)a||b||c 只要a为真,就不必判断b和c的值,只有a为假,才判断b。a和b都为假才判断c 例:int m=10,n=12,a=1,b=3,c=14,d=7,i,j; <1>i=(m=a>b)&&(n=c>d); printf(“%d,%d\n”,m,n); /*输出值:0,12 */ j=(m=a>b)||(n=c>d); printf(“%d,%d\n”,m,n); /*输出值:1,12 */ printf(“%d,%d\n”,i,j); 输出值:0,1 <2>i=(m=ad); printf(“%d,%d\n”,m,n); /*输出值:1,1 */ j=(m=ad); printf(“%d,%d\n”,m,n); /*输出值:1,1 (应该输出的为上一步的n为1,不等于12) */ printf(“%d,%d\n”,i,j); 输出值:1,1

运算符重载实验

运算符重载的应用 【实验目的】 1、理解重载运算符的意义。 2、掌握用成员函数、友元函数重载运算符的特点。 3、掌握重载运算符函数的调用方法。 【实验内容】 1.定义一个复数类,通过重载运算符:*,/,直接实现二个复数之间的乘除运算。编写 一个完整的程序,测试重载运算符的正确性。要求乘法“*”用友元函数实现重载,除法“/” 用成员函数实现重载。 ⑴分析 两复数相乘的计算公式为:(a+b i)*(c+d i)=(ac–bd )+(ad+bc) i 两复数相除的计算公式为:(a+b i)/(c+d i)=(ac+bd)/(c*c+d*d)+(bc-ad)/(c*c+d*d) i 复数类及运算符重载函数可定义为: 2.根据下面描述定义完整的日期类: class Date{ //成员变量 void IneDay();//日期增加1天 int DayCalc()const;//距基准日期的天数 static const int day[];//每月的天数 public: Date(int y,int m,int d); Date(int m, int d); Date(); void SystmDate();//读取系统当前时间 void SetDate(int yy,int mm,int dd);//设置日期 void SetDate(int mm,int dd); bool IsLeapYear(int yy) const;//是否闰年 bool IsEndofMonth()const ;//是否月末 //重载cout<<,cout>>完成读入和输出日期工作 //重载+,+=,-,-=,++,--,等运算符,完成日期的运算符操作。 //成员函数:判读一个日期是否是系统的当前日期

习题三(运算与表达式)

习题三 一、选择题 1.若有代数式 bc ae 3,则不正确的C 语言表达式是( C )。 A. a/b/c*e*3 B. 3*a*e/b/c C. 3*a*e/b*c D. a*e/c/b*3 2.在C 语言中,要求运算数必须是整型的运算符是( D )。 A. / B. = C. ++ D. % 3.若有定义语句:int a=7;float x=2.5,y=4.7; 则表达式x+a%3*(int)(x+y)%2/4的值( A )。 A.2.500000 B. 2.750000 C.3.500000 D.0.000000 4.若有定义int x=5,y=2,则表达式5/2的结果为(B )。 A. 2.5 B. 2 C. 2.0 D. 3 5.判断char 型变量ch 是否为大写字母的正确表达式是( C )。 A. …A ?<=ch<=?Z ? B. (ch>=?A ?)&(ch<=?Z ?) C. (ch>=?A ?)&&(ch<=?Z ?) D. (ch>=?A ?)and(ch<=?Z ?) 6.为表示关系a ≥b ≥c,则正确的C 语言表达式为( C )。 A. a>=b>=c B. (a>=b)&(b>=c) C. (a>=b)&&(b>=c) D. (a>=b)||(b>=c) 7.逻辑运算符两侧运算对象的数据类型(D )。 A.只能是0或1 B.只能是0或非0正数 C.只能是整型或字符型 D.可以是任何数据类型 8.下列运算符中,优先级最高的是( B )。 A. < B. + C. && D. == 9.设x 、y 、z 是int 型变量,且有x=3,y=4,z=5,则下面表达式中值为0的是( D )。 A. …x ?&&?y ? B. x<=y C. x||y+z&&y-z D. !((x=y&&chb )&&(n=c>d)后,n 的值为( C )。 A. 0 B. 1 C. 2 D. 3 13.判断char 型变量c 是否为0到9的数字的正确表达式为( C )。 A. …0?<=c<=?9? B. 0<=c<=9 C. c>=?0?&&c<=?9? D.c>=0&&c<=9 14.设有int x=3,y=4,z=5,则执行表达式!(x+y )+z-1&&y+z/2的结果是( D )。 A. 6 B. 0 C. 2 D. 1

相关文档
最新文档