C程序设计程序设计入门、数据类型和运算(5)

2019-04-02 14:38

在C语言程序中,凡是表达式可以出现的地方均可出现赋值表达式。例如,式子:x=(a=5)+(b=8) 是合法的。它的意义是把5赋予a,8赋予b,再把a,b相加,和赋予x,故x应等于13。

(2)复合的赋值运算符

在赋值符“=”之前加上其他二目运算符可构成复合赋值符。例如,+=,-=,*=,/=,%=,<<=,>>=,&=,∧=,|=

构成复合赋值表达式的一般形式为:变量 双目运算符= 表达式 它等效于:变量 = 变量 运算符 表达式 例如: a+=5 等价于a=a+5 x*=y+7 等价于x=x*(y+7) r%=p 等价于r=r%p

复合赋值运算符这种写法对初学者可能不习惯,但十分有利于编译处理,能提高编译效率并产生质量较高的目标代码。

2.2.6 逗号运算符和逗号表达式

在C语言中逗号“,”也是一种运算符,称为逗号运算符。其功能是把两个表达式连接起来组成一个表达式,称为逗号表达式。

其一般形式为: 表达式1, 表达式2, ? 表达式n 其求值过程是从左至右分别求各个表达式的值,并以表达式n的值作为整个逗号表达式的值。

【例2.7】阅读并运行程序,分析结果加深对各种算术运算的理解。 #include void main() { int a,b;

a=(b=2,++b,b+5);

printf(\The value of a is %d\\n\,a); }

语句a=(b=2,++b,b+5);先执行b=2;再执行++b,此时b的值为3;最后执行b+5,b的值为8;将8赋值给变量a,运行结果如图2-9所示。

图2-9 例2.7运行结果

2.3 应用案例

【例2.8】输入一个学生三门课程的成绩,计算三门课程的总分及平均分。 #include void main()

{ int yw,sx,yy,sum; float aver;

21

scanf(“%d,%d,%d”,&yw,&sx,&yy); sum=yw+sx+yy; aver=sum/3.0;

printf(“sum=%d,aver=%f\\n”,sum,aver); }

运行结果如图2-10所示:

图2-10 例2.8运行结果

【例2.9】输入直角三角形的斜边和一条直角边,求三角形另外一条直角边,周长和面积。

#include \stdio.h\ #include \math.h\ void main() { float a,b,c; double l,s;

printf(\输入斜边、直角边的长:\); scanf(\ b=sqrt(c*c-a*a); l=a+b+c; s=a*b/2;

printf(\另一直角边=%f, 周长=%f, 面积=%f\\n\,b,l,s); }

使用sqrt()函数求平方根,需要预处理命令#include,运行结果如图2-11所示。

图2-11 例2.9运行结果

【例2.10】输入一个三位整数,依次输出该数的正(负)号和百位、十位、个位数字。 #include \stdio.h\ #include \math.h\ void main()

{ char c1,c2,c3,c4; int x;

scanf(\%d\,&x);

c4=x>=0?'+':'-'; /* x的符号存入c4 */ x=abs(x); /* 求整型数x的绝对值 */ c3=x+48; /* x为个位数,加48转换为对应字符 */ x=x/10; /* 去掉x的个位 */

22

c2=x+48; c1=x/10+48;

printf(\数符:%c,百位:%c,十位:%c,个位:%c\\n“,c4,c1,c2,c3); }

运行结果如图2-12所示:

图2-12 例2.10运行结果

总 结

本章主要介绍了C语言中有关数据与数据计算的基本概念和规则。关于数据的主要内容有:数据类型;常量与变量;各种类型数据的表示方法、数据的取值范围和数据的有效位数。关于计算的主要内容有:运算符和运算对象、表达式及其表示、运算优先级和结合性;算术运算;赋值运算;自增、自减运算;关系运算与逻辑运算;位运算;逗号运算等。

本章内容是C语言的基本语法元素,主要是一些概念与规则,没有多少灵活性,所以需要在理解的基础上熟记。

习 题

1. 把下列数学表示式写成C语言表达式

(1)x?y?a?b (4)x?y?(2)e3?(2x?3y) (3)(ln10?xy)3

(6)

x?ysin(??) (5) 0y3xcos45?3x1

111??r1r2r32. 根据条件写一个C语言表达式

(1)a和b中有一个大于d。 (2)将x,y中大的送给z。

(3)将直角坐标系中点(x,y)表示在第3象限内。 (4)3个数据x,y,z能组成三角形。 (5)d是不大于100的偶数。(提示:d应同时满足大于0、小于等于100、被2整除。) (6)x、y中至少有一个是5的倍数。 3. 阅读程序写出执行结果

(1)以下程序的执行结果是什么? #include main()

{ int a=2,b=3,c; c=a++-1;

printf(“%d,%d,”,a,c); c*=a+(++b||++c);

23

printf(“%d,%d\\n”,a,c);

}

(2)以下程序的执行结果是什么? #include main() { int a;

a=1+2*5-3; printf(“%d,”,a); a=3+4%5-6; printf(“%d,”,a); a=-3*4%-6/5; printf(“%d,”,a); a=-(5+3)%4/2; printf(“%d\\n”,a); }

(3)以下程序的执行结果是什么? #include main()

{ int a=1; char c=?a?; float f=2.0;

printf(“%d,”,(a+2,c+2)); printf(“%d,”,(f>=c));

printf(“%d,”,(f!=0&&c==?A?)); printf(“%d,”,(a<0?1:2)); printf(“%d,”,(f+2.5)); }

4. 程序填空

(1)以下程序对任意输入的两个整数输出大的一个。 #include \stdio.h\ main()

{ int j,k,m;

printf(\j=? k=?\\n\); scanf(\%d,%d\,&j,&k); m=_______⑴__________ printf(\m=%d\\n\,m); }

(2)以下程序要求从键盘输入3个整数,分别存入x、y、z三个变量中,并将(x+y)*z的结果显示出来。

#include main()

{ int x,y,z,result;

scanf(“x=%d,y=%d,z=%d”,&x,&y,&z); _______⑴____________

printf(“%d”,___⑵_______); }

5. 编程实验题

(1)编写程序输入长方形的长和宽,求长方形的面积和周长并输出,要求用浮点型数

24

据处理。

(2)编写程序将输入的英里转换成公里。已知每英里等于5280英尺,每英尺等于12英寸,每英寸等于2.54厘米,每公里等于100000厘米。

(3)编写程序输入年利率I和存款总数S,计算一年后的本息合计并输出。 (4)编写程序,求圆柱体的表面积和体积。

习题答案

1.

(1)(x+y)!=(a+b)

(2)exp(3)+sqrt(2*x+3*y)

(3)pow((log10+x*y),3) // pow(2,3)求23,结果为8 (4)fabs(x-y)+(x+y)/(3*x)

(5)sin(n*3.14)/(cos(3.14/4)+3*pow(x,y)) (6)1.0/(1.0/r1+1.0/r2+1.0/r3) 2.

(1)(a>d)||(b>d) (2)z=(x>y)?x:y (3)x<0&&y<0

(4)((x+y)>z)||((x+z)>y)||((y+z)>x) (5)(d>=0)&&(d<=100)&&(d%2==0) (6)(x%5==0)||(y%5==0) 3.

(1)3,1,3,4 (2)8,1,0,0 (3)99,0,0,2,0, 4. 程序填空 (1)j>k?j:k;

(2)解:⑴ result=(x+y)*z; ⑵ result 5. 编程实验题 (1)解:

#include void main()

{ float a,b,length,area;

scanf(\ length=(a+b)*2; area=a*b;

printf(\}

(2)解:略 (3)解:

#include void main()

{ float s,i,total;

25

scanf(\ total=s*(1+i);

printf(\}

(4)解:略

常见错误和难点分析

1. 注意数据的取值范围

计算机上使用的C语言编译系统,对一个字符型数据分配一个字节的内存空间,因此字符型数据的取值范围是0~28-1,即0~255。如有下列程序段:

int a=285; char ch=a;

printf(\

运行程序得到的结果确是29,原因是285已经超过255。一个字节容纳不了285,需要将高位截去。

285:00000001 00011101 29:00011101

2. 自增、自减运算的难点分析

自增,自减表达式的计算方法一般分为两种情况:

(1)自增、自减表达式作为void main()的一般语句出现。例如: #include void main() { int i=2,j;

j=(i++)+(++i)+(++i)+(i++)+(--i); printf(\}

运行结果:i=5,j=17

(2)自增、自减表达式作为printf函数的输出表项出现。例如: #include void main() { int i=2,j;

printf(\}

运行结果:i=5,j=17

上述两种情况在不同的编译环境下会有不同的结果,计算方法也不相同,请重点理解和掌握自增自减表达式的计算方法。 int i=2,j;

j=(i++)+(i++)+(i++);应理解为三个i相加,故j值为6。然后i再自增三次相当于加3故i的最后值为5

j=(++i)+(++i)+(++i); i先自增1,再参与运算,由于i自增1三次后值为5

26


C程序设计程序设计入门、数据类型和运算(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:蒙城县小涧镇旅游发展规划

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: