[ZA]计算机题集含答案029

上传人:feng****ing 文档编号:63938306 上传时间:2022-03-20 格式:DOC 页数:28 大小:185KB
返回 下载 相关 举报
[ZA]计算机题集含答案029_第1页
第1页 / 共28页
[ZA]计算机题集含答案029_第2页
第2页 / 共28页
[ZA]计算机题集含答案029_第3页
第3页 / 共28页
亲,该文档总共28页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
1. 利用异或运算对输入的文本进行加密解密输出,用户输入一个文本(字符串,设不超过20 个字符),然后输入作为密钥的字符,程序输入加密及解密的字符串。2. 编写一个程序,用户输入年份及月份两个数据,程序输出该月份的天数。 (提示:对 2 月要考虑是否闰年, 闰年年份要么能被 4 整除且不能被 100整除,要么能被 400整除, 除次之外都不是闰年) 。3. 某大桥按不同型号征收车辆过桥费:自行车免费,摩托车 2 元,小汽车 5 元,大客车 与货车 8元,货柜车 12 元。编写一个程序,按车辆的不同型号计算通过该大桥应征的 过桥费。(提示:可以用整数对不同型号的车辆进行编码)4. 输入一位同学的考试成绩,若是90100分,输出“Excellent” 8089输出“Very good, 7079 输出“ Good”,6069 输出“ PasS, 60 分以下输出“ No PasS。5. 旅行社的订票量小于 10张时,航空公司给予 10%的折扣。订票量大于或等于 10 张且 小于 20张时,航空公司给予 15%的折扣。订票量大于或等于 20张且小于 30张时,航 空公司给予 30%的折扣。订票量大于或等于 30张时,航空公司给予最高的 45%的折扣。 编程输入订票张数及单张机票票价,程序输出折扣率及应付款额。6. 用户输入一个整数流(输入 1000表示数据输入结束),如4 1 13 0 6 -5 1 -17 -12 19 0 100编写程序统计输入流中 -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之内可以被 1 3整除的自然数之和。12. 键盘输入m和n (10mn 32000 ,求出mn间所有素数且按每行8个数形式输出。14. 编程实现求解最大公约数的欧几里德算法,用户输入两个任意正整数,程序输出他们 的最大公约数。算法如下:步骤1:如果p q,则交换p和q。步骤2:令r是p / q的余数。步骤3:如果r = 0,则令g = q并终止。否则令p = q, q = r并转向步骤215. 求不超过正整数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 1 e =1r1!2! (n 1)!21. 求自然对数底(e)的近似值。e的近似值计算公式为:当余项rn0, n0),它分为两个互不重叠的,长度 分别为m和n的子数组段,写出交换这两个子数组段的程序, 要求不引入数组A以外 的数组,但可引入若干中间变量。42. 用数组存储数据, 实现筛选法求素数问题的求解。 要求求出 2 到 1000之间的所有素数。筛选法求出2N间的所有素数的方法是:第一步将这些数全部放入一个数组中,然后重 复下面的制作直到数组为空为止:a. 找出其中的最小数K,则K 一定是一个素数,因此可输出。b. 从数组中删除K及其所有倍数。43. 编程实现二分查找算法。二分(折半)查找(搜索)算法如下:数组 a 中的 n 个数从大到小(降序)的顺序排列,要检索一个数 x 是否在 a 中, 折半查找算法的思路是:设查找区间为lower, upper,初值lower=0, upper= n-1;算法步骤:( 1 )输入数组 a 的元素及 x 。( 2) x 是否为 a 的第一或最后一个元素。若是其中之一,算法结束。(3)将区间两等分为lower, mid和mid, upper,mid为区间中点,每次取出中间项进行 检查,若 x=amid , x 被检索到, 算法结束。 若 xamid ,则在前半区间 lower, mid 内重复折半检索。 反复执行上述 步骤,使lower和upper相等或相差1 (表示未检索到 x),或amid=x。44. 编程实现查找矩阵中最大元素的位置。要求输入一个矩阵中所有元素,输出该矩阵, 并输出矩阵中最大数所在的行、列号及该元素的值。45. 编写程序找出二维整形数组中所有这样的元素及其位置:它在所在的行上是最大的, 在所在的列上也是最大的。设数组中的元素各不相同。 (提示:先在第 i 行中寻找此行 最大值元素,记下其行和列,然后在其所在的列判断它是否也是最大的,若是则输出 结果。可以引入标志变量表示找到这个元素。 )46. 编程产生下列数组,并输出2 3 4 5 6 03 4 5 6 0 14 5 6 0 1 25 6 0 1 2 36 0 1 2 3 447. 编程产生下列数组,并输出1 2 3 4 5 62 1 2 3 4 53 2 1 2 3 44 3 2 1 2 35 4 3 2 1 26 5 4 3 2 148. 编程产生下列数组,并输出。1 2 3 n-1 02 3 4 0 13 4 5 1 2n-1 0 1 n-3 n-20 1 2 n-2 n-149. 打印下面图形。11 3 11 3 5 3 11 3 5 7 5 3 11 3 5 7 9 7 5 3 11 350.打印如下图形21 31CDEABDEABCEABCD1./加密字符串#includeviostream.hvoid main()char a21,b,key;coutab;for(int i=0;ai!=0;i+)ai=ab;cout 加密后: ;for(int k=0;ak!=0;k+) coutak;coutendlkey;for(int j=0;aj!=0;j+)aj=ajAkey;for(int g=0;ag!=0;g+) coutag; coutendl;2.#includemain()int year,month,days;coutvv请输入年份,月份:; cinyearmonth;if(month=1|month=3|month=5|month=7|month=8|month=10|month=12) days=31;coutvvyearvv年 mon th月有days天n; elseif(month=4|month=6|month=9|month=11) days=30;coutvvyearvv年 mon th月有days天n;else if(year%4=0&year%100!=0)|year%400=0)days=29;coutvvyearvv年 mon th月有days天n; else days=28;coutvvyearvv年 mon th月有daysmain()intkind;cout1.自行车 n;coutvv2 摩托车 n;cout3.小汽车 n;cout4.大货车或客车n;coutkind;switch(kind)case 1: coutvvthe fee is:0 yuanonce.vvendl;break;case 2: coutvvthe fee is:2 yuanonce.vvendl;break;case 3: coutvvthe fee is:5 yuan once.vvendl;break;case 4: coutvvthe fee is:8 yuanonce.vvendl;break;case 5: coutvvthe fee is:12 yuanonce.vvendl;break; default:coutvvError!vvendl;4.#includeviostream.hmain()int marks;coutvv输入考试成绩:;cinmarks; switch(marks/10) case 10:case 9: coutvvExcellentn;break;case 8: coutvvVeryGoodn;break;case 7:coutvvGoodn;break;case 6:coutPassn;break;default : coutNoPassn;return0;5./旅行社折扣#includemain()int num,price;float discount,total_price;coutvv输入购买张数和单价:;cinnumprice;switch(num/10)case 0: discount=0.1;break;case 1: discount=0.15;break;default: discount=0.3; total_price=num*price*(1-discount);cout总价格为:vvtotal_priceve ndl; return0;6./输入数流#includemain()int a100,i,j,x=0,y=0,z=0;coutvv输入数流(以1000结束):; for(i=0;i+) cinai; if(ai=1000) break; for(j=0;aj!=1000;j+) if(aj=-1) x+; if(aj=0) y+; if(aj=1) z+;coutvv该数流中含-1: vvxvv项n;coutvv该数流中含 0: vvyvv项n;coutvv该数流中含 1: vvzvv项n; return0;/求2因子#includemain()int x,i,n;coutvv输入整数:;l:cinx;if(xmain()int i,n; for(i=7;!(i%2=1&i%3=2&i%4=3&i%5=4&i%6=5);i+=7) n=i;coutvv最小可能值是:vv n+7vve ndl;return0;9./百元买百鸡#includeviostream.hmain()int cock,hen,chicken,price; for(cock=0;cockv=20;cock+)for(hen=0;henv=33;hen+) chicken=100-cock-hen; if(chicken%3=0&5*cock+3*hen+chicken/3=100)coutvv符合条件的有公鸡vvcockvvvv母鸡vvhenvvvv小鸡 vvchickenvvendl;return0;10.#includemain()int money,i,m,n; for(i=1;i+) if(4+4*i=5*i-5) coutmoney=4+4*iprice=iendl; break; else continue; return0;11.#includemain()int n,i,j,s=0; for(i=1;i=100;i+) if(i%13=0) s+=i; else continue; cout100以内可以被13整除的自然数之和为:vvsvve ndl;return0;12./求 m 到 n 的素数#include #include intf(int n)int a,x,i,b;x=sqrt(n); if(n=2|n=3) b=1;else for(i=2;i=x;i+) if(n%i=0) b=0; break; else if(i=x) b=1; else continue;return b;main()int m,n,x,i,j;static int k=0;I:cout输入 m,n (其中 10mnmn;if(m=n|n32000) coutvv输入数据有误!请再; goto I; for(i=m;i=n;i+) if(f(i)couti;k+;if(k%8=0)coutendI;coutendI;return0;13./打印乘法口诀表#incIudemain()int i,j;for(i=1;i=9;i+) for(j=1;j=i;j+)couti*j=i*j coutendI;return0;14./求最大公约数#incIudemain()int m,n,temp;cout输入两个整数:;cinmn;temp=mn?m:n; m=mn?n:m; n=temp;for(;) temp=m%n;if(temp)m=n;n=temp;elsecout 最大公约数是: nendl; break; return0;15. /求不超过正整数 n 的2的最大幂值 #include #include main()int n,i; coutvv请输入正整数n:; cinn;for(i=0;pow(2,i)=n;i+) cout满足条件的值为:i-1e ndl;return0;16.#include #include void main() const double fishnum=800000000;double fnum=fishnum;int n=1; while(fnum=fishnum/2) fnum=fnum*(1-0.035); n+; coutvv当鱼的数目等于原来的一半时,需要*=fishnum/10) fnum=fnum*(1-0.035);n+;coutvv当鱼的数目等于原来的十分之一时,需要*年n;17./二次方程求解#include#includemain()float a,b,c;coutabc;float t=b*b-4*a*c;if(a=0)if(b=0)if(c=0)cout 方程根为一切实数 endl;else cout方程无根endl;else cout根是:-c/b0) cout 根 x1=(-b+sqrt(b)/(-2*a)endl 根 x2=(-b-sqrt(b)/(-2*a)endl;else if(t=0) cout 根 x1=x2=(-b+sqrt(b)/(-2*a)endl;else cout 根 x1=vv(-b)/(-2*a)vv+vvYvv(sqrt(-t)/(-2*a)vv)ive ndl 根 x2=(-b)/(-2*a)-(sqrt(-t)/(-2*a)iendl; return0;18./班级分数#includemain()int a100,i,j,max,min,s=0;coutai; if(ai=1000) break; if(i=0)max=a0; min=a0;max=maxai?max:ai; min=minai?min:ai; s+=ai;cout 该 班 同 学 成 绩 中 最 高 分 为 : maxn 最 低 分 为 minn 平均分为 s/in;return0;19. /模拟四则运算#includemain()int a,b;char x;cout 请输入算式: axb; if(x=+)cout=a+bendl;else if(x=-)cout=a-bendl;else if(x=*)cout=a*bendl;else if(x=/)cout=(float)a/bendl; elsecouterror!endl;return0; 20./兑钱#includemain() int i,j,k,m=0; for(i=1;i=20;i+) for(j=1;j=1) m+=1;/couti=i j=j k=kendl; 输出结果 cout共有m种结果 n;return0;21./求 e#include#includemain() int i;double temp=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! #include intf(int x) int r; if(x=0) r=1; else r=x*f(x-1); return r; main()int i,s=0; for(i=1;i=7;i+) s+=f(i); cout 结果是: sendl;return0; 23.求1 X2 + 3 X4 + 5 X6 + +39 X40 #include main()int i,s=0; for(i=1;i=39;i+=2) s+=i*(i+1); cout 结果是: sendl;return0; 24./求值,精确到 10e-6 #include #include main()int i,x;coutvv输入整数X:;cinx; double temp=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./反向输出#include#includemain()int x,i,j;coutvv输入整数X:;cinx;for(i=0;i+) if(X/(int)pow(10,i)=0)break;int a100;for(j=0;ji;j+) aj=(X%(int)pow(10,j+1)/(int)pow(10,j);coutvv反向输出为:;for(int b=0;bi;b+)coutmain()int i,a,b,c;for(i=100;iv=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)coutvvivvendl;return0;27./等差数列#includeviostream.hmain()int k=1,d,a1,a2,a3,a4;bool b=false;for(k=1;k+)for(d=0;dvk;d+)a1=k-d;a2=2*k-d;a3=3*k-d;a4=4*k-d; if(a1+a2+a3+a4=26&a1*a2*a3*a4=880) cout 该数列通项为: an=kn-dendl; b=true; break; if(b) break;28./完数问题#include intmain() int i,s,j; for(i=1;i=1000;i+) s=1;for(j=2;j=(i/2);j+) if(i%j)=0) s=s+j; if(i=s)coutin;return 0;29.(略)/马驮货30./输出数对#includemain()int i,j;for(i=1;i10;i+) for(j=1;jj)couti,jendl; return0;31./输出数#includemain()int i,j,k;for(i=10;i1000;i+)if(i/100=0&i/10i%10)|(i/1000=0&i/100(i/10)%10&(i/10)%10i%10)cout iendl;return0;32./标注分解 N#includemain()int N,n,i;coutN;n=N;coutN=;for(i=2;i=n/2;)if(n%i=0) couti*;n/=i;else i+;coutnendl;return0;33.斐波那契(Fib on acci)数列问题#includeintx(int i)int r;if(i=0|i=1) r=1;else r=x(i-1)+x(i-2);return r;main()int n,r,m=0;for(n=0;n20;n+)r=x(n);coutr;m+;if(m%5=0) coutendl;return0;34./打印图形#include#includemain()int i,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)=1;l-=2)coutsetw(4)l;coutendl;return0;35./输出字符组#includemain()char a6=ABCDE,i,j,x;for(i=0;i=4;i+)for(j=i;j=4;j+)coutaj ;for(x=0;xi;x+)coutax ;coutendl;return0;36.#include #include static int is_circle_num ( int number , int radius );int main()intnum,max_num;coutmax_num;for (num = 0 ; num max_num ; num=num+1 )if( is_circle_num(num,10)=1 & is_circle_num(num,2)=1 ) cout setw(6) num ; cout=right_power) right_num=(number%right_power)/(right_power/radius); left_num=(number/left_power)%radius; if(left_num!=right_num) return 0 ; right_power=right_power*radius; left_power=left_power/radius;return 1;37.#include void int2str ( int number )int a ;if (number= 0 ) return ;a=number- (number/10)*10 ; / 或 a=number%10 int2str( number / 10 ) ;cout char(a+48) ;void main ()int num;cout num ;if(num0) num=-num; cout-;int2str( num ) ; cout10#include #include #include using namespace std; bool rightFormat(string);int convert(string);int change2num(char);int main()string hex;cout 输入一个十六进制数,字母用大写: hex;if(!rightFormat(hex) cout 不是正确的十六进制数!请重新输入: ; goto l;cout 结果是: convert(hex)endl;bool rightFormat(string s) bool b = true;for(string:size_type i=0;is.size(); i+) if(si9 & siF) b = false;break;return b;int convert(string s) int dec = 0;for(string:size_type i=0;is.size(); i+)dec = dec +change2num(si)*pow(16.0,(int)(s.size()-1-i); return dec;int change2num(char c) switch(c) case 1: return 1; case 2: return 2;case 3: return 3;case 4: return 4;case 5: return 5;case 6: return 6;case 7: return 7;case 8: return 8;case 9: return 9;case A: return 10;case B: return 11;case C: return 12;case D: return 13;case E: return 14;case F: return 15;default: return 0;39./ 功能:将 16进制字符串转换成整数#includevoid con10to16(int n,char s)int i=0,m=0,j=0;char c;while(n!=0)m=n%16;if(m=0&m=10&m=15)si=m-10+A; n=n/16;i+;i-;m=i/2;for(j=0;j=m;j+,i-)c=si;si=sj;sj=c;main()chars8=;int n;coutn;con10to16(n,s);cout 转化的字符串为 sendl;40./输出十个以上的所有连续的非素数组 #include#includeintfunc(int n)int i,k=(int)sqrt(n)+1;for(i=2;ik;i+) if(n%i=0)break; if(i=k)return 1; else return 0;intmain()intm,i,j,h=0;for(m=0;m=2000;m+)h=0;if(func(m)=1)for(i=1;i+) if(func(m+i)=0)&(m+i=9)for(j=i-1;j=-1;j-)coutm-j;coutn;elsecontinue;return0;41.#includeiostream.hvoidmain()int nletter26;char ch;for(int i=0; ich;if(ch=A&ch=a&ch=z)nletterch-a+; while(ch!=?);for(i=0; i26; i+)if (nletteri)coutchar(i+A)nletterit;coutendl;42.#include void bubble(int data, int length) intsegment; / 循环扫描数组的下标变量int loop; / 循环扫描部分数组的下标变量int temp; / 用于交换数据时作缓冲的临时变量 / 将数组分段,逐段将数据冒泡排序for(segment = 0; segment = segment; loop = loop - 1) if (dataloop + 1 dataloop) temp= dataloop;dataloop= dataloop + 1;dataloop+ 1 = temp;int main()const intmax_nums = 8; / 程序要处理数据的个数作为符号常量intdatamax_nums; / 存放数据的数组 intloop; / 循环扫描数组的下标变量 / 由用户输入一些数据cout Input max_nums numbers tosort:n;for(loop = 0; loop = max_nums - 1; loop = loop + 1) cout No. loop + 1 dataloop;/ 对数据排序bubble(data,max_nums);/ 将排序后的数据输出cout After sorting:n;for(loop = 0; loop = max_nums - 1; loop = loop + 1) cout No. loop + 1 : dataloop n;return0;43.#include mn;for (i=0;iai;for(i=m-1; i=0; i-)t=ai;ai+j=ai+j+1;coutai ;for(j=0; jn; j+) ai+n=t;for(i=0; im+n; i+) coutendl;44./筛选法求素数 #include intDeleteNum(int*,int,int); intmain() constint N = 998;intaN;for(inti=0; i 0) couta0endl; size= DeleteNum(a,size,a0); return0;intDeleteNum(int *p, int n, int m) inti,j;for(i=0,j=0;jn; j+)if(pj% m)pi+= pj;returni;45./二分法查找数据 #include intmain()int a10=1,3,5,7,9,11,13,15,17,19;int x;int lower=0,upper=9;int mid;coutvv请输入要查找的数字:;cinx;while(lower=upper)mid=(lower+upper)/2; if(amid=x)break; if(amidx)lower=mid+1; else upper=mid-1;if(lower=upper)cout你要找的数字在第mid+1位endl; else coutvv你要找的数字不存在const int max_row=3;const int max_col=4;void locate(const int matrixmax_rowmax_col,int& row, int& col)introw_ptr, col_ptr;row=0;col=0;for(row_ptr=0;row_ptrv=max_row-1; row_ptr=row_ptr+1) for(col_ptr=0;col_ptrv=max_col-1; col_ptr=col_ptr+1) if(matrixrow_ptrcol_ptrmatrixrowcol) row=row_ptr; col=col_ptr;return;int main()int matrixmax_rowmax_col;introw_ptr,col_ptr;introw,col;coutvvInput the matrix: n;for(row_ptr=0;row_ptrv=max_row-1; row_ptr+) for(col_ptr=0;col_ptrv=max_col-1; col_ptr+) coutElement(row_ptr+1,col_ptr+1matrixrow_ptrcol_ptr;locate(matrix,row,col);coutThe matrix is: n;for(row_ptr=0;row_ptr=max_row-1; row_ptr+)for(col_ptr=0;col_ptr=max_col-1; col_ptr+) coutmatrixrow_ptrcol_ptrt;coutendl;coutThe maximum element is located on(row+1,col+1).n; return0;47./找数#includemain
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 活动策划


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!