C++50题答案.docx
- 文档编号:6357729
- 上传时间:2023-01-05
- 格式:DOCX
- 页数:39
- 大小:90.86KB
C++50题答案.docx
《C++50题答案.docx》由会员分享,可在线阅读,更多相关《C++50题答案.docx(39页珍藏版)》请在冰豆网上搜索。
C++50题答案
本学期《程序设计基础》课程实行上机考核,现将考核有关事项通知如下:
(1)考核时间:
本学期最后一次上机时间为机试。
(2)考核内容:
C++面向过程部分,主要是算法设计与实现。
考题来自本学期布置的作业、部分例题及一些补充的题目。
(3)考试形式:
机试前进入机房时,每人随机抽取一道题(同一个班的同学保证不抽到同一题),然后上机编程,调试通过后报告监考人员审核,审核通过后将源程序拷贝到监考人员U盘上,然后可以离开机房。
源
程序文件明必须是“学号姓名.cpp”,如“201221153刘2天.cpp”。
(4)考试要求:
机试时考试规则同课堂考试一致,不允许带书、纸张等。
不能携带任何可用计算机处理的软件或数据(不允许任何私人携带的U盘、磁盘或计算器),不能携带任何类型的通讯工具,包括无线电接收器、移动电话。
(5)考试成绩:
本次机试成绩将在《程序设计基础》课程成绩中占25%的比重。
(6)其它有关事项由主考教师和监考人员负责处理。
附:
考试题集
1.利用异或运算对输入的文本进行加密解密输出,用户输入一个文本(字符串,设不超过20个字符),然后输入作为密钥的字符,程序输入加密及解密的字符串。
//加密字符串
#include
{
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< } 已阅,请放心食用 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) { } else { } } days=29; cout< days=28; cout< 已阅,请放心食用 3.某大桥按不同型号征收车辆过桥费: 自行车免费,摩托车2元,小汽车5元,大客车与货车8元,货柜车12元。 编写一个程序,按车辆的不同型号计算通过该大桥应征的过桥费。 (提示: 可以用整数对不同型号的车辆进行编码) //收过桥费 #include { intkind; cout<<"1.自行车\n";cout<<"2.摩托车\n";cout<<"3.小汽车\n";cout<<"4.大货车或客车\n";cout<<"5.货柜车\n";cout<<"请输入汽车种类: "; cin>>kind;switch(kind) { case1: cout<<"费用: 0元"< case2: cout<<"费用: 2元"< case3: cout<<"费用: 5元"< case4: cout<<"费用: 8元"< case5: cout<<"费用: 12元"< 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表示数据输入结束),如411306-51-17-12190100 编写程序统计输入流中-1、0和+1的个数。 //输入数流#include { 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: "< "< "< } 已阅,请放心食用 7.编写一个程序,求一个自然数中含有多少个2的因子。 如,6含1个2的因子,8含3 个2的因子,11不含2的因子。 (提示,程序应检查用户输入的合法性)。 //求2因子#include { 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 { 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 { 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<<"公鸡"< 只\n"; } } } 已阅,请放心食用 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 { 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 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< 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< } } 已阅,请放心食用 14.编程实现求解最大公约数的欧几里德算法,用户输入两个任意正整数,程序输出他们 的最大公约数。 算法如下: 步骤1: 如果p 步骤2: 令r是p/q的余数。 步骤3: 如果r=0,则令g=q并终止;否则令p=q,q=r并转向步骤2 14. //求最大公约数#include { 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 { intn,t=1,i; cout<<"请输入正整数n: ";cin>>n; for(i=0;;i++,t*=2) { if(t>n) { cout< } } 各种取值对根的影响 //二次方程求解#include { 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 { 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 min: a[i];s+=a[i]; } cout<<"该班同学成绩中最高分为: "< "< } 已阅,请放心食用 19.编一程序模拟整数加、减、乘、除四则运算。 当你在键盘上输入 5+6 后,程序将输出=11,当你在键盘上输入11*7后,程序将输出=77。 //模拟四则运算#include { floata,b;charx; cout<<"请输入算式: "< cin>>a>>x>>b;if(x=='+')
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 50 答案