C 程序设计及题集(含答案)_第1页
C 程序设计及题集(含答案)_第2页
C 程序设计及题集(含答案)_第3页
C 程序设计及题集(含答案)_第4页
C 程序设计及题集(含答案)_第5页
已阅读5页,还剩14页未读 继续免费阅读

付费下载

下载本文档

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

文档简介

1/1C程序设计及题集(含答案)C++程序设计及题集((含答案))??导读:

就爱阅读网友为您分享以下C++程序设计及题集(含答案)对资讯,希望对您有所帮助,感谢您对92的的支持!?本学期《程序设计基础》课程实行上机考核,现将考核有关事项通知如下:

?(1)考核时间:

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

?(2)考核内容:

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

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

?(3)考试形式:

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

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

?(4)考试要求:

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

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

?(5)考试成绩:

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

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

?附:

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

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

(提示:

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

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

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

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

(提示:

可以用整数对不同型号的车辆进行编码)?4.是输入一位同学的考试成绩,若是90~100分,输出Excellent,80~89输出Verygood,?70~79输出Good,,60~69输出Pass,,60分以下输出NoPass。

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

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

?6.用户输入一个整数流(输入1000表示数据输入结束),如如?411306-51-17-12190100?编写程序统计输入流中-1、0和+1的个数。

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

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

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

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

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

问台阶共有几级??9.公鸡5元元1只,母鸡3元元1只,小鸡1元元3只,花了100元钱买100只鸡,问公鸡、?母鸡、小鸡各多少只??10.编程实现解决下述问题的算法:

一位顾客在购物时,买如果买4个苹果剩下4角钱.如?果买5个苹果则缺5角钱,请问,该顾客带了多少钱?多少钱可以头一个苹果???11.编写程序.计算100之内可以被13整除的自然数之和。

?12.键盘输入m和和n(10mn32000出),求出m~n间所有行素数且按每行8个数形式输出。

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

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

算法如下:

?步骤1:

?步骤2:

?步骤3:

如果pq,则交换p和q。

令r是p/q的的余数。

如果r=0,则令g=q并终止;?否则令p=q,q=r并转向步骤2?15.求不超过正整数n的的2的最大幂值,如输入17,程出序应输出4(24=1617)。

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

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

请编写一个程序,计算在多少年之后鱼的数目下降到目前的一半?多少年后下降到目前的十分之一?(提示注意整数类型的取值范围)。

?17.编程求解一元二次方程ax2+bx+c=0的根。

要求:

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

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

(提示:

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

程序根据结束标志统计人数)?19.编一程序模拟整数加、减、乘、除四则运算。

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

?20.把一张1元钞票换成1分、2分和5分的硬币,每种有至少有1枚,问有多少种换法??1?1!12!1(n-1)!e=1+++++r?21.求自然对数底(e)的近似值。

e的近似值计算公式为:

?当余项rn设时停止计算。

设=1e-8?7?22.S=i!=1!+2!++7!?i=1?23.S=12+34+56++3940?24.Y=X-X3?3!+X55!-X77!++(-1)n+1X2n-1(2n-1)!+的值,到精确到10-6。

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

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

?26.水仙花数问题:

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

例如,?153=13+53+33。

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

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

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

(提?示:

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

)?28.完数问题:

若有一数,其值等于它的因子之和,则该数称为完数。

例如,6的因子为?1、2、3,而6=1+2+3,故6是完数。

编程输出1000之内的所有完数及其因子。

?29.100匹马驮100担货,大马一匹驮3担,中马一匹驮2担,小马2匹驮1担。

试编程?计算大、中、小马的数目。

?30.编程产生出1到到10以内的所有数对i,j并输出,其中ij。

?31.编程求出1000以内的所有符合如下条件的数:

其高如位数字小于低位数字。

如12,238?等。

但21,548不符合条件。

?32.数求任一整数N的标准分解式,即素数因子之积。

例如如16=2*2*2*2,15=3*5。

?33.斐波那契(Fibonacci)数列问题:

Fibonacci数列递归定义为:

?x0=0,?x1=1,?xi+1=xi+xi-1,i=2,3,?即从第二项开始,数列中的每一个元素等于前面两个元素前之和。

编程输出前20项项Fibonacci数。

(提示可以用递归或迭代两种方式编程)?34.打印下面图形。

?1?131?13531?1357531?135797531??132131??35.打印如下图形?ABCDE?BCDEA?CDEAB?DEABC?EABCD?36.正读和反读都一样的数称为回文数。

编写程序输入一数个整数max_num,输出从0到?max_num中用二进制表示和十进制表示都是回文数的整数数。

定义一个函数is_circle_num()判断一个数(number))在某个进制(radius)下数是否为回文数。

例如,整数313就就为是该程序输出的一个数,因为它的二进制表示为10011001。

?37.编写一个递归函数:

将一个整数转换为响应的字符串并输出,函数原型可声明为:

void?int2str(intnumber)。

?38.用函数实现将一个以字符串形式表示的十六进制数转换为一个十进制整数。

例如,输?入A2为转换为162。

?39.编写一个将十进制整数转换为十六进制字符串的函数。

?40.编写出判断一个整数是否为素数的函数,并求出在2000以内的有十个以上的所有连续?的非素数组。

?41.编制一个程序,统计从标准输入设备上输入的字符流(以?结束)中每个英文字母(大小?写不分开计)出现的次数。

?42.编程实现冒泡排序算法,将输入的若干整数由小到大(升序)排序输出。

要求定义?是一个排序函数,其原型是voidbubble(intdata[],intlength)。

?43.给定含有m+n个元素的整型数组A(其中m0,n0),它分为两个互不重叠的,长度?分别为m和和n的子数组段,写出交换这两个子数组段的组程序,要求不引入数组A以外的数组,但可引入若干中间变量。

?44.用数组存储数据,实现筛选法求素数问题的求解。

要出求求出2到到1000之间的所有素数。

筛选法求出2~N间的所有素数的方法是:

首先将这些数全部放入一个数组中,然后重复下面的操作直到数组为空为止:

?a.找出其中的最小数K,则K一定是一个素数,因此可输出。

?b.从数组中删除K及其所有倍数。

?45.编程实现二分查找算法。

二分(折半)查找(搜索)算法如下:

?数组a中的n个数从大到小(降序)的顺序排列,要检索一个数x是否在a中,折半查找算法的思路是:

?设查找区间为[lower,upper],初值lower=0,upper=n-1;算法步骤:

?(1)输入数组a的元素及x;?(2)x是否为a的第一或最后一个元素。

若是其中之一,算法结束;?(3)将区间两等分为[lower,mid]和[mid,upper],mid为为若区间中点,每次取出中间项进行检查,若x=a[mid],x被被检索到,算法结束;若xa[mid],则在后半区间[mid,upper]内重复折半检索;若xa[mid],则在前半区间[lower,mid]内重复使折半检索。

反复执行上述步骤,使lower和upper相等或相差1(表示未检索到x),或a[mid]=x。

?46.编程实现查找矩阵中最大元素的位置。

要求输入一个矩阵中所有元素,输出该矩阵,?并输出矩阵中最大数所在的行、列号及该元素的值。

?47.编写程序找出二维整形数组中所有这样的元素及其位置:

它在所在的行上是最大的,?在所在的列上也是最大的。

设数组中的元素各不相同。

(提第示:

先在第i行中寻找此行最大值元素,记下其行和列,然后在其所在的列判断它是否也是最大的,若是则输出结果。

可以引入标志变量表示找到这个元素。

)?48.编程产生下列数组,并输出。

?123456?234560?345601?456012?560123?601234?49.编程产生下列数组,并输出?123456?212345?321234?432123?543212?654321??50.编程产生下列数组,并输出。

123n-102340134512n-101n-3n-2012n-2n-1??1.?//加密字符串?#includeiostream.h?voidmain()?{?chara[21],b,key;?cout请输入字符串和密钥:

;;a[g]!=0;g++){couta[g];?}?coutendl;?}?2.?#includeiostream.h?main()?{?#includeiostream.h?main()?{?intcock,hen,chicken,price;?for(cock=0;cock=20;cock++){?for(hen=0;hen=33;hen++){?chicken=100-cock-hen;?if(chicken%3==05*cock+3*hen+chicken/3==100)?cout符合条件的有公鸡cock母鸡hen小鸡鸡chickenendl;?}?}?return0;?}?10.?#includeiostream.h?main()?{?intmoney,i,m,n;?for(i=1;;i++){?if(4+4*i==5*i-5){?coutmoney=4+4*iprice=iendl;break;?}??elsecontinue;?}?return0;?}?11.?#includeiostream.h?main()?{?intn,i,j,s=0;?for(i=1;i=100;i++){?if(i%13==0)s+=i;?elsecontinue;?}?cout100以内可以被13整除的自然数之和为:

sendl;?return0;?}?12.?//求求m到到n的素数?#includeiostream.h?#includemath.h?intf(intn)?{?inta,x,i,b;?x=sqrt(n);?if(n==2||n==3)b=1;?elsefor(i=2;i=x;i++){?if(n%i==0){?b=0;?break;?}?elseif(i==x)b=1;?elsecontinue;?}?returnb;?}?main()?{?intm,n,x,i,j;?staticintk=0;?l:cout输入m,n(其中10mn32000):;?cinmn;?if(m=10||m=n||n32000){?cout输入数据有误!请再;?gotol;?}?for(i=m;i=n;i++){?if(f(i)){?couti;?k++;?if(k%8==0)coutendl;?}?}?coutendl;?return0;?}?13.?//打印乘法口诀表?#includeiostream.h?main()?{?inti,j;?for(i=1;i=9;i++){?for(j=1;j=i;j++)couti‟*‟j‟=i*j;coutendl;?}?return0;?}?14.?//求最大公约数?#includeiostream.h?main()?{?intm,n,temp;?cout输入两个整数:

;?cinmn;?temp=mn?m:n;?m=mn?n:m;?n=temp;?for(;;){?temp=m%n;?if(temp){?m=n;?n=temp;?}?else{?cout最大公约数是:

nendl;break;?}?}?return0;?}?15.?//求不超过正整数n的的2的最大幂值?#includeiostream.h?#includemath.h?main()?{?intn,i;?cout请输入正整数n:;?cinn;?for(i=0;pow(2,i)=n;i++){}?cout满足条件的值为:

i-1endl;return0;?}?16.?#includeiostream.h?#includemath.h?voidmain()?{?constdoublefishnum=800000000;?return0;?}?21.?//求求e?#includeiostream.h?#includeiomanip.h?main()?{?inti;?doubletemp=1,sum=0;?for(i=1;temp=1e-8;i++){?sum+=temp;?temp/=i;?}?coute=1+1/1!+1/2!+1/3!+=setprecision(9)sumendl;}?22.?//求求1!+2!~~+7!?#includeiostream.h?intf(intx)?{?intr;?if(x==0)r=1;?elser=x*f(x-1);?returnr;?}?main()?{?inti,s=0;?for(i=1;i=7;i++){?s+=f(i);?}?cout结果是:

sendl;?return0;?}?23.?//求12+34+56++3940?#includeiostream.h?main()?{?inti,s=0;?for(i=1;i=39;i+=2){?s+=i*(i+1);?}?cout结果是:

sendl;?return0;?}?24.?//求值,精确到10e-6?#includeiostream.h?#includemath.h?main()?{?inti,x;?cout输入整数x:;?cinx;?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结果是:sendl;?return0;?}?25.?//反向输出?#includeiostream.h?#includemath.h?main()?{?intx,i,j;?cout输入整数x:;?cinx;?for(i=0;;i++)if(x/(int)pow(10,i)==0)break;inta[100];?for(j=0;ji;j++){?a[j]=(x%(int)pow(10,j+1))/((int)pow(10,j));}?cout反向输出为:

;?for(intb=0;bi;b++)couta[b];?coutendl;?return0;?}?26.?//水仙花数?#includeiostream.h?main()?{?inti,a,b,c;?for(i=100;i=999;i++){?//马驮货?30.?//输出数对?#includeiostream.h?main()?{?inti,j;?for(i=1;i10;i++)?for(j=1;j10;j++){?if(ij)cout‟‟i‟,‟j‟‟endl;?}?return0;?}?31.?//输出数?#includeiostream.h?main()?{?inti,j,k;?for(i=10;i1000;i++){??if((i/100==0i/10i%10)||(i/1000==0i/100(i/10)%10(i/10)%10i%10))coutiendl;?}?return0;?}?32.?//标注分解N?#includeiostream.h?main()?{?intN,n,i;?cout输入N:;?cinN;?n=N;?coutN=;?for(i=2;i=n/2;){?if(n%i==0){?couti*;?n/=i;?}?elsei++;?}?coutnendl;?return0;?}?33.?//斐波那契(Fibonacci)数列问题?#includeiostream.h?intx(inti)?{?intr;?if(i==0||i==1)r=1;?elser=x(i-1)+x(i-2);?returnr;?}?main()?{?intn,r,m=0;?for(n=0;n20;n++){?r=x(n);?coutr;?m++;?if(m%5==0)coutendl;?}?return0;?}?34.?//打印图形?#includeiostream.h?#includeiomanip.h?main()?{?inti,j,k,l;?for(i=1;i=11;i++){?for(j=1;j=4*(11-i);j++)cout;?for(k=1;k2*i-1;k+=2)coutsetw(4)k;for(l=2*i-1;l=1;l-=2)coutsetw(4)l;coutendl;?}?return0;?}?35.?//输出字符组?#includeiostream.h?main()?{?chara[6]=ABCDE,i,j,x;?for(i=0;i=4;i++){?for(j=i;j=4;j++)couta[j];?37.?#includeiostream.h?voidint2str(intnumber)?{?inta;?if(number==0)return;?a=number-(number/10)*10;//或或a=number%10int2str(number/10);?coutchar(a+48);?}?voidmain()?{?intnum;?coutInputanumber:;?cinnum;?if(num0){?num=-num;?cout‟-‟;?}?int2str(num);?coutendl;?}??38?//16-10?#includeiostream?#includestring?#includecmath?usingnamespacestd;?boolrightFormat(string);?intconvert(string);?intchange2num(char);?intmain()?{?stringhex;?cout输入一个十六进制数,字母用大写:

endl;l:cinhex;?if(!rightFormat(hex)){?cout不是正确的十六进制数!请重新输入:

;gotol;?}?cout结果是:

convert(hex)endl;?}??boolrightFormat(strings){?boolb=true;?for(string::size_typei=0;is.size();i++){?if(s[i]‟0‟||(s[i]‟9‟s[i]‟A‟)||s[i]‟F‟){?b=false;?break;?}?}?returnb;?}??intconvert(strings){?intdec=0;?for(string::size_typei=0;is.size();i++){?dec=dec+change2num(s[i])*pow(16.0,(int)(s.size()-1-i));}?returndec;?}??intchange2num(charc){?switch(c){?case1‟:return1;?case2‟:return2;?case3‟:return3;?case4‟:return4;?case5‟:return5;?case6‟:return6;?case7‟:return7;?case8‟:return8;?case9‟:return9;?caseA‟:return10;?caseB‟:return11;?caseC‟:return12;?caseD‟:return13;?caseE‟:return14;?caseF‟:return15;?default:return0;?}?}?39.?//功能:

将16进制字符串转换成整数?#includeiostream.h?voidcon10to16(intn,chars[])?{?inti=0,m=0,j=0;?charc;?while(n!=0){?m=n%16;?if(m=0m=9)?s[i]=m+‟0‟;?elseif(m=10m=15)s[i]=m-10+‟A‟;n=n/16;?i++;?}?i--;?m=i/2;?for(j=0;j=m;j++,i--){?c=s[i];?s[i]=s[j];?s[j]=c;?}?}?main()?{?chars[8]=;?intn;?cout请输入一个整数:;?cinn;?con10to16(n,s);?cout转化的字符串为sendl;}?40.?//输出十个以上的所有连续的非素数组?#includeiostream.h?#includemath.h?intfunc(intn)?{?inti,k=(int)sqrt(n)+1;?for(i=2;ik;i++)?if(n%i==0)break;?if((i==k))return1;?elsereturn0;?}?intmain()?{?intm,i,j,h=0;?for(m=0;m=2000;m++)?{?h=0;?if(func(m)==1){?for(i=1;;i++){?#includeiostream.h?intDeleteNum(int*,int,int);?intmain()?{?constintN=998;?inta[N];?for(inti=0;iN;i++)a[i]=i+2;?intsize=N;?while(size0){?couta[0]endl;?size=DeleteNum(a,size,a[0]);?}?return0;?}?intDeleteNum(int*p,intn,intm){?inti,j;?for(i=0,j=0;jn;j++)?if(p[j]%m)?p[i++]=p[j];?returni;?}?45.

温馨提示

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

评论

0/150

提交评论