C语言第三章答案

更新时间:2023-11-07 21:41:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

第三章 数据类型和表达式

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==\江苏\女\

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<<\数据有错! \

if(a+b cout<<\三角形面积: \ }

2.#include #include void main() {

int n=5; //用n表示年数 double x=0.1; //用x表示扩大招生的年增长率 double y=3000*pow(1+x,n); //用y表示5年后招生人数 cout<<\ }

3.#include #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<<\算术平均值:\ cout<<\几何平均值:\ }

4.#include #include #include void main() {

double a,b,x,y,temp;

cout<<\输入a和b的值: \ cin>>a>>b;

if(a+b==0){cout<<\分母为0!\\n\

temp=2/(3*(a+b)); //用temp计算两个公式中公共部分的值 x=temp*a*sin(a); y=temp*b*cos(b);

cout<<\ }

3.3 填空题(补充)

1.数据类型int、char、bool、float、double等的类型长度分别为 、 、

、 和 。

2.短整型、标准整型和长整型的最简关键字分别为 、 和 。

3.常数-4.205、1200和6.7E-9分别具有 、 和 位有效数字。

4.数值常量46、0173和0x62对应的十进制值分别为 、 和 。

5.字符常量'k'、'\\n'、'\\\\'、'/052'和'\\x66'对应的数值(即十进制的ASCII码值)分别为 、 、 、 和 。 6.字符串\中包含有 个字符。

7.枚举类型中的每个枚举值都是一个 ,它的值是一个 ,值的类型关键字为 。

8.实数340.0和0.0527E8对应的规格化浮点数分别为 和 。 9.常数100、-25、3.62、1E5和-4.73f的数据类型分别为 、 、 、 和 。 10.若x的值为10,则x+=5的值和运算后的 的值相同,等于 。 11.若x=5,y=10,则计算y*=++x表达式后,x和y的值分别为 和 。 12.若x=25,则计算y=x++表达式后,x和y的值分别为 和 。 13.假定x和ch分别为int型和char型,则sizeof(x)和sizeof(ch)的值分别为 和 。

14.假定x=64,y=88,则x<<2和y>>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() 的值在 至 区间内。

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 19.short(a) 20.bool(x) 21.(unsigned int) (0256) 22.x=a++ 23.sizeof(bool) 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 37.a && x 38.a<1 || a>10 40.!(a==0) 参考解答: 1.int 2.double 5.int 6.int 9.double 10.double 13.int 14.double 17.bool 18.int

18.++a 24.char(a+10) 36.x!=10 39.!x 3.float 7.int 11.double 15.char 19.short

4

8.int 12.int 16.int 20.bool

21.unsigned 22.double 23.int 24.char 25.int 26.double 27.double 29.double 30.int 31.int 33.double 34.double 35.bool 36.bool 37.bool 38.bool 39.bool 28.doub32.doub

40.bool

3.5 求出各表达式的值(补充)

假定各表达式中所使用的变量a、x和r分别为int、double和char型,它们的值分别为20、4.7和'a',并假定各表达式互不影响。 1.a++ 2.++r 4.a/5 5.r 7.a/8.0 8.r+=4 10.char(a+30) 11.10*sizeof(int) 12.(a<<3)+5 13.a>0 14.a==1 16.++a && r=='a' 17.a || x<=10 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) 28.ceil((x- =0.5) - 0.5) 参考解答: 1.20 2.'b' 3.0 5.7 6.3 7.2.5 9.18.4 10.'2' 11.40 13.1 14.0 15.0 17.1 18.0 19.30 21.97 22.50 23.243 24.30.5 25.-6 26.5 27.5 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

13.ch=='(' || ch=='[' || ch=='{' 14.x || i

3 6

118.a==r

27.ceil

1.!x 2.x!=0 3.a==true 4.x<10

5.x==key || !flag

6.p==NULL || flag==false 7.x<=0 || x>=10 8.false 9.x

10.ch!='d' && ch!='D' 11.!p || p->data==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<

cout<

2.#include 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<<\ cout<<\ }

3.#include void main() {

int i=0,j=1,k; k=i+=j;

cout<

cout<

cout<

4.#include void main() {

cout<

cout<

5.#include

#include //提供对输出数据项setw(5)的支持, //使其后一数据值显示占5个字符的位置宽度

using namespace std; const int w=30; void main() {

int x,y;

x=w<<2; y=w>>2;

cout<

cout<

cout<

6.#include void main() {

int x=10, y=-1;

cout<<((x>y) && (y<0))<<' '; cout<<((x>y) || (y<0))<<' '; cout<<((x<=y) && (y>=0))<<' '; cout<<((x<=y) || (y>=0))<<' '; cout<<((x==y) && y)<<' '; cout<<((x==y) || y)<

}

7.#include void main() {

int x=5, y=10, k;

(k=x)+=y; cout<

k=(x++,y++); cout<

cout<

8.#include #include void main() {

double x=15.72; double y,z;

y=ceil(x); z=floor(x);

cout<

y=floor(x+0.5); z=floor(x*10+0.5)/10; cout<

y=ceil(x-0.5); z=ceil(x*10-0.5)/10; cout<

参考解答: 1.

0,1,2,3 2.

p=62.8318 s=314.159 3.

1 1 1 2 2 2 3 1 4 4.

1 1 2 4 4 4 8 8 4 4 5.

30 120 7 30 10 30 30 20 10 6.

1 1 0 0 0 1 7.

5 10 15 15 10 15 150 10 150 151 11 10 152 12 151 8.

15.72 16 15 15.72 16 15.7 15.72 16 15.7

3.8 上机实验题(补充)

假定使用“d:\\VC语言上机练习\\第三章”作为当前工作目录,每个程序的文件名由用户自行决定。

1.让计算机随机出10道两位整数加法题供用户计算,每道题10分,计算完成后打印出得分。

#include #include #include const int N=10; void main() {

srand(time(0)); int i,x,y,z,c=0;

for(i=1; i<=N; i++) { x=rand()?+10; y=rand()?+10;

cout<

cin>>z;

if(x+y==z) c++; }

cout<<\得分:\}

2.打印出0(~90(之间每隔5(的正弦值和余弦值。

#include //该头文件包含iostream.h中的全部内容,并且 //还包含一些输出格式操作符,如setw(n) #include

const double RAD=3.14159/180; void main() {

cout<

while(i<=90) {

cout<

//setw(n)使后面一个数据的输出宽度为n i+=5; } }

3.把从键盘上输入的一个正整数按数字位的相反次序输出。

#include void main() {

int num,rem;

cout<<\输入一个整数:\ cin>>num; do {

rem=num; num/=10; cout<0); cout<

4.打印出a~f中每个大小写字母所对应的ASCII码。

#include void main()

本文来源:https://www.bwwdw.com/article/qr62.html

Top