C++题答案.docx

上传人:b****8 文档编号:9989634 上传时间:2023-02-07 格式:DOCX 页数:52 大小:36.15KB
下载 相关 举报
C++题答案.docx_第1页
第1页 / 共52页
C++题答案.docx_第2页
第2页 / 共52页
C++题答案.docx_第3页
第3页 / 共52页
C++题答案.docx_第4页
第4页 / 共52页
C++题答案.docx_第5页
第5页 / 共52页
点击查看更多>>
下载资源
资源描述

C++题答案.docx

《C++题答案.docx》由会员分享,可在线阅读,更多相关《C++题答案.docx(52页珍藏版)》请在冰豆网上搜索。

C++题答案.docx

C++题答案

本学期《程序设计基础》课程实行上机考核,现将考核有关事项通知如下:

(1)考核时间:

本学期最后一次上机时间为机试。

(2)考核内容:

C++面向过程部分,主要是算法设计与实现。

考题来自本学期布置的作业、部分例题及一些补充的题目。

(3)考试形式:

机试前进入机房时,每人随机抽取一道题(同一个班的同学保证不抽到同一题),然后上机编程,调试通过后报告监考人员审核,审核通过后将源程序拷贝到监考人员U盘上,然后可以离开机房。

源程序文件明必须是“学号姓名.cpp”,如刘天.cpp”。

  

(4)考试要求:

机试时考试规则同课堂考试一致,不允许带书、纸张等。

不能携带任何可用计算机处理的软件或数据(不允许任何私人携带的U盘、磁盘或计算器),不能携带任何类型的通讯工具,包括无线电接收器、移动电话。

(5)考试成绩:

本次机试成绩将在《程序设计基础》课程成绩中占25%的比重。

(6)其它有关事项由主考教师和监考人员负责处理。

附:

考试题集

1.利用异或运算对输入的文本进行加密解密输出,用户输入一个文本(字符串,设不超过20个字符),然后输入作为密钥的字符,程序输入加密及解密的字符串。

//加密字符串

#include

voidmain()

{

chara[21],b,key;

inti;

cout<<"请输入字符串:

";

cin>>a;

cout<<"请输入密匙:

";

cin>>b;

for(i=0;a[i]!

=0;i++)

a[i]=a[i]^b;

cout<<"加密后:

";

for(i=0;a[i]!

=0;i++)

cout<

cout<

";

cin>>key;

for(i=0;a[i]!

=0;i++)

a[i]=a[i]^key;

for(i=0;a[i]!

=0;i++)

cout<

cout<

}

已阅,请放心食用

2.编写一个程序,用户输入年份及月份两个数据,程序输出该月份的天数。

(提示:

对2月要考虑是否闰年,闰年年份要么能被4整除且不能被100整除,要么能被400整除,除次之外都不是闰年)。

#include

voidmain()

{

intyear,month,days;

cout<<"请输入年份,月份:

";

cin>>year>>month;

if(month==1||month==3||month==5||month==7||month==8||month==10||month==12)

{

days=31;

cout<

}

elseif(month==4||month==6||month==9||month==11)

{

days=30;

cout<

}

elseif((year%4==0&&year%100!

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

{

days=29;

cout<

}

else

{

days=28;

cout<

}

}

已阅,请放心食用

3.某大桥按不同型号征收车辆过桥费:

自行车免费,摩托车2元,小汽车5元,大客车与货车8元,货柜车12元。

编写一个程序,按车辆的不同型号计算通过该大桥应征的过桥费。

(提示:

可以用整数对不同型号的车辆进行编码)

//收过桥费

#include

voidmain()

{

intkind;

cout<<"1.自行车\n";

cout<<"2.摩托车\n";

cout<<"3.小汽车\n";

cout<<"4.大货车或客车\n";

cout<<"5.货柜车\n";

cout<<"请输入汽车种类:

";

cin>>kind;

switch(kind)

{

case1:

cout<<"费用:

0元"<

break;

case2:

cout<<"费用:

2元"<

break;

case3:

cout<<"费用:

5元"<

break;

case4:

cout<<"费用:

8元"<

break;

case5:

cout<<"费用:

12元"<

break;

default:

cout<<"错误!

"<

}

}

已阅,请放心食用

4.输入一位同学的考试成绩,若是90~100分,输出“Excellent”,80~89输出“Verygood”,70~79输出“Good”,60~69输出“Pass”,60分以下输出“NoPass”。

#include

voidmain()

{

intmarks;

cout<<"输入考试成绩:

";

cin>>marks;

switch(marks/10)

{

case10:

case9:

cout<<"Excellent\n";

break;

case8:

cout<<"VeryGood\n";

break;

case7:

cout<<"Good\n";

break;

case6:

cout<<"Pass\n";

break;

default:

cout<<"NoPass\n";

}

}

已阅,请放心食用

5.旅行社的订票量小于10张时,航空公司给予10%的折扣;订票量大于或等于10张且小于20张时,航空公司给予15%的折扣;订票量大于或等于20张且小于30张时,航空公司给予30%的折扣;订票量大于或等于30张时,航空公司给予最高的45%的折扣。

编程输入订票张数及单张机票票价,程序输出折扣率及应付款额。

//旅行社折扣

#include

voidmain()

{

intnum,price;

floatdiscount,total_price;

cout<<"输入购买张数和单价:

";

cin>>num>>price;

switch(num/10)

{

case0:

discount=0.1;

break;

case1:

discount=0.15;

break;

case2:

discount=0.3;

break;

default:

discount=0.45;

}

total_price=num*price*(1-discount);

cout<<"总价格为:

"<

}

已阅,请放心食用

6.用户输入一个整数流(输入1000表示数据输入结束),如

编写程序统计输入流中-1、0和+1的个数。

//输入数流

#include

voidmain()

{

inta[100],i,j,x=0,y=0,z=0;

cout<<"输入数流(以1000结束):

";

for(i=0;;i++)

{

cin>>a[i];

if(a[i]==1000)break;

}

for(j=0;a[j]!

=1000;j++)

{

if(a[j]==-1)x++;

if(a[j]==0)y++;

if(a[j]==1)z++;

}

cout<<"该数流中含-1:

"<

cout<<"该数流中含0:

"<

cout<<"该数流中含1:

"<

}

已阅,请放心食用

7.编写一个程序,求一个自然数中含有多少个2的因子。

如,6含1个2的因子,8含3个2的因子,11不含2的因子。

(提示,程序应检查用户输入的合法性)。

//求2因子

#include

voidmain()

{

intx,i,n;

do{

cout<<"输入整数:

";

cin>>x;

}while(x<=0);

n=x;

for(i=0;n%2==0;i++)

n/=2;

cout<<"整数"<

}

已阅,请放心食用

8.编写一个程序解决爱因斯坦台阶问题:

有人走以台阶,若以每步走2级则最后剩1级;若每步走3级则最后剩2级;若以每步走4级则最后剩3级;若以每步走5级则最后剩4级;若以每步走6级则最后剩5级;若以每步走7级则最后刚好不剩。

问台阶共有几级?

#include

voidmain()

{

inti;

for(i=0;;i++)

{

if(i%2==1&&i%3==2&&i%4==3&&i%5==4&&i%6==5&&i%7==0)break;

}

cout<<"最小可能值是:

"<

}

已阅,请放心食用

9.公鸡5元1只,母鸡3元1只,小鸡1元3只,花了100元钱买100只鸡,问公鸡、母鸡、小鸡各多少只?

//百元买百鸡

#include

voidmain()

{

intcock,hen,chicken,price;

for(cock=0;cock<=20;cock++)

{

for(hen=0;hen<=33;hen++)

{

chicken=100-cock-hen;

if(chicken%3==0&&5*cock+3*hen+chicken/3==100)

cout<<"公鸡"<

}

}

}

已阅,请放心食用

10.编程实现解决下述问题的算法:

一位顾客在购物时,如果买4个苹果剩下4角钱.如果买5个苹果则缺5角钱,请问,该顾客带了多少钱?

多少钱可以头一个苹果?

#include

voidmain()

{

intmoney,money1,money2,i,m,n;

for(i=1;;i++)

{

if(4+4*i==5*i-5)

{

money=4+4*i;

money1=money/10;

money2=money-10*money1;

cout<<"顾客带了"<

break;

}

}

}

已阅,请放心食用

11.编写程序.计算100之内可以被13整除的自然数之和。

#include

voidmain()

{

inti,sum=0;

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

{

if(i%13==0)

sum+=i;

}

cout<<"100以内可以被13整除的自然数之和为:

"<

}

已阅,请放心食用

12.键盘输入m和n(10

//求m到n的素数

#include

#include

intf(inti)

{

intl;

for(l=2;l

{

if(i%l==0)

return0;

}

return1;

}

voidmain()

{

intm,n,x,i,j;

intk=0;

do{

cout<<"输入m,n(其中10

";

cin>>m>>n;

}while(m<=10||m>=n||n>32000);

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

{

if(f(i))

{

cout<

k++;

if(k%8==0)cout<

}

}

cout<

}

已阅,请放心食用

13.编写程序打印乘法口诀表。

//打印乘法口诀表

#include

voidmain()

{

inta,b,t;

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

{

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

cout<

cout<

}

}

已阅,请放心食用

14.编程实现求解最大公约数的欧几里德算法,用户输入两个任意正整数,程序输出他们的最大公约数。

算法如下:

步骤1:

如果p

步骤2:

令r是p/q的余数。

步骤3:

如果r=0,则令g=q并终止;

否则令p=q,q=r并转向步骤2

14.

//求最大公约数

#include

voidmain()

{

intp,q,r;

cout<<"输入两个整数:

";

cin>>p>>q;

if(p

{

r=q;

q=p;

p=r;

}

r=p%q;

while(r!

=0)

{

p=q;

q=r;

r=p%q;

}

cout<<"最大公约数是:

"<

}

已阅,请放心食用

15.求不超过正整数n的2的最大幂值,如输入17,程序应输出4(24=16<17)。

#include

voidmain()

{

intn,t=1,i;

cout<<"请输入正整数n:

";

cin>>n;

for(i=0;;i++,t*=2)

{

if(t>n)

{

cout<

break;

}

}

}

已阅,请放心食用

16.有关专家十分关注珠江渔业资源的问题。

目前珠江中大约有8000万条鱼,平均每年以3.5%的速度减少。

请编写一个程序,计算在多少年之后鱼的数目下降到目前的一半?

多少年后下降到目前的十分之一?

(提示注意整数类型的取值范围)。

#include

voidmain()

{

doublefishnum=8e7,fish;

intyear;

for(year=0,fish=fishnum;;year++,fish*=0.965)

{

if(fish<=4e7)

{

cout<<"当鱼的数目等于原来的一半时,需要"<

break;

}

}

for(year=0,fish=fishnum;;year++,fish*=0.965)

{

if(fish<=8e6)

{

cout<<"当鱼的数目等于原来的十分之一时,需要"<

break;

}

}

}

已阅,请放心食用

17.编程求解一元二次方程

+bx+c=0的根。

要求:

设计完备的测试数据集,考虑a,b,c各种取值对根的影响

//二次方程求解

#include

#include

voidmain()

{

floata,b,c,x1,x2,t;

cout<<"请输入a,b,c:

";

cin>>a>>b>>c;

t=b*b-4*a*c;

if(a==0&&b==0)

cout<<"根为一切实数\n";

elseif(a==0)

cout<<"根为"<<-c/b<<'\n';

elseif(t<0)

cout<<"无根\n";

elseif(t==0)

cout<<"根为"<<-b/(2*a)<<'\n';

elseif(t>0)

cout<<"根为"<<(-b+sqrt(t))/(2*a)<<"和"<<(-b-sqrt(t))/(2*a)<<'\n';

}

已阅,请放心食用

18.编写一个程序,输入全班同学某门课考试成绩,计算平均成绩并找出其中最高分与最低分。

(提示:

批量数据通常不事先规定输入的数据数量,而是以一个特殊的标志作为输入结束。

程序根据结束标志统计人数)

//班级分数

#include

voidmain()

{

inta[100],i,max,min,s=0;

cout<<"输入同学成绩(以1000结束):

";

for(i=0;;i++)

{

cin>>a[i];

if(a[i]==1000)break;

if(i==0)

{

max=a[0];

min=a[0];

}

max=max>a[i]max:

a[i];

min=min

a[i];

s+=a[i];

}

cout<<"该班同学成绩中最高分为:

"<

}

已阅,请放心食用

19.编一程序模拟整数加、减、乘、除四则运算。

当你在键盘上输入

5+6

后,程序将输出=11,当你在键盘上输入11*7后,程序将输出=77。

//模拟四则运算

#include

voidmain()

{

floata,b;

charx;

cout<<"请输入算式:

"<

cin>>a>>x>>b;

if(x=='+')

cout<<"="<

elseif(x=='-')

cout<<"="<

elseif(x=='*')

cout<<"="<

elseif(x=='/')

cout<<"="<

else

cout<<"error!

!

!

"<

}

已阅,请放心食用

20.把一张1元钞票换成1分、2分和5分的硬币,每种至少有1枚,问有多少种换法?

#include

voidmain()

{

inti,j,k,m=0;

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

{

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

{

k=100-5*i-2*j;

if(k>=1)

{

m+=1;

cout<<"i="<

}

}

}

cout<<"共有"<

}

已阅,请放心食用

21.

求自然对数底(e)的近似值。

e的近似值计算公式为:

当余项rn<ε时停止计算。

设ε=1e-8

#include

#include

main()

{

inti;

doubletemp=1,sum=0;

for(i=1;temp>=1e-8;i++)

{

sum+=temp;

temp/=i;

}

cout<<"e=1+1/1!

+1/2!

+1/3!

+....="<

}(控制输出流显示浮点数的有效数字个数)

已阅,请放心食用

22.S=

=1!

+2!

+…+7!

#include

voidmain()

{

intsum=0,n=1,i;

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

{

n*=i;

sum+=n;

}

cout<

}已阅,请放心食用

23.S=1×2+3×4+5×6+…+39×40

//求1×2+3×4+5×6+…+39×40

#include

voidmain()

{

inti,s=0;

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

{

s+=i*(i+1);

}

cout<<"结果是:

"<

}

已阅,请放心食用

24.Y=X-

+…+(-1)n+1

+…的值,精确到10-6。

//求值,精确到10e-6

#include

#include

voidmain()

{

inti,x;

cout<<"输入整数x:

";

cin>>x;

doubletemp=x,s=0;

for(i=1;fabs(temp)>=1e-6;i+=2)

{

s+=temp;

temp=temp*(-x*x)/((float)(i+1)*(i+2));

}

cout<<"结果是:

"<

}

已阅,请放心食用

25.编制一个程序,读入一个正整数,并反向输出。

例如,读入123,输出是321。

25.

//反向输出

#include

#include

voidmain()

{

intx,i,j;

cout<<"输入整数x:

";

cin>>x;

for(i=0;;i++)if(x/(int)pow(10,i)==0)break;

inta[100];

for(j=0;j

a[j]=(x%(int)pow(10,j+1))/((int)pow(10,j));

}

cout<<"反向输出为:

";

for(intb=0;b

cout<

}

/*#include

voidmain()

{

inti;

charx[100];

cout<<"输入整数:

";

cin>>x;

for(i=0;x[i];)

i++;

cout<<"反向输出为:

";

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

cout<

cout<<'\n';

}*/

已阅,请放心食用

26.水仙花数问题:

水仙花数是一种三位数,它的值等于每个数字的立方和。

例如,153=13+53+33。

编程输出小于999的水仙花数。

//水仙花数

#include

voidmain()

{

inti,a,b,c;

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

{

a=i/100;

b=(i-100*a)/10;

c=i-100*a-10*b;

if(i==a*a*a+b*b*b+c*c*c)

cout<

}

}

已阅,请放心食用

27.求一整数的等差数列,该数列满足下述条件:

头4项数的和值为26,积值为880。

(提示:

该数列公差为正整数,否则数列将出现负数;该数列的首项必须小于5,且其公差也小于5,否则头四项数的和将大于26。

//等差数列

#include

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

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1