第三章 数据类型和表达式 3.1 把数学算式或不等式表示成C++表达式 1.2x 2. 3. 4. 5. 6. 7.0(x(20 8.ax-by≠c 9.4x+7y-2=3ab 10.(5同时3x+2≠0 11.age(55或者pay(820 12.place="江苏"同时sex="女" 13.'a'(ch('z'或者'A'(ch('Z' 14.s[2]='0'同时(s[1]='x' 或者 s[1]='X') 参考解答: 1.2*x*(1+x*x/3.0) 2.(1+exp(x))/(1-exp(x)) 3.(-b+sqrt(b*b-4*a*c))/(2*a) 4.1/(pow(3,x)*log(2*x+k)) 5.pow(sin(x+PI/4),3)/(3+pow(cos(x-PI/4),3)) //其中PI常量为3.14159 6.1/7.0*pow((1+exp(x+1)),n) 7.x>=0 && x<=20 8.a*x-b*y!=c 9.4*x+7*y-2==3*a*b 10.fabs((2*x*x+1)/(3*x+2))<=5 && (3*x+2!=0) 11.age>=55 || pay>=820 12.place=="江苏" && sex=="女" 13.(ch>='a' && ch<='z') || (ch>='A' && ch<='Z') 14.s[2]=='0' && (s[1]=='x' || s[1]=='X') 3.2 根据题目要求编写程序 1.已知一个三角形中三条边的长度分别为a、b和c,试编写一个程序利用计算公式求出三角形的面积,其中s=(a+b+c)/2,假定a、b和c的值由键盘输入,并确保任何两边的长度大于等于第三条边。 2.假定一所大学当年招生人数为3000人,若以后每年平均比上一年计划扩招10%,试编写一个程序计算出5年后将计划招生到多少人? 3.已知有四个整数为a、b、c、d,试计算出它们的算术平均值和几何平均值。 4.已知x=,y=,试编写一个程序,根据从键盘上输入的a和b的值分别计算出x和y的值。 参考解答: 1.#include //支持输入/输出操作 #include //支持exit()函数调用 #include //支持sqrt()函数调用 void main() { double a,b,c; cout<<"输入三角形的3条边:"; cin>>a>>b>>c; if(a<=0 || b<=0 || c<=0) {cout<<"数据有错! "<<'\n'; exit(1);} if(a+b #include void main() { int n=5; //用n表示年数 double x=0.1; //用x表示扩大招生的年增长率 double y=3000*pow(1+x,n); //用y表示5年后招生人数 cout<<"y="< #include void main() { int a,b,c,d; cout<<"输入4个整数:"; cin>>a>>b>>c>>d; double v1,v2; //用v1和v2分别保存算术和几何平均值 v1=(a+b+c+d)/4.0; v2=pow(a*b*c*d,0.25); cout<<"算术平均值:"< #include #include void main() { double a,b,x,y,temp; cout<<"输入a和b的值: "; cin>>a>>b; if(a+b==0){cout<<"分母为0!\n"; exit(1);} temp=2/(3*(a+b)); //用temp计算两个公式中公共部分的值 x=temp*a*sin(a); y=temp*b*cos(b); cout<<"x="<>2的值分别为 和 。 15.假定x是一个逻辑量,则逻辑表达式x && true的值与 的值相同,x||false的值也与 的值相同。 16.假定x是一个逻辑量,则x && !x和x || !x的值分别为 和 。 17.假定x=10,则表达式(x<=10?20:30)的值为 。 18.假定x=10.5,y= -4.6,则表达式floor(fabs(x+y))的值为 。 19.表达式sqrt(81)和pow(6,3)的值分别为 和 。 20.随机函数rand()%20的值在 至 区间内。 21.数学算式(1+x)sin48(和axbex+1对应的算术表达式分别为 和 。 参考解答: 1.4、1、1、4、8 2.short、int、long 3.4、2、2 4.46、123、98 5.107、10、92、42、102 6.15 7.符号常量、整数、int 8.3.4E2、5.27E6 9.int、int、double、double、float 10.x、15 11.6、60 12.26、25 13.4、1 14.256、22 15.x、x 16.0、1 17.20 18.5 19.9、216 20.0、19 21.(1+x)*sin(48*3.14159/180)、a*pow(x,b)*exp(x+1) 3.4 指出表达式值的类型(补充) 假定各表达式中所使用的变量a为int型,x为double型。 1.327 2.-1.5e6 3.42.0f 4.48L 5.0372 6.0xabc 7.1/3 8.1%3 9.1.0%3 10.a*3/x 11.a*(a+x) 12.1+a*a 13.a+=3 14.x*=2 15.'x' 16.'x'+20 17.true 18.++a 19.short(a) 20.bool(x) 21.(unsigned int) (0256) 22.x=a++ 23.sizeof(bool) 24.char(a+10) 25.abs(x) 26.fabs(a) 27.floor(x) 28.ceil(a) 29.exp(4)+2 30.rand() 31.rand()/100 32.floor(log(x)) 33.pow(a,4) 34.a>10?x:sqrt(x) 35.a>100 36.x!=10 37.a && x 38.a<1 || a>10 39.!x 40.!(a==0) 参考解答: 1.int 2.double 3.float 4.long int 5.int 6.int 7.int 8.int 9.double 10.double 11.double 12.int 13.int 14.double 15.char 16.int 17.bool 18.int 19.short 20.bool 21.unsigned 22.double 23.int 24.char 25.int 26.double 27.double 28.double 29.double 30.int 31.int 32.double 33.double 34.double 35.bool 36.bool 37.bool 38.bool 39.bool 40.bool 3.5 求出各表达式的值(补充) 假定各表达式中所使用的变量a、x和r分别为int、double和char型,它们的值分别为20、4.7和'a',并假定各表达式互不影响。 1.a++ 2.++r 3.a%5 4.a/5 5.r%18 6.1+a/3%4 7.a/8.0 8.r+=4 9.x=2*(x+5)-1 10.char(a+30) 11.10*sizeof(int) 12.(a<<3)+5 13.a>0 14.a==1 15.a++ && r!='a' 16.++a && r=='a' 17.a || x<=10 18.a==r || a==floor(x) 19.a=(r>'A'?a+10:a-10) 20.a=(r<'A'?a+10:a-10) 21.x=(a++, r++) 22.x=(a++, r++, 50) 23.x=pow(3,5) 24.x=fabs(-26.5)+4 25.a=abs(a)%8-10 26.floor(x+0.5) 27.ceil(x-0.5) 28.ceil((x- =0.5) - 0.5) 参考解答: 1.20 2.'b' 3.0 4.4 5.7 6.3 7.2.5 8.'e' 9.18.4 10.'2' 11.40 12.165 13.1 14.0 15.0 16.1 17.1 18.0 19.30 20.10 21.97 22.50 23.243 24.30.5 25.-6 26.5 27.5 28.4 3.6 求出逻辑表达式的相反式(补充) 1.x 2.x==0 3.a!=true 4.x>=10 5.x!=key && flag 6.p!=NULL && flag==true 7.x>0 && x<10 8.x==key || true 9.x>=a || false 10.ch=='d' || ch=='D' 11.p && p->data!=x 12.i=10 8.false 9.xdata==x 12.i>=n || a[i]==key 13.ch!='(' && ch!='[' && ch!='{' 14.!x && (i>=n || i==0) //使用圆括号为必须,因||的优先级低于&& 3.7 写出程序运行后的输出结果并上机验证(补充) 1.#include enum race{Black, White, Yellow}; void main() { race ra; ra=Black;cout< using namespace std; #define PI 3.14159 const int R=10; void main() { double p,s; p=2*R*PI; s=R*R*PI; cout<<"p="< //该头文件包含iostream.h中的全部内容,并且 //还包含一些输出格式操作符,如setw(n) #include const double RAD=3.14159/180; void main() { cout< void main() { int num,rem; cout<<"输入一个整数:"; cin>>num; do { rem=num%10; num/=10; cout<0); cout< void main() { char c1='A', d1='a', c2='F', ch; for(ch=c1; ch<=c2; ch++) { cout< void main() { int x,y,z,c=0; cout<<"输入两个整数:"; cin>>x>>y; cout<>z; if(x+y==z) c++; cout<>z; if(x-y==z) c++; cout<>z; if(x*y==z) c++; cout<