>radius1>>radiu" />

C++程序设计教程(修订版)——设计思想与实现习题解答钱能

2.1

#include

void main()

{ //本题原考虑在 16 位机器上实验目前多为 32 位机器故已过时。int a = 42486; cout <

cout << dec <<(signed)b <

}

2.2

#include

#include const

double pi = 3.1415926; void

main()

{

double radius1, radius2; cout <<"please

input two numbers:\n";

cin >>radius1 >>radius2;

cout <

<<(pi*radius1*radius1) <

<

<

}

2.3

#include #include

const double e =

2.718281828; void main()

{

cout <

<

<

}

2.4

#include

void main()

{

cout <<"\"How many students here?\"\n"

<<"\"500\"\n";

}

2.5

#include

void main()

{

cout <<"size of char " <

unsigned char " <

<<"size of signed char " <

<<"size of unsigned " <

byte\n"

<<"size of unsigned short " <

of long " <

<<"size of signed long " <

<<"size of unsigned long " <

<<"size of double " <

<<"size of long double " <

}

2.6 1) please input 3 sides of one

triangle:

6,6,8

a= 6.00,b= 6.00,c= 8.00

area of triangle is 17.88854

2)

该程序计算三角形的面积前后分为三部分输入处理输出。

3)

//#include

#include #include

#include

void main()

{

float a,b,c,s,area;

//printf("please input 3 sides of one triangle:\n"); cout

<<"please input 3 sides of one triangle:\n";

//scanf("%f,%f,%f",&a,&b,&c); //

输入时以逗号作为数据间隔 cin >>a >>b >>c; //输入时以空格作为数据间隔

s=(a+b+c)/2;

area=sqrt(s*(s-a)*(s-b)*(s-c));

//printf("a=%7.2f,b=%7.2f,c=%7.2f\n",a,b,c); cout

<

<<"area of triangle is " <

<

}

4)

#include #include

#include

float area(float a, float b, float c); //

函数声明 void main()

{ float a,b,c;

cout <<"please input 3 sides of one triangle:\n";

cin >>a >>b >>c; //输入时以空格作为数据间隔

float result = area(a,b,c); //函数调用 cout

<

<

<

}

float area(float a, float b, float c) //

函数定义

{

float s=(a+b+c)/2; return

sqrt(s*(s-a)*(s-b)*(s-c));

}

2.7

In main():

Enter two numbers:

3 8

Calling add(): In

add(),received 3 and 8

and return 11

Back in main(): c

was set to 11

Exiting...

2.8

#include #include

double Cylinder(double r, double h); void main()

{

double radius, height;

cout <<"请输入圆柱体的半径和高:\n";

cin >>radius >>height;

double volume = Cylinder(radius, height);

cout <<"该圆柱体的体积为

" <

}

double Cylinder(double r, double h)

{

return r*r*M_PI*h;

}

3.1

(1)sqrt(pow(sin(x),2.5))

(2)(a*x+(a+x)/(4*a))/2

(3)pow(c,x*x)/sqrt(2*M_PI) //M_PI 为

BC

math.h

中的圆周率常数

3.2 13.7 2.5 9

3.3

(1)a1=1 a2=1

(2) 1.1

(3) 2,0.0

(4) 20

3.4

#include

void main()

{ int x; cout <<"please input

x:\n"; cin >>x; if(x<=-1)

cout <<(x-1) <-1

&& x<=2) cout <<2*x <

if(2

cout <

}

3.5

#include

void main()

{ int a;

cout <<"please input a number:\n"; cin >>a; int

c1 = a%3 ==0; int c2 = a%5 ==0; int c3 = a%7 ==0;

switch((c1<<2)+(c2<<1)+c3){ case 0: cout <<"

不能被3,5,7

整除.\n"; break; case 1: cout <<"只能被7 整除.\n"; break; case 2: cout <<"只能被

5 整除.\n"; break; case 3: cout <<"

可以被5,7 整除.\n"; break; case 4: cout <<"

只能被3 整除.\n"; break; case 5: cout <<"

可以被3,7 整除.\n"; break; case 6: cout <<"可以被3,5 整除.\n"; break;

case 7: cout <<"可以被3,5,7 整除.\n"; break; }

}

3.6 #include

void main()

{

int grade; cout <<"please input a

number:\n"; cin >>grade;

if(grade>100||grade<0)

cout <<"错误的成绩.\n";

else if(grade>=90)

cout <<"A.\n"; else

if(grade>=80) cout

<<"B.\n"; else

if(grade>=70) cout

<<"C.\n"; else

if(grade>=60) cout

<<"D.\n"; else

cout <<"E.\n";

}

四4.1 1

#include #include

void main()

{

double sum=1, t=-1, x; int i=1;

cout <<"please input a value:\n";

cin >>x; do{ t*=(-1)*x/i; sum+=t;

i++; }while(fabs(t)>1e-8);

cout <<"sum=" <

}

2

#include

#include void

main()

{

double sum=1, t=-1, x; cout

<<"please input a value:\n"; cin >>x;

int i=1; while(fabs(t)>1e-8){ t*=(-

1)*x/i; sum+=t; i++; } cout

<<"sum=" <

}

3

#include

#include void

main()

{

double sum=1, t=-1, x; cout

<<"please input a value:\n"; cin >>x;

for(int i=1; fabs(t)>1e-8; i++){

t*=(-1)*x/i; sum+=t; } cout

<<"sum=" <

}

4.2

#include

void main()

{

long sum=0, t=1; for(int i=1;

i<=15; i++){ t*=i; sum+=t; }

cout <<"sum=" <

}

4.3

#include

void main()

{

for(int i=1; i<=9; i++) for(int j=0; j<=9; j++) for(int k=0; k<=9; k++) if(i*i*i+j*j*j+k*k*k == 100*i+10*j+k)

cout <<(100*i+10*j+k) <<"是水仙花数

.\n";

}

4.4

#include

void main()

{

for(int i=1; i<1000; i++){ int sum=0; for(int j=1; j<=i/2; j++) if(i%j==0) sum+=j;

if(sum==i) cout <

是完

.\n";

}

}

4.5

#include

void main()

{

float s=100,h=100;

for(int i=1; i<10;

i++){ s+=h; h/=2;

}

cout <<"

共经过" <

}

4.6

#include void

main()

{ int peachs=1;

for(int i=1;

i<10; i++)

peachs=(peac

hs+1)*2;

cout <<"

第一天共摘下" <

}

4.7

#include #include

void main()

{

double x, a; cout <<"please input a

value:\n"; cin >>a; x = a/2;

while(fabs((x-a/x)/2)>1e-7)

x=(x+a/x)/2;

cout <

的平方根是" <

}

4.8 1

#include

void main()

{

for(int i=1; i<=10;

i++){ for(int j=1; j<=10-i; j++)

cout <<" "; for(int j=1; j<=2*i-

1; j++) cout <<"#"; cout

<

}

2

#include

void main()

{ for(int i=1; i<=8; i++){ for(int

j=1; j<=i; j++) cout <<" ";

for(int j=1; j<=18-i; j++)

cout <<"#"; cout <

}

}

4.9 1

#include #include

void main()

{

cout <<" *"; for(int i=1;

i<=9; i++) cout

<

cout <<"\n-----------------------------------------\n"; for(int i=1; i<=9; i++){ cout <

}

}

2

#include #include

void main()

{

cout <<" *"; for(int i=1;

i<=9; i++) cout

<

cout <<"\n-----------------------------------------\n"; for(int i=1; i<=9; i++){ cout <

}

}

#include

#include

void main()

{ cout <<" *";

for(int i=1;

i<=9; i++)

cout <

<

cout <<"\n-----------------------------------------\n";

for(int i=1; i<=9; i++){ cout <

if(i!=1)

cout <

for(int j=i; j<=9; j++) cout

<

}

}

4.10 #include

void main()

{ int n; long a=1, b=1, c=1, temp;

cout <<"please input a value:\n";

cin >>n; for(int i=4; i<=n;

i++){ temp=a+c; a=b; b=c; c=temp;

} cout << c <

}

5.1

#include

#include

#include bool

isprime(long n);

void main()

{

//input long a,b,l=0; cout <<"please input

two numbers:\n"; cin >>a >>b;

cout <<"primes from " <

for(long m=a; m<=b; m+=2)

if(isprime(m)){ //output

if(l++%10==0) cout <

cout <

}

}

bool isprime(long n)

{

int sqrtm=sqrt(n); for(int i=2; i<=sqrtm;

i++) //判明素数 if(n%i==0) return false;

return true;

}

5.2

#include #include

#include

double f(double x); double

integral(double a, double b); const

double eps = 1e-8;

void main()

{

double a=0, b=1; cout <<"the

integral of f(x) from " <

<

<

<

<

}

double f(double x)

{

return exp(x)/(1+x*x);

}

double integral(double a, double b)

{ int n=1; double

h,tn,t2n,i2n,in=0;

h = b-a; t2n = i2n =

h*(f(a)+f(b))/2;

while(fabs(i2n-

in)>=eps){ tn = t2n; in =

i2n; double sigma = 0.0;

for(int k=0; k

k++){ double x = a+(k+0.5)*h;

sigma += f(x); }

t2n = (tn+h*sigma)/2.0; //变步长梯形

i2n =

(4*t2n-tn)/3.0; //辛普生公式

n *= 2; h /=

2; } return i2n;

}

5.3

#include

#include

void multab1(); void

multab2(); void

multab3();

void main()

{

multab1(); multab2();

multab3();

}

void multab1()

{

cout <<" *"; for(int i=1;

i<=9; i++)

cout <

cout <<"\n-----------------------------------------\n"; for(int i=1; i<=9; i++){ cout

<

j<=9; j++) cout <

<

cout <

}

cout <

}

void multab2()

{

cout <<" *"; for(int i=1;

i<=9; i++)

cout <

cout <<"\n-----------------------------------------\n"; for(int i=1; i<=9; i++){ cout <

}

void multab3()

{

cout <<" *"; for(int i=1;

i<=9; i++)

cout <

cout <<"\n-----------------------------------------\n";

for(int i=1; i<=9; i++){ cout <

if(i!=1) cout <

j<=9; j++) cout <

}

5.4

Main--x=5,y=1,n=1

Func--x=6,y=21,n=11 Main--x=5,y=1,n=11

Func--x=8,y=31,n=21

5.5

#include

void main()

{ int n; long a=1, b=1, temp; cout

<<"please input a number:\n"; cin >>n;

for(int i=3; i<=n; i++){ temp=a+b;

a=b; b=temp;

} cout <

}

5.6

double poly(int n, double)

{

if(n==0) return

1; if(n==0)

return x;

return ((2*n-1)*x*poly(n-1,x)-(n-1)*poly(n-2,x))/n; }

5.7

#include #include

void main()

{

double x, y; x =

3.14159/4;

do{ y = x;

//x-=(cos(x)-x)/(sin(x)-1); x = cos(x); }while(fabs(x-y)>1e-6); cout <

}

//答案为

: 0.739085

5.8

#include

void display(double d){ cout <<"A double: " <

{

double a=100.0;

float f=1.0; int

n=120; char ch='c';

short s=50;

display(a);

display(f);

display(n);

display(ch);

display(s);

}

5.9

#include long

cattle(int n);

void main()

{ int n;

cout <<"please input a number:\n";

cin >>n; cout <

}

long cattle(int n)

{

if(n<=0) return

0; if(n<=3)

return 1;

return cattle(n-1)+cattle(n-3);

}

6.1

(1)

//file1.cpp

int x=1; int

func()

{

//...

}

//file2.cpp

extern int x;

int func();

void g()

{

x=func();

}

//file3.cpp

extern int x=2; //error: extern int

变量若有赋值则成定义 int g(); //error:

函数声明与前面不一致

void main()

{

x=g();

//...

}

(2)

//file1.cpp

int x=5; int

y=8; extern

int z;

//file2.cpp

int x; //error: int x;

重复定义 extern double y; //error: y 同一名字不同类型定义

extern int z; //error: z 只有声明却无定义

6.2 25

6.3

#include "multab.h" void

main()

{ multab1();

multab2();

multab3();

}

//6_3_1 #include

"multab.h"

void multab1()

{

cout <<" *"; for(int i=1;

i<=9; i++)

cout <

cout <<"\n-----------------------------------------\n"; for(int i=1; i<=9; i++){ cout <

}

//6_3_2 #include

"multab.h"

void multab2()

{

cout <<" *"; for(int i=1;

i<=9; i++)

cout <

cout <<"\n-----------------------------------------\n"; for(int i=1; i<=9; i++){ cout <

}

//6_3_3 #include

"multab.h" void

multab3()

{ cout <<" *"; for(int i=1;

i<=9; i++) cout

<

<<"\n-----------------------

------------------\n";

for(int i=1; i<=9; i++){ cout

<

<

j<=9; j++) cout <

cout <

<

}

//6_3.h

#include

#include

void multab1(); void

multab2(); void

multab3();

7.1

#include int

findMinIndex(int a[], int n);

void main()

{

int array[]={34,91,83,56,29,93,56,12,88,72}; int

size=sizeof(array)/sizeof(*array); int minIndex =

findMinIndex(array, size); cout <<"

最小数: " <

<<"相应的下标: " <

}

int findMinIndex(int a[], int n)

{

int index = 0; for(int

i=1; i

if(a[index]>a[i])

index = i; return index;

}

7.2

#include int

insert(int a[], int n, int value); void

main()

{

int array[]={12,29,34,56,72,83,88,91}; int

size=sizeof(array)/sizeof(*array); cout <<"

入前的数组

:\n";

for(int i=0; i

<<" "; int aValue; cout <<"\nplease input

a number :\n"; cin >>aValue; int

max=insert(array,size,aValue); cout <<"\n

插入后的数

最大数

: " <

:\n";

for(int i=0; i

cout <

}

int insert(int a[], int n, int value)

{

if(a[n-1]<=value) return value;

int retValue = a[n-1]; int i; for(i=n-2;

i>=0&&a[i]>value; i--) a[i+1]=a[i];

a[i+1]=value; return retValue;

}

7.3

#include const

int num=17;

void main()

{ int interval=3; int a[num];

for(int i=0; i

cout <<(a[i]=i+1) <<","; cout

<

1)%num; for(int k=1; k

k++){

cout <

数数 for(int j=1; !(a[i]&&(j++==interval)); i=(i+1)%num); //

}

输出胜利者 cout <<"\nNo." <

}

7.4

void Swap(int& a, int& b){ int temp=a; a=b; b=temp; } void Bsort(int a[], int n)

bool dontLoopAgain=false;

while(dontLoopAgain=!dontLoopAgain) for(int i=0,pass=--n; i

if(a[i]>a[i+1]){ dontLoopAgain=false; Swap(a[i],a[i+1]);

}

}

7.5

#include const

int n=5; int sum(int a[][5],

int size); void main()

{

int array[n][n]={{3,2,4,1,5}, {8,7,2,5,6}, {6,9,1,4,3}, {5,5,3,6,2}, {2,8,1,8,6}};

cout <

}

int sum(int a[][5], int size)

{ int s=0; for(int i=0; i

i++) s+=a[i][i]+a[i][size-i-

1]; if(size%2==1)

s-=a[size/2][size/2];

return s;

}

7.6

#include void findMax(int

a[][4], int row,int col); void findBad(int

a[][4], int row,int col); void average(int

a[][4], int row,int col); void main()

{

int array[5][4]={{88,67,48,91}, {61,65,37,77},

{92,81,73,60},

{51,55,60,60},

{77,63,70,80}}; findMax(array,5,4); findBad(array,5,4);

average(array,5,4);

}

void findMax(int a[][4], int row,int col)

int r=0,c=0; for(int i=0;

i

ja[r][c])

r=i,c=j;

cout <<"成绩最高的学生序号: " <<(r+1) <<" "; for(int i=0;

i

cout <

}

void findBad(int a[][4], int row,int col)

{

for(int i=0; i

j=0; j

if(a[i][j]<60){

cout <<"有不及格课程的学生序号: " <<(i+1) <<" ";

for(int k=0; k

<

cout <

break;

} }

void average(int a[][4], int row,int col)

{

double sum=0; for(int i=0;

i

j

cout <<"

所有课程平均分数为: " <

}

7.7

#include int

a[3][3]={{5,7,8},{2,-2,4},{1,1,1}}; int

b[3][3]={{4,-2,3},{3,9,4},{8,-1,2}}; int

c[3][3]; void main()

{

for(int i=0; i<3; i++){ for(int

j=0; j<3;

j++){ c[i][j]=a[i][j]+b[i][j];

cout <

} cout <

}

}

相关文档
最新文档