C++编程之试题分类.doc_第1页
C++编程之试题分类.doc_第2页
C++编程之试题分类.doc_第3页
C++编程之试题分类.doc_第4页
C++编程之试题分类.doc_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

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

文档简介

二、简单应用(40分)1.函数调用1.1拆分三位数28.22简单应用题请编写一个函数sortnum(int num),参数num是一个三位的整数,该函数将num的百位、十位和个位的数字进行重排,并返回由上述的三个数字组成的最大的三位数。注意:部分源程序已存在文件test28_2.cpp中。如输入456后,输出结果如下:654请勿修改主函数main和其他函数中的任何内容,仅在函数sortnum 的花括号中填写若干语句。文件test28_2.cpp的内容如下:#includeint sortnum(int num) void main()int num;int result=0;coutnum;coutsortnum(num)endl;【答案】int number3,i,j,temp;for(i=0;i3;i+)numberi=num%10;num=num/10;for (i=0;i2;i+)for (j=i+1;j3;j+)if (numberj=numberi)temp=numberj;numberj=numberi;numberi=temp;num=number2*100+number1*10+number0;return num;1.2月份转换40.22简单应用题请编写一个函数 printdate(int year,int month,int day),该函数实现将输入的3个数字转换成英语数字纪年输出的功能,如输入March 9,1978,则输出1978 3 9。注意:使用switch结构实现该函数的基本功能并应该能够判断错误的输入。部分源程序已存在文件test40_2.cpp中。请勿修改主函数main和其他函数中的任何内容,仅在函数printdate的花括号中填写若干语句。源程序文件test40_2.cpp清单如下:#includevoid printdate(int year,int month,int day)void main()printdate(1978,3,9);【答案】void printdate(int year,int month,int day)if(year0|month12|day31)coutERROR;return;switch(month)case 1:coutJanuary;break;case 2:coutFebruary;break;case 3:coutMarch;break;case 4:coutApril;break;case 5:coutMay;break;case 6:coutJune;break;case 7:coutJuly;break;case 8:coutAuguest;break;case 9:coutSeptember;break;case 10:coutOctober;break;case 11:coutNovember;break;case 12:coutDecember;break;cout day,yearendl;1.3平方根29.22. 编程题编写函数fun(),它的功能是求n以内(不包括n)同时能被3与7整除的所有自然数之和的平方根s,并做为函数值返回。例如:n为1000时,函数值应为s=153.909064。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:#include #include #include double fun(int n) main()clrscr();printf(s=%fn, fun(1000);【答案】double fun(int n)double s=0.0;int i;for(i=0; in;i+) /*从0n中找到既能被3整除同时又能被7整除的数,并将这些数求和*/ if(i%3=0&i%7=0) s=s+i;s=sqrt(s); /*对s求平方根*/return s;1.4求幂一25.22简单应用题请编写两个函数int sum_of_powers(int k, int n), powers(int m, int n),求1到6的k次方的和,sum_of_powers中参数k和n分别表示k次方和所求数列中最大的一个自然数,最后返回所求值,powers中参数m和n分别表示m为底数n为指数,最后返回所求值。要求使用for循环和函数嵌套(int sum_of_powers中调用powers)实现算法。输出结果如下:sum of 4 powers of intergers from 1 to 6=2275注意:部分源程序已存在文件test25_2.cpp中。请勿修改主函数main和其他函数中的任何内容,仅在函数sum_of_powers和powers的花括号中填写若干语句。文件test25_2.cpp的内容如下:#includeconst int k(4);const int n(6);int sum_of_powers(int k, int n), powers(int m, int n);void main()coutsum of k powers of intergers from 1 to n=;coutsum_of_powers(k,n)endl;int sum_of_powers(int k, int n)int powers(int m, int n)【答案】(1)int sum_of_powers(int k, int n)int sum(0);for(int i(1); i=n; i+)sum += powers(i,k);return sum;(2)int powers(int m, int n)int i,product(1);for(i=1; i=n; i+)product *= m;return product;1.5求幂二30.22简单应用题请编写一个函数fun(int x,int n),该函数返回x的n次幂的值,其中x和n都是非负整数。x的n次幂的计算方法是1与x相乘n次,如x的20次幂的计算为1与x相乘20次。注意:部分源程序已存在文件test30_2.cpp中。请勿修改主函数main和其他函数中的任何内容,仅在函数fun的花括号中填写若干语句。如输入3和4,输出结果如下:3 481文件test30_2.cpp清单如下:#includedouble fun(int x,int n)void main()int x,n;cinxn;coutfun(x,n)endl;【答案】 if(x=0) return 0;if(n=0) return 1;int y=1;for(int i=0;in;i+) y*=x;return y;30.22简单应用题请编写一个函数fun(int x,int n),该函数返回x的n次幂的值,其中x和n都是非负整数。x的n次幂的计算方法是1与x相乘n次,如x的20次幂的计算为1与x相乘20次。注意:部分源程序已存在文件test30_2.cpp中。请勿修改主函数main和其他函数中的任何内容,仅在函数fun的花括号中填写若干语句。如输入3和4,输出结果如下:3 481文件test30_2.cpp清单如下:#includedouble fun(int x,int n)void main()int x,n;cinxn;coutfun(x,n)endl;【答案】 if(x=0) return 0;if(n=0) return 1;int y=1;for(int i=0;in;i+) y*=x;return y;1.6计算因子33.22简单应用题请编写一个函数fun(),它的功能是计算并输出给定整数n的所有因子(不包括1与自身)之和(规定n的值不大于1000)。例如:主函数从键盘给输入n的值为856,则输出为sum=763。注意:部分源程序已存在文件test33_2.cpp中。请勿修改主函数main和其他函数中的任何内容,仅在函数fun的花括号中填写若干语句。文件test33_2.cpp清单如下:#include#includeint fun(int n)void main() int n, sum;coutInput n:n;sum=fun(n);coutsum=nsumendl;【答案】int fun(int n)int s=0,i;for(i=2;i=n-1;i+) if(n%i=0) s+=i; return s; 1.7累加一37.22简单应用题请编写函数fun(),其功能是计算并输出下列多项式值Sn=1+1/1!+1/2!+1/3!+1/4!+ +1/n!例如:从键盘输入15,则输出为s=2.718282。注意:部分源程序以存在文件test37_2.cpp中。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。文件test37_2.cpp的内容如下:#include#includedouble fun(int n) void main()int n; double s;coutInput n:n;s=fun(n);couts=sendl;1.8累加二38.22简单应用题请编写函数fun(),其功能是计算并输出当x0.97时下列多项式的值,直到Sn-Sn-10.000001为止。Sn=1+0.5x+0.5(0.5-1) x2/2! +0.5(0.5-1)(0.5-2) x3/3! + 0.5(0.5-1)(0.5-2)(0.5-n+1) xn/ n!例如:主函数从键盘给x输入0.21后,则输出为s=1.100000。注意:部分源程序以存在文件test38_2.cpp中。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。文件test38_2.cpp的内容如下:#include#include#includedouble fun(double x) void main()double x, s;coutInput x:x;s=fun(x);couts=s=1e-6); return sum;1.9冒泡排序23.22简单应用题请编写一个函数void bubble(double data, int length),其中data是一维数组,存放比较的数据,length是数组中存放元素的个数,用冒泡法将数据(个数可变)排序后由小到大输出。冒泡法是常用的排序算法,这种算法执行效率不高,但比较简单,就是将相邻的两个数据作比较,把较小的数据交换到前面。纵向看来,交换过程中较小的数据就好像水中的气泡不断浮起。要求使用for循环实现算法。注意:部分源程序已存在文件test23_2.cpp中。请勿修改主函数main和其他函数中的任何内容,仅在函数bubble的花括号中填写若干语句。文件test23_2.cpp的内容如下:#include void bubble(double data, int length)void main()int n;cout n;double* ddata = new doublen;for(int i = 0; i n; i+)cout No. i+1 ddatai;bubble(ddata, n); cout 排序后输出数据:endl;for(i = 0; i n; i+)cout No. i+1 : ;cout ddatai endl;【答案】void bubble(double data, int length)int segment;int loop;double temp;for(segment = 0; segment = segment; loop-)if(dataloop + 1 dataloop)temp = dataloop;dataloop = dataloop + 1;dataloop + 1 = temp;1.10判别素数36.22简单应用题请编写一个函数 prim(int num),该函数实现判别参数num是否为素数,在主函数中利用prim()函数验证哥德巴猜想-任何比2大的偶数都可表示为两个素数之和基本功能,根据main函数的调用情况给出正确的返回值。注意:部分源程序已存在文件test36_2.cpp中。请勿修改主函数main和其他函数中的任何内容,仅在函数prim的花括号中填写若干语句。文件test36_1.cpp的内容如下:#include const LEN=100;int prim(int num)void main()int a=7;int cnt=0;couta is 7:n;int *s;s=new intLEN;for(int i=2;ia;i+)if(!prim(i)scnt=i;cnt+;for (i=0;icnt;i+)for (int j=i+1;jcnt;j+)if(si+sj=a)coutsitsjtendl;【答案】int prim(int num)int half,flag;flag =0;half=num/2;for (int i=2;i=half;i+)if(num%i=0)flag=1;elsecontinue;if (flag=1)return 1;elsereturn 0;1.11制数转换32.22简单应用题请编写一个函数fun(char *num),该函数返回与传入的二进制数相应的十进制数,参数num指向存放8位二进制数的字符数组。二进制数转换为十进制数的方法是将二进制数的每一位乘以该位的权然后相加,如二进制数10010100=1*2+0*2+0*2+1*2+0*2+1*2+0*2+2*=148。注意:部分源程序已存在文件test32_2.cpp中。请勿修改主函数main和其他函数中的任何内容,仅在函数fun的花括号中填写若干语句。文件test32_2.cpp的内容如下:#includeint fun(char *num)void main()char num8,ch;coutEnter an 8 bit binary number;for(int i=0;ich;numi=ch;coutfun(num)=0;i-)if (numi=1)middle=1;for(int k=1;k=(7-i);k+)middle=middle*2;result=result+middle;return result;1.12最小公倍13.22简单应用题请编写一个函数int fun(int nFirst,int nSecond),求两个数的最小公倍数并返回这个值。注意:部分源程序已存在文件test13_2.cpp中。如输入7和8时,结果是56。请勿修改主函数main和其他函数中的任何内容,仅在函数fun的花括号中填写若干语句。文件test13_2的内容如下:#includeint fun(int nFirst,int nSecond);void main()int nFirst, nSecond;coutnFirst;coutnSecond;cout最小公倍数:fun(nFirst,nSecond)nSecond)nMax = nFirst;nMin = nSecond;elsenMax = nSecond;nMin = nFirst;int nMod = nMax % nMin;while(nMod)nMax = nMin;nMin = nMod;nMod = nMax % nMin;int nMultiple = nFirst * nSecond / nMin;return nMultiple;2.字符串操作2.1字符串输出35.22简单应用题请编写一个函数display(),该函数要求用户先输入一字符串,然后在屏幕上再输出该字符串(假设该字符串长度小于100)。注意:部分源程序已存在文件test35_2.cpp中。请勿修改主函数main和其他函数中的任何内容,仅在函数display()的花括号中填写若干语句。如输入abc,输出结果如下:please input string:abcabcPress any key to continue文件test35_2.cpp的内容如下:#include #include void display()void main()coutplease input string:endl;display();【答案】void display()char str100,ch;int i=0;while (ch=getche()!=r)stri=ch;i+;stri=0;coutendlstrendl;2.2字符串翻转16.22简单应用题请编写一个函数void fun(char ss),该函数将字符串ss翻转,如ss为123abc则翻转后为cba321。注意:用数组方式及for循环来实现该函数。注意:部分源程序已存在文件test16_2.cpp中。请勿修改主函数main和其他函数中的任何内容,仅在函数fun的花括号中填写若干语句。文件test16_2.cpp的内容如下:#include#includevoid fun(char ss);void main()char s80; couts;fun(s);cout逆序后的字符串:sendl;void fun(char ss)【答案】void fun(char ss)int n=strlen(ss);for(int i=0;i(n/2); i+)char c=ssi;ssi=ssn-1-i;ssn-1-i=c;2.3字符串大小写转换21.22简单应用题请编写一个函数char *change(char instr),将输入字符串中的所有小写字母转换为大写字母输出。要求使用for循环实现。如输入jinfeiteng,则输出结果是JINFEITENG。注意:部分源程序已存在文件test21_2.cpp中。请勿修改主函数main和其他函数中的任何内容,仅在函数change的花括号中填写若干语句。文件test21_2.cpp的内容如下:char *change(char instr);#include iostream.hvoid main()char instr50;char *outstr;cout Input a string: instr;outstr=change(instr);cout Over graded string: endl;cout outstr = a & instri = z)outstri = instri + delta;elseoutstri = instri;outstri = 0;return outstr;2.4字符串连接4.22简单应用题常用字符串函数strcat(s1,s2)可将字符串s2添加到字符串s1的末端,但其使用必须保证字符串s1足够大,以便保存它自己的内容和字符串s2中的内容。请编写一个函数char *append(char *s1,char *s2),其可将字符串s2添加到字符串s1的末端,而且不受s1空间大小的限制。请利用常用字符串函数实现。常用字符串函数说明:strcpy(to,form):将form字符串复制到to字符串;strcat(s1,s2):将字符串s2添加到字符串s1的末端,但必须保证字符串s1足够大;strlen(s):返回字符串s的长度;注意:部分源程序已存在文件test4_2.cpp中。请勿修改主函数main和其他函数中的任何内容,仅在函数append的花括号中填写若干语句。输出结果如下: this is a string.文件test4_2.cpp的内容如下:#include#includechar *append(char *s1,char *s2)void main()char *s,*s1,*s2;s1=this is ;s2=a string.;s=append(s1,s2);coutsendl;【答案】char *append(char *s1,char *s2)char *tmp;int length;length=strlen(s1)+strlen(s2);tmp=new charlength+1;strcpy(tmp,s1);strcat(tmp,s2);return tmp;2.5字符串中的数字9.22简单应用题请编写一个函数int CalcDigital(char *str),该函数可返回字符串str中数字字符(即0-9这10个数字)的个数,如字符串olympic2008中数字字符的个数为4。请用if条件判断语句与for循环语句来实现该函数。注意:部分源程序已存在文件test9_2.cpp中。请勿修改主函数main和其他函数中的任何内容,仅在函数find的花括号中填写若干语句。文件test9_2.cpp的内容如下:#include#includeint CalcDigital(char *str);void main()char *str;str=new char255;coutstr;int num=CalcDigital(str);coutstr:numendl;int CalcDigital(char *str)【答案】int CalcDigital(char *str)if(str=NULL) return 0; int num_of_digital=0;int len=strlen(str); for(int i=0;ilen;i+)if(stri=0)num_of_digital+;return num_of_digital;2.6字符串中最大的字符15.22简单应用题请编写一个函数char MaxCharacter(char * str),该函数返回参数str所指向的字符串中具有最大ASCII码的那个字符(如字符串world中字符w具有最大的ASCII码)。当str所指向的字符串为空时,则返回空字符0x0或0。输出结果如下:Good Morning!Max char:r注意:部分源程序已存在文件test15_2.cpp中。请勿修改主函数main和其他函数中的任何内容,仅在函数MaxCharacter的花括号中填写若干语句。文件test15_2.cpp的内容如下:#include#includechar MaxCharacter(char * str);void main()char str100;strcpy(str,Good Morning!);char maxc=MaxCharacter(str);coutstrendl;coutMax char:maxcendl;char MaxCharacter (char *str)【答案】char MaxCharacter (char *str)if(str=NULL)return 0x0;char maxChar=0x0;int len=strlen(str);for(int i=0;imaxChar)maxChar=stri;return maxChar;2.7字符串删除一18.22简单应用题编写函数fun(),该函数的功能是从字符串中删除指定的字符,同一字母的大、小写按不同字符处理。例如:程序执行时输入字符串为turbo c and borland c+,从键盘上输入字符n,则输出后变为turbo c ad borlad c+。如果输入的字符在字符串中不存在,则字符串照原样输出。注意:部分源程序已存在文件test18_2.cpp中。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。文件test18_2.cpp的内容如下:#include#include#includevoid fun(char s , int c) void main()static char str =turbo c and borland c+;char ch;cout原始字符串:nstrendl;coutch;fun(str,ch);coutstr=strendl;【答案】void fun(char s , int c) int i=0;char *p;p=s; while(*p) if(*p!=c) si=*p; i+; p+; si=0; 2.8字符串删除二27.22简单应用题请编写函数fun(),其功能是将s所指字符串中除了下标为奇数、同时ASCII值也为奇数的字符之外,其余的所有字符都删除。字符串中剩余的字符所形成的一个新的字符串放在t所指的数组中。例如:s所指字符串中的内容为ABCDEFG12345,其中字符A的ASCII码值虽为奇数,但元素所在的下标为偶数,因此必需删除;字符1的ASCII码值为奇数,所在数组中的下标也为奇数,不删除,最后t所指的数组中的内容应是135。请勿修改主函数main和其他函数中的任何内容,仅在函数su的花括号中填写若干语句。文件test27_2.cpp的内容如下:#include #include #include #include void fun(char *s,char t ) void main()char s100,t100;coutPlease enter string S: endl; gets(s);fun(s, t);puts(t);【答案】void fun(char *s,char t ) int i,j=0,n;n=strlen(s); for(i=0;in;i+) if(i%2!=0&si%2!=0) tj=si;j+;tj=0; 2.9字符串查找20.22简单应用题请编写一个函数int pattern_index(char substr,char str),该函数执行含通配符?的字符串的查找时,该通配符可以与任一个字符匹配成功。当子串substr在str中匹配查找成功时,返回子串substr在str中的位置,否则返回值为0。要求使用for循环实现。输出结果如下:子串起始位置:5注意:部分源程序已存在文件test20_2.cpp中。请勿修改主函数main和其他函数中的任何内容,仅在函数pattern_index的花括号中填写若干语句。文件test20_2.cpp的内容如下:#includeint pattern_index(char substr,char str)void main()char *substring,*string;int same;substring=?gram;string=this program return index of substring;same=pattern_index(substring,string);if(same)cout子串起始位置:sameendl;elsecout匹配不成功endl;【答案】int pattern_index(char substr,char str)int i,j,k; for(i=0;stri;i+)for(j=i,k=0;(strj=substrk)|(substrk=?);j+,k+)if(!substrk+1)return(i);return(0);2.10字符串排序22.22简单应用题请编写函数fun(),对长度为7个字符的字符串,除首、尾字符外,将其余5个字符按ASCII值码降序排列。例如:原来的字符串为CEAedca,则排序后输出为CedcEAa。注意:部分源程序已存在文件test22_2.cpp中。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。文件test22_2.cpp的内容如下:#include #include #include #include void int fun(char *s, int num) void main()char s10;printf(输入7个字符的字符串:);gets(s);fun(s,7);couts;【答案】int fun(char *s, int num)char t; int i, j; for(i=1;inum-2;i+) for(j=i+1;jnum-1;j+) if(sisj) t=si; si=sj; sj=t; 2.11回文数26.22简单应用题请编写函数fun(),该函数的功能是判断字符串是否为回文,若是则函数返回1,主函数中输出YES;否则返回0,主函数中输出NO。回文是指顺读和倒读都一样的字符串。例如:字符串LEVEL是回文,而字符串123312就不是回文。注意:部分源程序已存在文件test26_2.cpp中。请勿修改主函数main和其他函数中的任何内容,仅在函数fun的花括号中填写若干语句。文件test26_2.cpp的内容如下:#include#include#define N 80int fun(char *str)void main()char sN;coutEnter a string : endl; gets(s);coutnn; puts(s);if(fun(s) coutYESn;else coutNOn;【答案】int fun(char *str)int i,n=0,fg=1; char *p=str; while(*p) n+; p+; for(i=0;in/2;i+) if(stri=strn-1-i) ; else fg=0; break; return fg; 3.数组操作3.1数组中最大数42.22简单应用题请编写一个函数 maxofarray(atype *p,int count),该函数从一个数组中找出其中的最大元素,并且数组中可以存放多种数据类型的元素。注意:部分源程序已存在文件test42_2.cpp中。请勿修改主函数main和其他函数中的任何内容,仅在函数maxofarray的花括号中填写若干语句。文件test42_2.cpp清单如下:#include#include#includetemplatevoid maxofarray(atype* p,int count)void main()int len=5;char *p1;coutthe char type array and its length is 5:n;coutthe array element is a b c d en;p1=new charlen;for (int i=0;ilen;i+)p1i=a+i;maxofarray(p1,len);【答案】void maxofarray(atype* p,int count)for (int j=0;jcount-1;j+)for (int k=0;kpk+1)atype temp;temp=pk;pk=pk+1;pk+1=temp;coutnthe max element of this array is: pcount-1endl; 3.2计算平均数12.22简单应用题请编写一个函数int Count(double a, int n),统计出具有n个元素的一维数组中大于等于所有元素平均值的元素个数并返回这个值。注意:请使用for循环实现该函数。注意:部分源程序已存在文件test12_2.cpp中。请勿修改主函数main和其他函数中的任何内容,仅在函数Count的花括号中填写若干语句。文件test12_2的内容如下:#includeint

温馨提示

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

评论

0/150

提交评论