河北工业大学C课后习题实验习题_第1页
河北工业大学C课后习题实验习题_第2页
河北工业大学C课后习题实验习题_第3页
河北工业大学C课后习题实验习题_第4页
河北工业大学C课后习题实验习题_第5页
已阅读5页,还剩57页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

习题1

1.1书写一个简单的O+程序,从而理解J+程序的结构及特点。该程序只由

一个主函数组成,主函数的函数体中只包含一个语句:

cout<<"ThisisaO+program.";

[1.1答]

#include<iostream.h>

voidmain()

(

cout<<"ThisisaC++program.";

)

习题2

2.1写出a+标识符的命名规则,写出5个合法的标识符和5个不合法的标

识符。

2.2下列符号哪些是a+标识符?哪些不是,为什么?

2ma+cinti*jmmdatan-am22x-na_1

[2.2答]

mmdatam22xa_1是O+标识符,int是是O+标识符也是关键字

2.3指出下列合法的常量,并说明其类型。

655381.32.1E47L9uL'9''a'123u

【2.3答】

65538整型常量

1.3double型常量

2.1E4double型常量

7L长整型常量

9uL无符号长整型常量

'9'字符型常量

'a'字符型常量

123u无符号整型常量

2.4写出符合O+规则的int、double、char和字符串4种类型的常量各2

个。

2.5说明字符常量和字符串常量有何区别?

2.6下列变量的定义是否合法?为什么?

(1)INTi,j,k;(2)charc1,c2;(3)inta,b;floatf,b;

(4)unsignedintm(5)char:a1,a2,a3;(6)unsignedfloatx,y;

[2.6答]

⑵和⑶合法。⑴的INT要小写;⑷少分号;⑸char后多了冒号;⑹数据类型错

2.7将下列数学表示式写成C++表达式。

(1)(2)

⑶(4)

【2.7答】

(1)(2*x*x+3*y*y)/(x-y)

(2)(-b+sqrt(b*b-4*a*c))/(2*a)和(-b-sqrt(b*b-4*a*c))/(2*a)

或(-b+sqrt(b*b-4*a*c))/2/a和(-b-sqrt(b*b-4*a*c))/2/a

(3)1+(1+a/b)/(1-(a/c)

(4)x/sqrt(fabs(x*x*x+y*y*y+z*z*z))

2.8已有如下变量定义,求下列表达式的值。

(1)

doublex=1.2,y=8.5;

inta=3;

x+a%3*(int)(x+y)

inta=2,b=3;

doublex=3.5,y=2.5;

(double)(a+b)/2+(int)x%(int)y

(3)

intx=4,y=8;

(++x)*(--y)

(4)

inte=1,f=4,g=2;

doublem=10.5,n=4.0,k;

k=(e+f)/g+sqrt(n)*1.2/g+m

(5)

doublex=2.5,y=4.7;

inta=7;

x+a%3*(int)(x+y)%2/4

(6)

inta,b;

intx;

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

【2.8答】

⑴1.2

⑵3.5

⑶35

(4)13.7

⑸2.5

(6)9

(1)1.2

#include<iostream.h>

voidmain()

(

doublex=1.2,y=8.5;

inta=3;

cout<<(x+a%3*(int)(x+y))<<endl;

)

⑵3.5

#include<iostream.h>

voidmain()

(

inta=2,b=3;

doublex=3.5,y=2.5;

cout<<((double)(a+b)/2+(int)x%(int)y)<<endl;

)

⑶35

#include<iostream.h>

voidmain()

(

intx=4,y=8;

cout<<((++x)*(-y))<<endl;

)

(4)13.7

#include<iostream.h>

#include<math.h>

voidmain()

(

inte=1,f=4,g=2;

doublem=10.5,n=4.0,k;

k=(e+f)/g+sqrt(n)*1.2/g+m;

cout<<k<<endl;

)

⑸2.5

#include<iostream.h>

voidmain()

(

doublex=2.5,y=4.7;

inta=7;

cout<<(x+a%3*(int)(x+y)%2/4)<<endl;

)

(6)9

#include<iostream.h>

voidmain()

(

inta,b;

intx;

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

cout<<x<<endl;

习题3

3.1编写程序求行驶的距离,输入行驶的速度和时间,输出距离。

voidmain()

(

ints,t,d;

cin>>s>>t;

d=s*t;

cout<<"d="<<d<<endl;

)

3.2编写程序求圆柱体的表面积和体积。程序运行时输入圆柱的半径和高,输出

圆柱的表面积和体积。

#include<iostrearn.h>

constdoublePI=3.1415926;

voidmain()

(

doubler,h,areaf,volume;

cin>>r>>h;

areaf=2.*PI*r*h+PI*r*r*2.;

volume=Pl*r*r*h;

cout<<"area="<<areaf<<endl;

cout<<"volume="<<volume<<endl;

)

3.3输入梯形的上边长、下边长及高度,计算梯形的面积。

#include<iostream.h>

constdoublePI=3.1415926;

voidmain()

doubled1,d2,h,area;

cin>>d1>>d2>>h;

area=(d1+d2)*h/2.;

cout<<"area="<<area<<endl;

}

3.4编程求输入的两个字符中的最小者。

#include<iostream.h>

voidmain()

(

charc1,c2;

cin>>c1>>c2;

cout<<"c1="<<c1<<"\tc2="<<c2<<endl;

if(c1>c2)

cout<<"min="<<c2<<endl;

else

cout<<"min="<<c1<<endl;

)

3.5编程求输入的三个整数中的最大值。

#include<iostream.h>

voidmain()

inta,b,c,max;

cin>>a>>b>>c;

max=a;

if(b>max)max=b;

if(c>max)max=c;

cout<<"max="<<max<<endl;

)

3.6编写程序:输入一个整数,若为0或正数时,显示:ispositive;为负数时,

显示:isnegativeo

#include<iostream.h>

voidmain()

(

inta;

cin>>a;

if(a>=0)

cout<<a<<"ispositive"<<endl;

else

cout<<a<<"isnegative"<<endl;

)

3.7编程求一元二次方程的实根:当有实根时,输出两个实根;没有实根时,显

示提示信息。

实验3p48例3.8

3.8某超市为促进销售,采用了购物打折扣的优惠方法。设每位顾客一次购物的

金额为b,当1000WbV2000时-,给予九五折优惠;当2000<b<3000H寸,给

予九折优惠;当3000Wb<5000时.,给予八五折优惠;当b>5000时,给予八

折优惠。编写程序,输入顾客的购物款,输出顾客的应付款。

该题修改:b>=5000,八折。

#include<iostream.h>

#include<math.h>

voidmain()

(

doubleb;

cin>>b;

switch(int(b)/1000)

(

case0:cout<<"m="<<b<<endl;break;

case1:cout<<"m="<<b*0.95<<endl;break;

case2:cout<<"m="<<b*0.90<<endl;break;

case3:

case4:cout<<"m="<<b*0.85<<endl;break;

case5:

default:cout<<"m="<<b*0.80<<endl;

)

)

3.9编一程序,将输入数据归入某一类别,输出其类别。数据分为四类:小

于10、10〜99、100〜999、1000以上。例如,输入358时,薪'*358is100

to999"o

#include<iostream.h>

#include<math.h>

voidmain()

(

intx;

cin>>x;

if(x<10)cout<<x<<"islittlerthen10"<<endl;

if(x>=10&&x<=99)cout<<x<<"is10to99"<<endl;

if(x>=100&&x<=999)cout<<x<<"is100to999"<<endl;

jf(x==1000)cout<<x<<"isequal1000"<<endl;

if(x>1000)cout<<x<<"isbiggerthen1000"<<endl;

)

3.10编一程序,输入字符a时显示America,b时显示BHtain,c时显示China,d

时显示Denmark,其它字符时显示Harland0

#include<iostream.h>

#include<math.h>

voidmain()

(

charc;

cin>>c;

if(c>='A'&&c<='Z)c=c+32;

switch(c)

(

case'a':cout<<"America"<<endl;break;

case'b':cout<<"Britain"<<endl;break;

case'c':cout<<"China"<<endl;break;

case'd':cout<<"Denmark"<<endl;break;

default:cout<<"Harland"<<endl;

)

)

3.11编写程序,输入一整数,当其为0〜6范围内的整数时,输出对应的星

期:Sunday.Monday、Tuesday.Wednesday>Thursday、Friday、Saturday,

为其它整数时,输出error。

#include<iostream.h>

voidmain()

intn;

cout<<"pleaseinputaninteger:";

cin>>n;

switch(n)

(

caseO:cout<<"Sunday";break;

case1:cout<<"Monday";break;

case2:cout<<"Tuesday";break;

case3:cout<<"Wednesday";break;

case4:cout<<"Thursday";break;

case5:cout<<"Friday";break;

case6:cout<<"Saturday";break;

default:cout<<"error!"<<endl;

)

)

实验一熟悉MicrosftVisualC++6.0开发环境

四思考题

#include<iostream.h>

voidmain()

inta,b,c;

cout<<"Pleaseinputa,b=//输出字符串

cin>>a>>b;〃输入两个数据到变量a、b中

c=a*b;〃求乘积存入c

cout<<a<<"*"<<b<<="<<c<<endl;//输出结果

实验二输入/输出与顺序结构

三实验内容

1.阅读程序,写出运行结果。

(1)

i+j=15

i*j=50

(2)

a=9b=5

2.程序填空

(1)

①k=i+j

(2)i<<'+'<<]<<'='

(2)

①a=c

②"char"vvcv<"\tASCII="<va

3.程序改错

#include<iostream.h>

voidmain()

doubler,s,l;

cout<<"PleaseinputR';

cin>>r;

s=3.1416*r*r;

l=2.0*3.1416*r;

cout<<"S="<<s<<endl;

cout<<"L="<<l<<endl;

)

4.编程题

⑴输入华氏温度F,计算输出对应的摄氏温度。由华氏温度F求摄氏温度c的公

式为:

#include<iostream.h>

voidmain()

{

doublef,c;

cout<<"pleaseinputF=

cin>>f;

c=(f-32)*5/9;〃或c=5.0/9*(f-32);

cout<<"G="<<c<<endl;

)

⑵输入学生的语文、数学、英语、物理4门课程的成绩,计算该学生的总成绩

和平均成绩并输出。

#include<iostream.h>

voidmain()

(

doubleeng,chin,math,phy,sum,aver;

cout<<"pleaseinput4scores:

cin>>eng>>chin>>math>>phy;//输入成绩

sum=eng+chin+math+phy;〃计算总成绩

aver=sum/4;//计算平均分

coutv<"Sum="vvsum<<endl〈v"\tAverage="<<aver<vendl;〃输出

)

⑶编写程序,从键盘输入一个大写英文字母,输出对应的小写字母。

#include<iostream.h>

voidmain()

(

charc1,c2;

cout<<"Pleaseinputanupperletter:

cin>>d;

c2=c1+32;

cout<<"c1="<<c1<<"\tc2="<<c2<<endl;

)

实验三选择结构程序设计

三实验内容

1.选择题

⑴C

⑵B

⑶D

(4)C

⑸C

(6)C

⑺D

2.

(1)

-4

(2)

4599

(3)

2,1

(4)

1

3.编程题

⑴由键盘输入三个字符,输出其中的最大者。

【源程序】

#include<iostream.h>

voidmain()

(

charx,max;

cout<<"Pleaseinputthreecharacterss:

cin>>x;

max=x;

cin>>x;

if(x>max)

max=x;

cin>>x;

if(x>max)

max=x;

cout<<"max="<<max<<endl;

)

⑵输入三角形三边的长,求三角形的面积。若输入的三个边能构成三角形,则

计算其面积并输出;否则输出提示信息。

【源程序】

〃参见教材P44例3.15

#include<iostream.h>

#include<math.h>

voidmain()

(

doublea,b,c,s,area;

cout<<"Pleaseinputa,b,c=";

cin>>a>>b>>c;

if(a+b<=c||a+c<=b||b+c<=a)

cout<<"cantbeatriangle!\n";

else

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

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

cout<<"area="<<area<<endl;

)

⑶编程求下面符号函数值:

y=

0(x=0)

1(x>0)

-1(x<0)

【源程序】

#include<iostream.h>

voidmain()

(

intx,y;

cout<<"Pleaseinputx=

cin>>x;

if(x>0)

y=1;

elseif(x==0)

y=o;

else

y=-1;

cout<<"y="<<y<<endl;

)

⑷计算奖金。设企业利润为L,当企业利润L不超过5000元时,奖金为利润

的1.5%,当5000<LW10000元时,超过5000元部分奖金为2%(5000元以

下仍按1.5%);当10000<LW20000元除10000以下的按上述方法计算外,

超过10000元部分按2.5%计算奖金;如果20000<LW50000元,超过20000元

部分按3%计算奖金;当50000<LW100000元时,超过50000元部分按3.5%

计算奖金;当L超过100000元时,超过100000元部分按4%计算奖金。由键

盘输入L的值,编程计算相应的奖金并输出。

【源程序】

#include<iostream.h>

voidmain()

(

doubleL,S;

cout<<"pleaseinputL=";

cin>>L;

if(L<5000)

S=L*0.015;

elseif(L<10000)

S=75+(L-5000)*0.02;

elseif(L<20000)

S=175+(L-10000)*0.025;

elseif(L<50000)

S=175+250+(L-20000)*0.03;

elseif(L<100000)

S=175+250+900+(L-50000)*0.035;

else

S=175+250+900+1750+(L-100000)*0.04;

cout<<"S="<<S<<endl;

)

⑸输入年龄,输出所处人群:9岁以下为儿童,输出A;1〜19为少年,输

出B;20〜29为青年,输出C;30〜49为中年,输出D50以上为老年,

输出Eo

【源程序】

#include<iostream.h>

voidmain()

(

intage;

cout<<"Pleaseinputage:

cin>>age;

switch(age/10)

{

case0:coutv<"A--儿童\n";break;

case1:cout<<"B--J>^\n";break;

case2:cout<<"C-n";break;

case3:

case4:8utvv"D--中年\n";break;

defautcoutvv"E--老年\n";break;

)

)

⑹有如下函数:

0<t<1

l<t<2

2<t<3

3<t<4

由键盘输入t值,计算S的值。

【源程序】

〃方法一

#include<iostream.h>

voidmain()

(

doublet,s;

cout<<"pleaseinputt=

cin>>t;

if(t>O&&t<4)

(

if(t<1)

s=t*t;

elseif(t<2)

s=t*t-1;

elseif(t<3)

s=t*t-2*t+1;

else

s=t*t+4*t-17;

cout<<"s="<<s<<endl;

}

else

cout<<"Error!tcan\'tbelessthan0ormorethan4!\n";

)

〃方法二

#include<iostream.h>

voidmain()

(

doublet;

cout<<"pleaseinputt=

cin>>t;

if(t<=0)

cout<<"error,tcan\'tbelessthan0!\n";

elseif(t<1)

cout<<"s="<<t*t<<endl;

elseif(t<2)

cout<<"s="<<t*t-1<<endl;

elseif(t<3)

cout<<"s="<<t*t-2*t+1<<endl;

elseif(t<4)

cout<<"s="<<t*t+4*t-17<<endl;

else

cout<<"error,tcan\'tbemorethan4!\n";

)

〃方法三

#include<iostream.h>

voidmain()

(

doublet,s;

cout<<"pleaseinputt=";

cin>>t;

if(t<=0)

cout<<"error,tcan\'tbelessthan0!\n";

elseif(t<1)

(

s=t*t;

cout<<"s="<<s<<endl;

)

elseif(t<2)

{

s=t*t-1;

cout<<"s="<<s<<endl;

)

elseif(t<3)

(

s=t*t-2*t+1;

cout<<"s="<<s<<endl;

elseif(t<4)

s=t*t+4*t-17;

cout<<"s="<<s<<endl;

)

else

cout<<"error,tcan\'tbemorethan4!\n";

)

习题3

3.12编写求100以内偶数之和的程序。

#include<iostream.h>

voidmain()

(

ints=0,i;

for(i=2;i<=100;i=i+2)

s=s+i;

cout<<"s="<<s<<endl;

)

3.13输入一实数x和一整数n,求xn。

#include<iostream.h>

voidmain()

(

doublex,m=1;

intn,i;

cout<<"pleaseinputanintegerandarealnumber:";

cin>>n>>x;

for(i=1;i<=n;i++)

m=mx;

cout<<"x的n次嘉为:"cvmvvendl;

)

3.14编程求1+2+3+...+n之和超过2000的第一个n值及其和。

#include<iostream.h>

voidmain()

(

doubles=0;

intn;

for(n=1;n<=100;n++)

(

s=s+n;

if(s>2000)break;

)

cout<<"s="<<s<<"n="<<n<<endl;

)

3.15求200以内的素数之和。

#include<iostream.h>

voidmain()

(

ints=0,n,i;

for(n=1;n<200;n=n+2)

{

for(i=2;i<n;i++)

if(n%i==O)break;

if(i==n)s=s+n;

)

cout<<"s="<<s<<endl;

)

3.16计算1-3+5-7+../99+101的值。

#include<iostream.h>

voidmain()

(

ints=0,m=1,n;

for(n=1;n<=101;n=n+2)

(

s=s+n*m;

m=-m;

)

cout<<"s="<<s<<endl;

)

3.17输入10个整数,求最小值并输出。

#include<iostream.h>

voidmain()

(

intx,min,i;

cin>>x;

min=x;

for(i=2;i<=10;i++)

cin>>x;

if(x<min)min=x;

)

cout<<,,min=,,<<min<<endl;

)

3.18输入若干学生成绩,统计其中90分以上、70〜89、60〜69、小于60

分的人数并输出,当输入的数小于0时结束。

#include<iostream.h>

voidmain()

(

doubleg;

inti,l=0,m=0,n=0,k=0;

cin>>n;

for(i=1;i<=n;i++)

(

cin>>g;

if(g>=90)l++;

elseif(g>=70)m++;

elseif(g>=60)n++;

elseif(g>=O)k++;

elsebreak;

)

cout<<"l="vvIvv"m="vvmvv"n="<<n<<"k="<<k<<endl;

)

3.19用牛顿迭代法求方程x3-2x-4=0在0.5附近的根,当前后两项的差的绝对

值小于10-6则达到要求精度。

#include<iostream.h>

#include<math.h>

voidmain()

(

doublex1,x2=0.5,y1,y2;

cout<<"x1x2y\n";

do

(

x1=x2;

y1=x1*x1*x1-2*x1*x1-4;

y2=3*x1*x1-2;

x2=x1-y1/y2;

cout<<"\t"<<x1<<"\t"<<x2<<"\t"<<y1<<endl;

}while(fabs(x1-x2)>1e-6);

cout<<"x="<<x1<<endl;

)

3.20用迭代法求,当前后两项的差的绝对值小于10-6则达到要求精度。求平

方根的迭代公式为:

#include<iostream.h>

#include<math.h>

voidmain()

(

doublea,xn0,xn1;

cout<<"pleaseinputapositivenumber:";

cin>>a;

xn0=a/2;

xn1=(xn0+a/xn0)/2;

do

(

xn0=xn1;

xn1=(xnO+a/xnO)/2;

}while(fabs(xn0-xn1)>=1e-6);

cout<<a<<"平方根="<<xn1<<endl;

}

实验四循环结构程序设计

三实验内容

1.选择题

(8)下面程序的运行结果是Do

#include<iostream.h>

2.阅读程序,写出运行结果。

⑴下面程序的运行结果是0918273645—。

⑵下面程序的运行结果是一a=4_。

⑶下面程序的运行结果是n=4。

3.程序填空

⑴下面程序的功能是依次显示100,80,60,40,20这5个数,请填空。

#include<iostream.h>

voidmain()

(

inti;

for(i=100;i>=20;_i-=20)

cout<<i<<"\t";

cout<<endl;

)

⑵下面程序的功能是计算xn,请填空。

#include<iostream.h>

voidmain()

(

intn,x;

cout<<"Pleaseinputx,n=";

cin>>x>>n;

doubley=1;

for(inti=0;i<n;i++)

y*=x;—;

cout<<y<<endl;

)

⑶下面程序的功能是计算1-3+5-7+...-99+101的值,请填空。

#include<iostream.h>

voidmain()

(

inti,t,s=0,sign=1;

for(i=1;i<=101;i+=2)

(

t=i*sign;

s+=t;

sign=-sign;

cout<<"s="<<s<<endl;

*

***

*****

*******

)

⑷下面程序的功能是输出以下形式的金字塔图案:

#include<iostream.h>

voidmain()

(

for(inti=1;i<=4;i++)

(

for(intj=1;j<=4-i___;j++)

cout<<'

for(j=1;j<=2*i-1—;j++)

cout<<'*';

cout<<endl;

)

)

4.编程题

⑴输入n,求1+2+3+......+n的和。

#include<iostream.h>

voidmain()

inti,n;

doublesum=0;

cin>>n;

for(i=1;i<=n;i++)

sum+=i;

cout<<"1+2+3+...+"<<n<<"="<<sum<<endl;

}

⑵输入若干个整数,求它们的和,遇到-999时结束输入。

#include<iostream.h>

voidmain()

{

intn;

doublesum=0;

cin>>n;

for(;n!=-999;)//while(n!=-999)

{

sum+=n;

cin>>n;

)

coutv<"sum="<<sum<<endl;

)

⑶输入一整数,输出各位数字之和。如输入6228,则输出6+2+2+8的和为18。

#include<iostream.h>

voidmain()

doubles=0;

intn;

cin>>n;

while(n!=0)

(

s+=n%10;

n=n/10;

)

cout<<"s="<<s<<endl;

)

(4)输入一实数x和一整数n,求x+x2+x3+..xn的值。

#include<iostream.h>

voidmain()

(

inti,j,n;

doublex,sum=0,p;

cin>>n>>x;

for(i=1;i<=n;i++)

(

P=1.;

for(j=1;j<=i;j++)

P*=x;

sum+=p;

cout<<"x="<<x<<"\tn="<<n<<endl;

cout<<"sum="<<sum<<endl;

)

⑸求2!+4!+6!+.....+16!。

#include<iostream.h>

voidmain()

(

inti,j;

doublesum=0,p;

for(i=2;i<=16;i+=2)

(

P=1;

for(j=1;j<=i;j++)

P*=j;

sum+=p;

}

cout<<"2!+4!+6!+...+16!="<<sum<<endl;

}

(6)输入两个整数n和m,打印n行星号,每行m个星号。如果输入的n和m

的值为47,则输出为:

*******

*******

*******

*******

#include<iostream.h>

voidmain()

(

inti,j,n,m;

cin>>n>>m;

for(i=0;i<n;i++)

(

for(j=0;j<i;j++)

cout<<"

for(j=0;j<m;j++)

cout<<"*";

cout<<endl;

)

}

⑺求1n+3n+5n+7n+….+(2m-1)n,其中m和n的值从键盘输入。

#include<iostream.h>

voidmain()

(

inti,j,n,m,sum=O,p;

cin>>n>>m;

for(i=1;i<=2*m-1;i+=2)

(

p=1.;

for(j=1;j<=n;j++)

p=I;

sum+=p;

)

cout<<"m="<<m<<"\tn="<<n<<endl;

cout<<"sum="<<sum<<endl;

)

循环结构的继续:

1.程序填空

⑴以下程序的功能是计算:s=1+12+123+1234+12345。请填空。

①t=10*t+i

②②s=s+1

⑵下面程序的功能是输出符合条件的三位整数:它是完全平方数,又有两位数

字相同,并且统计个数,请填空。

@(i-n1*100)/10或(i/10)%10

②num++

③j++

2.编程

(1)输入10个字符,输出其中的最大者。

#include<iostream.h>

voidmain()

{

charch,maxchar;

cout<<"pleaseinputtencharacter:";

cin>>ch;

maxchar=ch;

for(inti=1;i<10;i++)

cin>>ch;

if(ch>maxchar)maxchar=ch;

)

cout<<"maxchar="<<maxchar<<endl;

}

(2)一个球从100m高度自由落下,每次落地后反弹回原来高度的一半,再落

下,再反弹。求它在第10次落地时,共经过多少米?第10次反弹多高?

分析:共经过:100*(1+1/2+1/4+1/8---+1/1024)米

第10次:第0/1024米

#include<iostream.h>

voidmain()

(

doublea,b=100,sum=100;

for(a=1;a<=1;a++)

(

b=b/2;

sum=sum+2*b;

)

cout<<sum<<'\t'<<b;

(3)用下列泰勒级数求sinx的近似值,x的值从键盘输入,精度要求为10凡

#include<iostream.h>

#include<math.h>

voidmain()

intsign=1,n=1;

doublex=3.0,fenzi=x,fenmu=1.0,equo=1,sum=x;

while(fabs(equo)>=1e-6)

{

fenzi*=x*x;

fenmu*=(2*n)*(2*n+1);

sign*=-1;

equo=sign*fenzi/fenmu;

sum+=equ。;

n++;

)

cout<<"sinx="<<sum<<endl;

}

(4)编写程序,对输入的一批整数统计出正数的个数、负数的个数、奇数的个

数、偶数的个数,要求所统计的整数由键盘输入,以0作为输入数据结束的标

志。

#include<iostream.h>

voidmain()

(

inta=0,b=0,c=0,d=0,x;

cin>>x;

while(x!=0)

{

if(x>0)a+=1;

if(x<O)b+=1;

if(x%2)c+=1;

elsed+=1;

cin>>x;

)

cout<<"正数个数="<<a<<endl;

COUt<v"负数个数="<<13<<611€11;

cout<<"奇数个数="<<c<<endl;

cout<<"偶数个数="<<d<<endl;

)

(5)用牛顿迭代法求方程2x3-4x2+3x-6=0在1.5附近的根,精度要求为10%

#include<iostream.h>

#include<math.h>

voidmain()

(

doublex1,x2=1.5,y1,y2;

cout<<"x1x2y\n";

do

{

x1=x2;

y1=2*x1*x1*x1-4*x1*x1+3*x1-6;

y2=6*x1*x1-8*x1+3;

x2=x1-y1/y2;

cout<<"\t"<<x1<<"\t"<<x2<<"\t"<<y1<<endl;

}while(fabs(x1-x2)>1e-6);

cout<<"x="<<x1<<endl;

)

(6)输出这样的三位整数:这些三位数的个、十、百位上的数字均不相同,并

且能被11整除。

#include<iostream.h>

voidmain()

(

inti,j,k,n=O;

for(i=1;i<10;i++)

for(j=0;j<10;j++)

for(k=0;k<10;k++)

if(i==j||j==k||k==i)

continue;

elseif((i*1OO+j*1O+k)%11==0)

(

cout<<++n;

cout<<<i*1OO+j*1O+k<<"\t";

)

)

(7)输入两个正整数m和n,求其最大公约数和最小公倍数。

#include<iostream.h>

voidmain()

(

inta,b,num1,num2,temp;

coutvv"请输入两个正整数:";

cin>>num1>>num2;

if(num1>num2)

temp=num1;

num1=num2;

num2=temp;

)

a=num1,b=num2;

while(b!=0)

(

temp=a%b;

a=b;

b=temp;

)

cout<v"最大公约数为:"<<a<<endl;

cout<v"最小公倍数为:"<<numrnum2/a<<endl;

)

数值型数组部分

1.分析程序,写运行结果.

(1)4321(2)s=1234(3)sum=51

(4)row=1(5)s=15(6)159

col=12610

m=-53711

4812

2.程序提空

(1)①a[i]vmin②a[i]>max③aver/=10

⑵①ivj②i++,j-③a[i]=a[j]

⑶①continue②a[i]

3.编写程序并上机调试运行

#include<iostream.h>

constdoubleLOWER=-10000;

voidmain()

(

doublescore[10];

doublehighestScore=LOWER;

doubleaverage=0;

doublenumLTaverage=0;

〃输入、求最高分、求总分

for(inti=0;i<10;++i)

(

cout<<"Pleaseinputthescore("<<i+1<<<710):";

cin>>score[i];

if(highestScore<score[i])highestScore=score[i];

average+=score[i];

)

average/=10;

〃求成绩低于平均分的人数

for(i=0;i<10;++i)

if(score[i]<average)++numLTaverage;

cout<<"Theaveragescoreis"<<average<<endl;

cout<<"Thehighestscoreis"<<highestScore<<endl;

cout<<"ThenumberofLTaverageis"<<numLTaverage<<endl;

#include<iostream.h>

voidmain()

intmyArray[10];

intouter,inner;

intimax;

for(inti=0;i<10;++i)

(

cout<<"Inputanumber:";

cin>>myArray[i];

)

for(outer=0;outer<10;++outer)

{

〃在下标位outer到9之间的元素中寻找最大值

imax=outer;

for(inner=outer+1;inner<10;++inner)

if(myArray[imax]<myArray[inner])imax=inner;

〃将最大值与下标为outer的元素交换

inttemp=myArray[outer];

myArray[outer]=myArray[imax];

myArray[imax]=temp;

)

〃输出

for(i=0;i<10;++i)

cout<<myArray[i]<<'\

cout<<endl;

#include<iostream.h>

constintN=10;

voidmain()

(

intmyArray[N]={1,5,8,13,16,34,67,78,90,100};

intiSearch;

cout<<"Pleasetellmethenumberwhichyouwanttosearch:

cin>>iSearch;

intlow=0;

inthigh=N-1;

intmid;

〃开始二分查找

while(low<=high)

{

mid=(low+high)/2;

if(myArray[mid]==iSearch)

break;

elseif(myArray[mid]<iSearch)

low=mid+1;

else

high=mid-1;

)

〃判断是否找到

if(myArray[mid]==iSearch)

cout<<"Wehavefoundthenumber."<<endl;

else

cout<<"Wehavn'tfoundthenumber."<<endl;

)

#include<iostream.h>

voidmain()

(

intyangHui[10][10];

yangHui[0][0]=yangHui[1][0]=yangHui[1][1]=1;

for(inti=2;i<10;++i)

(

yangHui[i][O]=yangHui[i][i]=1;

for(intj=1;j<i;++j)

yangHui[i][j]=yangHui[i-1][j]+yangHui[i-1][j-1];

}

for(i=0;i<10;++i)

(

for(intj=O;jv=i;++j)

cout<<yangHui[i][j]<<'\t';

cout<<endl;

)

#include<iostream.h>

voidmain()

(

〃由用户输入学生人数

intnumStu;

cout<<"Pleaseinputthenumberofstudents:

cin>>numStu;

〃根据用户输入的人数建立数组,其中0-2列为三门课成绩,最后一列是总分。

〃最后添加一行用来存储总分。

int(*p)[4];

p=newint[numStu+1][4];

〃将总分置0

p[numStu][0]=p[numStu][1]=p[numStu][2]=0;

for(inti=0;i<numStu;++i)

(

〃将每个人的总分置0

p[i][3]=0;

cout<<"IDis"<<i+1<<":\n";

〃输入英语成绩

cout<<"PleaseinputthescoreofEng:";

cin>>p[i][0];

p[i][3]+=p[i][0];

p[numStu][0]+=p[i][0];

〃输入物理成绩

cout<<"PleaseinputthescoreofPhy:";

cin>>p[i][1];

p[i][3]+=p[i][1];

p[numStu][1]+=p[i][1];

〃输入英语成绩

cout<<"PleaseinputthescoreofMat:";

cin>>p[i][2];

p[i][3]+=p[i][2];

p[numStu][2]+=p[i][2];

)

〃输出

for(i=0;i<numStu;++i)

cout<<"ID"<<i+1<<":\n";

cout<<"Thesumis"<<p[i][3];

cout<<"AtTheaverageis"<<p[i][3]/3.0;

cout<<endl;

)

cout<<"Eng:sum="<<p[numStu][0]<<",average="<<

p[numStu][0]/double(numStu);

cout<<"\nPhy:sum="<<p[numStu][1]<<",average="<<

p[numStu][1]/double(numStu);

cout<<"\nMat:sum="<<p[numStu][2]<<",average="<<

p[numStu][2]/double(numStu);

delete[]p;

#include<iostream.h>

voidmain()

{

intmyMatrix[4][4];

〃输入

for(inti=0;i<4;++i)

for(intj=0;j<4;++j)

(

cout<<'('<<i+1<<';<<j+1<<

cin>>myMatrix[i][j];

)

〃输出转置前的数组

cout<<"Beforeexchange:"”;

for(i=0;i<4;++i)

{

for(intj=0;j<4;++j)

cout<<myMatrix[i][j]<<'\t';

cout<<endl;

)

〃转置

for(i=0;i<4;++i)

for(intj=0;j<i;++j)

inttemp=myMatrix[i][j];

myMatrix[i][j]=myMatrix[j][i];

myMatrix[j][i]=temp;

)

〃输出转置后的数组

cout<<"Afterexchange:\n";

for(i=0;i<4;++i)

{

for(intj=0;j<4;++j)

cout<<myMatrix[i][j]<<'\t';

cout<<endl;

)

#include<iostream.h>

constintN=3;

constintM=4;

constintK=5;

voidmain()

(

〃定义数组

int

〃输入数组A

cout<<"MatrixA:\n";

for(inti=0;i<N;++i)

for(intj=0;j<M;++j)

(

cout<<'('<<i+1<<';<<j+1<<

cout<<'('<<N<<';<<M<<

cin>>a[i][j];

)

〃输入数组B

cout<<"MatrixB:\n";

for(i=0;i<M;++i)

for(intj=0;j<K;++j)

cout<<'('<<i+1<<';<<j+1<<

cout<<'('<<M<<';<<K<<

cin>>b[i][j];

〃计算C,并输出

cout<<"MatrixC=AXB:\n";

for(i=0;i<N;++i)

(

for(intj=0;j<K;++j)

(

c[i][j]=0;

for(intk=0;k<M;++k)

c[i][j]+=a[i][k]*b[k][j];

cout<<c[i][j]<<<\t';

)

cout<<endl;

)

)

数组与指针部分:

一维数组:

#include<iostream.h>

voidmain()

(

intmyArray[10];〃定义数组

intiCount;〃定义循环变量

〃为数组赋值

for(iCount=0;iCount<10;++iCount)

myArray[iCount]=2*(iCount+1);

〃输出数组

for(iCount=0;iCount<10;++iCount)

cout<<myArray[iCount]<<endl;

)

#include<iostream.h>

voidmain()

(

intmyArray[10];〃定义数组

intiCount;〃定义循环变量

intsum=0;〃定义累加和

〃数组输入

for(iCount=0;iCount<10;++iCount)

{

cout<<"Pleaseinputanumber("<<iCount+1<<<710):";

cin>>myArray[iCount];

)

〃求和

for(iCount=0;iCount<10;++iCount)

sum+=myArray[iCount];

〃输出和

cout<<"Thesumofthearrayis"<<sum<<endl;

)

#include<iostream.h>

constintN=10;

voidmain()

(

intmyArray[N];〃定义数组

intiCount;〃定义循环变量

intiMaxjMin;〃定义最大值和最小值的下标

〃数组输入

for(iCount=0;iCount<N;++iCount)

{

cout<<"Pleaseinputanumber("<<iCount<<7"<<N'1<<;

cin>>myArray[iCount];

)

〃初始化

iMax=iMin=0;

〃寻找最大值

for(iCount=1;iCount<N;++iCount)

if(myArray[iMin]>=myArray[iCount])iMin=iCount;

if(myArray[iMax]<=myArray[iCount])iMax=iCount;

〃输出和

cout<<"Themaxofarrayis"<<myArray[iMax]<<",andthesuffixis"

<<iMax<<"An";

cout<<"Theminofarrayis"<<myArray[iMin]<<",andthesuffixis"<<

iMin<<"An";

)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论