实验二 运算符和表达式
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
printf("k = %d\n", k);
printf("p = %d\n", p);
}
3、运算符的优先级别和结合性:请写出下列程序运行的结果,并进行分析。
/*ex2_4.c*/
#include <stdio.h>
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语言提供了六种位运算符:
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 );
2、运算符及其表达式的应用;
3、数据类型的自动转换与强制转换。
【实验步骤】
一、在E或F盘上建立以自己的学号命名的文件夹。
二、内容与步骤
1、求字节运算符的使用
利用sizeof()函数,了解C语言各种数据类型所占用的存储空间大小,将编写的源程序以文件名ex2_1.c保存在自己的文件夹内,并将结果填在下表内。
数据类型
长度(字节)
数据类型
长度(字节)
char
short
int
long
float
double
2、写出下列程序运行的结果
⑴、/*ex2_2.c*/
#include <stdio.h>
#define PRICE 12.5
main()
{ int num=3;
float total;
char ch1,ch2=‘D’;
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;
⑹右移运算
右移运算符“>>”是双目运算符。其功能是把“>>”左边的运算数的各二进位全部右移若干位,“>>”右边的数指定移动的位数。
例如:设a=15,a>>2
表示把000001111右移为00000011(十进制3)。应该说明的是,对于有符号数,在右移时,符号位将随同移动。当为正数时,最高位补0,而为负数时,符号位为1,最高位是补0或是补1取决于编译系统的规定。Turbo C和很多系统规定为补1。
①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<c
④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;
⑧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、试列出常用几种运算符的优先级别与结合方向。
实验二运算符和表达式
实验时间:2010年10月8日
【实验目的】
1、掌握C语言各种基本数据类型的定义和表示方法;
2、掌握变量的定义、赋值方法;
3、掌握基本运算符的功能及其应用;
4、掌握基本运算符的优先级和结合性;
5、掌握表达式的概念及运算规则;
6、掌握常用数据类型的转换规则。
【实验内容】
1、常用基本数据类型的存储长度,求字节运算符的使用;
total=num*PRICE;
ch1=ch2-‘A’+‘a’;
printf(“total=%f,ch1=%c\n”,total,ch1);
}
⑵、/*ex2_3.c*/
# include <stdio.h>
main()
{
int i, j, k;
int m, n, p;
i = 8;
j = 10;
k = 12;
例如~9
运算为:~(0000000000001001)结果为:1111111111110110
/*ex2_6.c*/
#include <stdio.h>
main()
{
int a=9;
a=~9;
printf(“b=%d\n",a);
}
⑸左移运算
左移运算符“<<”是双目运算符。其功能把“<<”左边的运算数的各二进位全部左移若干位,由“<<”右边的数指定移动的位数,高位丢弃,低位补0。例如:a<<4指把a的各二进位向左移动4位。如a=00000011(十进制3),左移4位后为00110000(十进制48)。
ቤተ መጻሕፍቲ ባይዱ&按位与
|按位或
^按位异或
~取反
<<左移
>>右移
⑴按位与运算
按位与运算符“&”是双目运算符。其功能是参与运算的两数各对应的二进位相与。只有对应的两个二进位均为1时,结果位才为1,否则为0。参与运算的数以补码方式出现。
例如:9&5
可写算式如下:00001001 (9的二进制补码)&00000101 (5的二进制补码)00000001 (1的二进制补码)可见9&5=1。
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 = ++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);
按位与运算通常用来对某些位清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 <stdio.h>
main()
{
int a=9;
a=a^15;
printf("a=%d\n",a);
}
⑷求反运算
求反运算符~为单目运算符,具有右结合性。其功能是对参与运算的数的各二进位按位求反。
3、数据类型转换的规则是什么?
printf("p = %d\n", p);
}
3、运算符的优先级别和结合性:请写出下列程序运行的结果,并进行分析。
/*ex2_4.c*/
#include <stdio.h>
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语言提供了六种位运算符:
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 );
2、运算符及其表达式的应用;
3、数据类型的自动转换与强制转换。
【实验步骤】
一、在E或F盘上建立以自己的学号命名的文件夹。
二、内容与步骤
1、求字节运算符的使用
利用sizeof()函数,了解C语言各种数据类型所占用的存储空间大小,将编写的源程序以文件名ex2_1.c保存在自己的文件夹内,并将结果填在下表内。
数据类型
长度(字节)
数据类型
长度(字节)
char
short
int
long
float
double
2、写出下列程序运行的结果
⑴、/*ex2_2.c*/
#include <stdio.h>
#define PRICE 12.5
main()
{ int num=3;
float total;
char ch1,ch2=‘D’;
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;
⑹右移运算
右移运算符“>>”是双目运算符。其功能是把“>>”左边的运算数的各二进位全部右移若干位,“>>”右边的数指定移动的位数。
例如:设a=15,a>>2
表示把000001111右移为00000011(十进制3)。应该说明的是,对于有符号数,在右移时,符号位将随同移动。当为正数时,最高位补0,而为负数时,符号位为1,最高位是补0或是补1取决于编译系统的规定。Turbo C和很多系统规定为补1。
①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<c
④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;
⑧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、试列出常用几种运算符的优先级别与结合方向。
实验二运算符和表达式
实验时间:2010年10月8日
【实验目的】
1、掌握C语言各种基本数据类型的定义和表示方法;
2、掌握变量的定义、赋值方法;
3、掌握基本运算符的功能及其应用;
4、掌握基本运算符的优先级和结合性;
5、掌握表达式的概念及运算规则;
6、掌握常用数据类型的转换规则。
【实验内容】
1、常用基本数据类型的存储长度,求字节运算符的使用;
total=num*PRICE;
ch1=ch2-‘A’+‘a’;
printf(“total=%f,ch1=%c\n”,total,ch1);
}
⑵、/*ex2_3.c*/
# include <stdio.h>
main()
{
int i, j, k;
int m, n, p;
i = 8;
j = 10;
k = 12;
例如~9
运算为:~(0000000000001001)结果为:1111111111110110
/*ex2_6.c*/
#include <stdio.h>
main()
{
int a=9;
a=~9;
printf(“b=%d\n",a);
}
⑸左移运算
左移运算符“<<”是双目运算符。其功能把“<<”左边的运算数的各二进位全部左移若干位,由“<<”右边的数指定移动的位数,高位丢弃,低位补0。例如:a<<4指把a的各二进位向左移动4位。如a=00000011(十进制3),左移4位后为00110000(十进制48)。
ቤተ መጻሕፍቲ ባይዱ&按位与
|按位或
^按位异或
~取反
<<左移
>>右移
⑴按位与运算
按位与运算符“&”是双目运算符。其功能是参与运算的两数各对应的二进位相与。只有对应的两个二进位均为1时,结果位才为1,否则为0。参与运算的数以补码方式出现。
例如:9&5
可写算式如下:00001001 (9的二进制补码)&00000101 (5的二进制补码)00000001 (1的二进制补码)可见9&5=1。
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 = ++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);
按位与运算通常用来对某些位清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 <stdio.h>
main()
{
int a=9;
a=a^15;
printf("a=%d\n",a);
}
⑷求反运算
求反运算符~为单目运算符,具有右结合性。其功能是对参与运算的数的各二进位按位求反。
3、数据类型转换的规则是什么?