C++上机上.docx

上传人:b****5 文档编号:7406217 上传时间:2023-05-11 格式:DOCX 页数:31 大小:24.71KB
下载 相关 举报
C++上机上.docx_第1页
第1页 / 共31页
C++上机上.docx_第2页
第2页 / 共31页
C++上机上.docx_第3页
第3页 / 共31页
C++上机上.docx_第4页
第4页 / 共31页
C++上机上.docx_第5页
第5页 / 共31页
C++上机上.docx_第6页
第6页 / 共31页
C++上机上.docx_第7页
第7页 / 共31页
C++上机上.docx_第8页
第8页 / 共31页
C++上机上.docx_第9页
第9页 / 共31页
C++上机上.docx_第10页
第10页 / 共31页
C++上机上.docx_第11页
第11页 / 共31页
C++上机上.docx_第12页
第12页 / 共31页
C++上机上.docx_第13页
第13页 / 共31页
C++上机上.docx_第14页
第14页 / 共31页
C++上机上.docx_第15页
第15页 / 共31页
C++上机上.docx_第16页
第16页 / 共31页
C++上机上.docx_第17页
第17页 / 共31页
C++上机上.docx_第18页
第18页 / 共31页
C++上机上.docx_第19页
第19页 / 共31页
C++上机上.docx_第20页
第20页 / 共31页
亲,该文档总共31页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

C++上机上.docx

《C++上机上.docx》由会员分享,可在线阅读,更多相关《C++上机上.docx(31页珍藏版)》请在冰点文库上搜索。

C++上机上.docx

C++上机上

C++程序设计语言上机试题

一、熟悉上机编译环境

1、输出一行字符:

“Iam20yearsold.”。

解:

#include//包含头文件iostream

usingnamespacestd;//使用命名空间std

intmain()

{cout<<″ThisisaC++program.″;

return0;

}

2、求a和b两个数之和。

解:

#include//预处理命令

usingnamespacestd;//使用命名空间std

intmain()//主函数首部

{//函数体开始

inta,b,sum;//定义变量

cin>>a>>b;//输入语句

sum=a+b;//赋值语句

cout<<″a+b=″<

return0;//如程序正常结束,向操作系统返回一个零值

}

3、编写一个程序输出以下信息:

*********************

Happynewyear!

*********************

解:

#include

main()

{cout<<"********************"<

cout<<"Happynewyear!

"<

cout<<"**********************";}

4、求a,b,c三个数之积。

解:

#include//预处理命令

usingnamespacestd;//使用命名空间std

intmain()//主函数首部

{//函数体开始

inta,b,c,s;//定义变量

cin>>a>>b>>c;//输入语句

s=a*b*c;//赋值语句

cout<<″a*b*c=″<

return0;//如程序正常结束,向操作系统返回一个零值

}

5、试编写一个程序,要求输出两个数中较小者。

解:

#include

main()

{inta,b;

cin>>a>>b;

if(a>b)

cout<<”Theminis”<

else

cout<<”Theminis”<

}

 

二、数据、操作符和表达式

6、请输出字符A、B、D、E的ASCII值。

解:

#include

main()

{intc1='A',c2='B',c3='D',c4='E';

cout<<"The'A'is%d\n"<

cout<<"The'B'is%d\n"<

cout<<"The'D'is%d\n"<

cout<<"The'E'is%d\n"<

7、请分析本程序结果:

#include

main()

{inta=3,b=4,c=2;

a=++b+c++;

cout<

a=(b++)+(++c);

cout<

a++;

cout<<"a>b:

"<<(a>b)<

cout<<"a

"<<(a

cout<<"a==b:

"<<(a==b)<

cout<<"a!

=b:

"<<(a!

=b)<

cout<<"a>b&&c

"<<(a>b&&c

cout<<"ac:

"<<(ac);}结果为:

解:

7,5,3

9,6,4

a>b:

1

a

0

a==b:

0

a!

=b:

1

a>b&&c

1

ac:

1

8、编写程序,从键盘输入一个字符,求出与该字符前后相邻的两个字符,按从小到大的顺序输出这三个字符的ASCII码。

解:

ASCII码的大小关系与字符的大小关系一致,且相邻字符的ASCII码编码连续。

用顺序结构即可实现,程序如下:

#include

main()

{charch;

cin>>ch;

cout<<(char)(ch-1)<<"ASCIIcodeis"<<(int)ch-1<

cout<

cout<<(char)(ch+1)<<"ASCIIcodeis"<<(int)ch+1<

}

 

三、顺序程序设计

9、输入一个非负数,计算以这个数为半径的圆周长和面积。

解:

#include

main()

{constfloatpi=3.1415926;

floatr,s,c;

cin>>r;

s=r*r*pi;

c=2*pi*r;

cout<<"s="<

10、输入任意一个三位数,将其各位数字反序输出(例如输入123,输出321)。

解:

#include

main()

{inta,b,c,d;

cin>>a;

b=a/100;

c=a%100/10;

d=a%10;

cout<

}

四、分支程序设计

11、从键盘输入某学生的四科成绩,求出总分和平均分,找出最高分和最低分。

解:

寻找最高分和最低分的基本操作是比较当前分数和当前最高分及最低分的大小,需要选择结构来实现,程序如下:

#include

main()

{floata1,a2,a3,a4,aver,sum;

floatmin,max;

cout<<"Enter4scores:

"<

cin>>a1>>a2>>a3>>a4;

min=a1;max=a1;

sum=a1+a2+a3+a4;aver=sum/4;

if(a2

min=a2;

elseif(a2>max)

max=a2;

if(a3

min=a3;

elseif(a3>max)

max=a3;

if(a4

min=a4;

elseif(a4>max)

max=a4;

cout<<"aver="<

cout<<"min="<

}

12、输入年号和月份,输出这一年的该月的天数。

(一个年份,先判断是否闰年)

解:

需要判断输入的年份是否闰年,输入月份与该月天数的关系最好使用switch结构,if结构亦可完成。

参考程序如下:

#include

main()

{intyear,month,day;

cout<<"Enteryear&month:

";

cin>>year>>month;

if((year%4==0)&&(year%100!

=0)||(year%400==0))

{if(month==2)

day=29;

else

day=28;

}

else{

switch(month)

{

case1:

case3:

case5:

case7:

case8:

case10:

case12:

day=31;

break;

case2:

day=28;

break;

case4:

case6:

case9:

case11:

day=30;

break;

}

}

cout<<"year="<

13、给出一个百分制的成绩,要求输出成绩等级‘A’,‘B’,‘C’,‘D’,‘E’。

90分以上为‘A’,80——89为‘B’,70——79为‘C’,60——69为‘D’,60分以下为‘E’。

解:

#include

main()

{floatscore;

intgrade;

cout<<"pleaseinputascore:

";

cin>>score;

grade=score/10;

switch(grade)

{case9:

cout<<"It'sAgrade.\n";break;

case8:

cout<<"It'sBgrade.\n";break;

case7:

cout<<"It'sCgrade.\n";break;

case6:

cout<<"It'sDgrade.\n";break;

case5:

case4:

case3:

case2:

case1:

cout<<"It'sEgrade.\n";break;

default:

cout<<"It'serror!

\n";}

}

14、企业发放的奖金根据利润提成,利润i低于或等于10万元的,奖金可提10%;利润高于10万元,低于20万元的,低于10万元的部分按10%提,高于10万元的部分可提7.5%;20万

从键盘输入当月利润i,求应发奖金总数。

要求:

用if和switch语句编程。

解1:

#include

main()

{inti,m;

cout<<"请输入当月利润:

";

cin>>i;

if(i<=100000)m=i*0.1;

elseif(i<=200000)m=100000*0.1+(i-100000)*0.075;

elseif(i<=400000)m=100000*0.1+100000*0.075+(i-200000)*0.05;

elseif(i<=600000)m=100000*0.1+100000*0.075+200000*0.05+(i-400000)*0.03;

elseif(i<=1000000)m=100000*0.1+100000*0.075+200000*0.05+200000*0.03+(i-600000)*0.015;

elsem=100000*0.1+100000*0.075+200000*0.05+200000*0.03+400000*0.015+(i-1000000)*0.01;

cout<<"奖金总数为:

"<

}

解2:

#include

main()

{inti,m,n;

cout<<"请输入当月利润:

";

cin>>i;

n=i/100000;

switch(n)

{case0:

m=i*0.1;break;

case1:

m=100000*0.1+(i-100000)*0.075;break;

case2:

case3:

m=100000*0.1+100000*0.075+(i-200000)*0.05;break;

case4:

case5:

m=100000*0.1+100000*0.075+200000*0.05+(i-400000)*0.03;break;

case6:

case7:

case8:

case9:

m=100000*0.1+100000*0.075+200000*0.05+200000*0.03+(i-600000)*0.015;break;

default:

m=100000*0.1+100000*0.075+200000*0.05+200000*0.03+400000*0.015+(i-1000000)*0.01;}

cout<<"奖金总数为:

"<

15、输入4个整数,按由小到大的顺序输出。

解:

#include

main()

{

inta,b,c,d,t;

cout<<"请输入4个数:

";

cin>>a>>b>>c>>d;

if(a>b)

{t=a;a=b;b=t;}

if(a>c)

{t=a;a=c;c=t;}

if(a>d)

{t=a;a=d;d=t;}

if(b>c)

{t=b;b=c;b=t;}

if(b>d)

{t=b;b=d;d=t;}

if(c>d)

{t=c;c=d;d=t;}

cout<<"smalltobig:

"<

}

五、循环程序设计

16、给出一个不多于5位是正整数,要求:

(1)求出它是几位数?

(2)分别打印出每一位的数字(3)逆序打印各位数字。

解:

#include

#include

main()

{inti,a,num=1;

cin>>i;

a=i;

while((a=a/10)!

=0)//求是几位数

num++;

cout<<"它是"<

"<

a=i;

intn;

while(num!

=0)//顺序打印每一位

{n=a/pow(10,num-1);

a=a%(int)pow(10,num-1);

cout<

num--;}

cout<

a=i;

intm;

while(a!

=0)//逆序打印每一位

{m=a%10;

cout<

a=a/10;}}

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

解:

#include

main()

{intp,r,n,m,temp;

cout<<"请输入两个整数:

";

cin>>n>>m;

if(n

{temp=n;

n=m;

m=temp;

}

p=n*m;

while(m!

=0)

{r=n%m;

n=m;

m=r;}

cout<<"最大公约数是:

"<

cout<<"最小公倍数是:

"<

18、输入一行字符,分别统计其中英文字母、空格、数字和其他字符的个数。

解:

#include

#include

main()

{charc;

intletter=0,space=0,digit=0,other=0;

cout<<"请输入一行字符:

\n";

while((c=getchar())!

='\n')

{if(c>='a'&&c<='z'||c>='A'&&c<='Z')

letter++;

elseif(c=='')

space++;

elseif(c>='0'&&c<='9')

digit++;

else

other++;

}

cout<<"letter="<

}

19、求sn=a+aa+aaa+……+aa…a之值,其中a是一个数字,例如:

2+22+222+2222+22222(此时n=5),n由键盘输入。

解:

#include

main()

{inta,n,i=1,sn=0,tn=0;

cout<<"a,n=?

";

cin>>a>>n;

while(i<=n)

{tn=tn+a;

sn=sn+tn;

a=a*10;

++i;}

cout<<"a+aa+aaa+...+aaaa...="<

20、求1!

+2!

+3!

+……+20!

=?

解:

#include

main()

{doubles=0,t=1;

intn;

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

{t=t*n;

s=s+t;}

cout<<"1!

+2!

+3!

...+20!

="<

21、输出所有以水仙花数,所谓“水仙花数”是指一个3位数,其各位数字的立方和等于该数本身。

例如:

153=1*1*1+5*5*5+3*3*3。

解:

#include

main()

{inti,j,n,k;

cout<<"水仙花数是:

"<

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

{i=n/100;

j=n/10-i*10;

k=n%10;

if(n==i*i*i+j*j*j+k*k*k)

cout<

22、求Fibonacci数列前40个数。

这个数列有如下特点:

第1、2个数为1、1。

从第3个数开始,每个数是其前面两个数之和。

F1=1(n=1)

F2=1(n=2)

Fn=Fn-1+Fn-2(n≥3)

解:

#include

#include

usingnamespacestd;

intmain()

{longf1,f2;

inti;

f1=f2=1;

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

{cout<

if(i%2==0)cout<

f1=f1+f2;

f2=f2+f1;}

return0;

}

23、用下面公式求π的近似值。

π/4≈1-1/3+1/5-1/7+…直到最后一项的绝对值小于10-7为止。

解:

#include

#include

#include

usingnamespacestd;

intmain()

{ints=1;

doublen=1,t=1,pi=0;

while((fabs(t))>1e-7)

{pi=pi+t;n=n+2;s=-s;t=s/n;}

pi=pi*4;

cout<<"pi="<

return0;

}

24、用迭代法求x=sqrt(a),求平方根的迭代公式为:

xn+1=1/2(xn+a/xn)

要求前后两次求出的x的差的绝对值小于10-5。

解:

#include

#include

usingnamespacestd;

intmain()

{floata,x0,x1;

cout<<"请输入a值";

cin>>a;

x0=a/2;

x1=(x0+a/x0)/2;

do{

x0=x1;

x1=(x0+a/x0)/2;

}while(fabs(x0-x1)>=1e-5);

cout<<"Thesquarerootof"<

}

25、输出以下图案:

*

***

*****

*******

*****

***

*

解:

#include

intmain()

{

inti,j;

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

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

cout<<"*";

cout<

}

for(i=3;i>=1;i--)

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

cout<<"*";

cout<

}

26、两个乒乓球队进行比赛,各出3人。

甲队为A、B、C3人,乙队为X,Y,Z3人。

已抽签决定比赛名单。

有人向队员打听比赛的名单,A说他不和X比,C说他不和X、Z比,请编程找出3对赛手的名单。

解:

#include

usingnamespacestd;

intmain()

{chari,j,k;

for(i='x';i<='z';i++)

for(j='x';j<='z';j++)

for(k='x';k<='z';k++)

if(i!

=j&&i!

=k&&j!

=k)

if(i!

='x'&&k!

='x'&&k!

='z')

cout<<"A->"<"<"<

27、有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?

都是多少?

解:

#include

usingnamespacestd;

intmain()

{

inti,j,k;

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

{for(j=1;j<=4;j++)

for(k=1;k<=4;k++)

if(i!

=j&&i!

=k&&j!

=k)cout<

cout<

}

28、一球从100米高度自由落下,每次落地后又反跳回原高度的一半,再落下。

求它在第10次落地时,共经过多少米?

第10次反弹多高?

解:

#include

usingnamespacestd;

intmain()

{floatsn=100,hn=sn/2;

intn;

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

{sn=sn+2*hn;

hn=hn/2;

}

cout<<"第10次落地时共经过"<

cout<<"第10次反弹"<

29、设N是一个四位数,它的9倍正好是其反序数,求N。

反序数就是将整数的数字倒过来形成的整数。

解:

设整数N的千、百、十、个位为i、j、k、m,取值范围0-9,N的范围是1002-1111,穷举条件为:

(i*1000+j*100+k*10+m)*9=m*1000+k*100+j*10+l

参考程序如下:

#include

main()

{inti,j,k,m,n;

cout<<"Thenumbersatisfiedstatescontionis:

";

for(n=1002;n<1111;n++)

{i=n/1000;

j=n/100%10;

k=n/10%10;

m=n%10;

if((i

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2