您好,欢迎访问三七文档
第1题:编写两个函数,函数功能分别是:求两个整数的最大公约数和最小公倍数,要求输入输出均在主函数中完成。样例输入:1525样例输出:575程序如下#includeiostream.hintmain(){intm,n;intgys(int,int);//声明函数intgbs(int,int);//声明函数cinmn;coutgys(m,n)gbs(m,n);}intgys(inta,intb){intr;r=a%b;while(r!=0){a=b;b=r;r=a%b;}returnb;}intgbs(inta,intb){intgys(int,int);//声明函数return(a*b)/gys(a,b);}第2题:编写函数digit(num,k),函数功能是:求整数num从右边开始的第k位数字的值,如果num位数不足k位则返回0。要求输入输出均在主函数中完成。样例输入:46473样例输出:6样例输入:235237样例输出:0程序如下:方法一:#includeiostream.hintmain(){intnum,k;intdigit(int,int);//声明函数cinnumk;coutdigit(num,k);}intdigit(intnum,intk){inti,f;i=1;f=0;//f=0,num不足k位,否则f=1while(num!=0){if(i==k){f=1;break;}else{num=num/10;i++;}}if(f==1)returnnum%10;elsereturn0;}程序如下:方法二:#includeiostream.hintmain(){intnum,k;intdigit(int,int);//声明函数cinnumk;coutdigit(num,k);}intdigit(intnum,intk){inti,n,a[100];/*将num中的各位数字从个位开始依次取出置于数组元素a[0]至a[i-1]中循环结束后,i变量中存储了num的数据位数*/i=0;while(num!=0){a[i]=num%10;num=num/10;i++;}if(i=k)returna[k-1];elsereturn0;}第3题:哥德巴赫猜想指出:任何一个不小于6的偶数都可以表示为两个素数之和。例如:6=3+38=3+5…50=3+47。从键盘输入n(n=6且为偶数),输出对应的表达式,要求编写函数判断一个数是否为素数。样例输入:8样例输出:8=3+5程序如下:#includeiostream.hintmain(){intn,n1,n2,hs=0;intprime(int);cinn;for(n1=3;n1=n/2;n1+=2){if(prime(n1)==1){n2=n-n1;if(prime(n2)==1){coutn=n1+n2endl;break;}}}}//判断n是否是素数,若是,返回1,否返回0intprime(intn){intgs=0,i;for(i=1;i=n;i++)if(n%i==0)gs++;if(gs==2)return1;elsereturn0;}第4题:编写函数,将字符串中的大写字母变成对应的小写字母,小写字母变成对应的大写字母,其它字符不变。在主函数中调用该函数,完成任意字符串的转换,并输出结果。输入字符串(允许包含空格),输出处理后的结果。样例输入:HowAreYou?样例输出:hOWaREyOU?程序如下:#includestdio.hintmain(){chara[30];voidzh(char[]);//函数声明gets(a);//字串允许包含空格,所以用gets输入zh(a);puts(a);}voidzh(chart[]){inti;for(i=0;t[i]!=0;i++)if(t[i]='a'&&t[i]='z')t[i]-=32;elseif(t[i]='A'&&t[i]='Z')t[i]+=32;}第5题:编写函数,求一个字符串的长度。在主函数中调用该函数,输出结果。输入字符串(允许包含空格),输出字符串的长度。样例输入:HowAreYou?样例输出:12程序如下:#includestdio.hintmain(){chara[50];intcd(char[]);//函数声明gets(a);//字串允许包含空格,所以用gets输入printf(%d,cd(a));}intcd(chart[]){inti;for(i=0;t[i]!=0;i++);returni;}第6题:编写函数,求两个整数的最大公约数和最小公倍数。在主函数中调用该函数,输出分2行,第一行为最大公倍数,第二行为最小公倍数。样例输入:1525样例输出:575程序如下:(用指针)#includeiostream.hintmain(){intm,n,gy,gb;voidgygb(int,int,int*,int*);//声明函数cinmn;gygb(m,n,&gy,&gb);coutgyendlgb;}voidgygb(inta,intb,int*pgy,int*pgb){intr,a1,b1;a1=a;b1=b;r=a%b;while(r!=0){a=b;b=r;r=a%b;}*pgy=b;*pgb=(a1*b1)/b;}程序如下:(用全局变量)#includeiostream.hintgy,gb;intmain(){intm,n;voidgygb(int,int);//声明函数cinmn;gygb(m,n);coutgyendlgb;}voidgygb(inta,intb){intr,a1,b1;a1=a;b1=b;r=a%b;while(r!=0){a=b;b=r;r=a%b;}gy=b;gb=(a1*b1)/b;}第7题:[95]编写函数,函数功能是:计算n的阶乘,要求输入输出均在主函数中完成。样例输入:10样例输出:3.6288e+06程序如下:#includeiostream.hintmain(){intn;floatjc(int);//声明函数cinn;coutjc(n);}//函数定义成实型floatjc(intn){inti;floatt;//存放阶乘的变量定义成实型t=1;for(i=1;i=n;i++)t*=i;returnt;}第8题:[99]有一分段函数如下,编写函数进行计算,在主函数中输入x值,输出y值。样例输入:-1.5样例输出:0.00250501样例输入:5.6样例输出:31.8957样例输入:12.5样例输出:4.06202程序如下:#includeiostream.h#includemath.hintmain(){floatx,y;floatjs(float);//声明函数cinx;y=js(x);couty;}floatjs(floatx){floaty;if(x=0)y=sin(x)+1;elseif(x10)y=x*x+3/x;elsey=sqrt(x+4);returny;}第9题:编写函数,函数功能是:统计整数n的各位上出现数字1、2、3的次数。要求输入输出均在主函数中完成。样例输入:123114350样例输出:312程序如下:#includeiostream.hintmain(){intcount[3]={0},n,i;voidtj(int[],int);//声明函数cinn;tj(count,n);for(i=0;i3;i++)coutcount[i];}voidtj(intjs[],intx){while(x!=0){switch(x%10){case1:js[0]++;break;case2:js[1]++;break;case3:js[2]++;break;}x=x/10;}}第10题:编写函数fun(num),其中num是一个n位数,函数功能是:求整数num的后n-1位,如果num是一位数则返回0,要求输入输出均在主函数中完成。样例输入:9样例输出:0样例输入:6734样例输出:734样例输入:1000样例输出:0样例输入:10101样例输出:101程序如下:#includeiostream.h#includemath.hintfun(intw){intn,k;n=0;k=w;if(w10)return0;//下面循环测试w的位数。循环结束,n中为w的位数-1while(w10){n++;w=w/10;}//pow的函数值为实型,所以此处须强制转换成整型returnk%(int)pow(10,n);}intmain(){intnum;cinnum;coutfun(num);}第11题:编写函数,函数功能是:将两个两位数的正整数a、b合并成一个整数c,合并规则是将a的十位和个位分别放在c的千位和个位,将b的十位和个位分别放在c的百位和十位。a、b由键盘输入,输入输出均在主函数中完成。样例输入:4512样例输出:4125程序如下:#includeiostream.hinthb(inta,intb){intc,a_s,a_g,b_s,b_g;a_s=a/10;a_g=a%10;b_s=b/10;b_g=b%10;c=a_s*1000+b_s*100+b_g*10+a_g;returnc;}intmain(){inta,b,c;cinab;c=hb(a,b);coutc;}第12题:求数列的前n项和要求使用函数,函数功能是:计算数列的每一项,n由键盘输入。累加过程和输入输出均在主函数中完成。样例输入:10样例输出:0.382179程序如下:#includeiostream.h#includemath.hfloatjs(inti){floatc;c=1.0/(i*(i+1))*pow(-1,i+1);//注意表达式类型returnc;}intmain(){floatjf(int);intn,i;floats=0;cinn;for(i=1;i=n;i++)s+=js(i);couts;}第13题:求数列其中分母为n以内(包括n)的素数。要求使用函数,函数功能是:计算数列的每一项,n由键盘输入。累加过程和输入输出均在主函数中完成。样例输入:50样例输出:1.66165程序如下:#includeiostream.hfloatpd(intn){intp=1,i;for(i=2;i=n/2;i++)if(n%i==0){p=0;break;}if(p==1)return1.0/n;elsereturn0;}intmain(){intn,i;floatpd(int),s;cinn;s=0;for(i=2;i=n;i++)s+=pd(i);couts;}第14题:编写程序求给定整数n的“亲密对数”。“亲密对数”是指:若整数a的因子(包括1但不包括自身,下同)之和为b,而整数b的因子之和为a,则称a和b为一对“亲密对数”。要求使用函数,函数功能是:计算某一个数的因子(包括1但不包括自身)之和。n由键盘输入,如果存在“亲密对数”则输出该数,否则输出NO。要求输入输出均在主函数中完成。样例输入:220样例输出:284样例输入:8样例输出:NO程序如下:#includeiostream.hintyzh(intn){ints=0,i;for(i=1;i=n/2;i++)if(n%i==0)s+=i;returns;}intmain(){intn1,n2;intyzh(int);cinn1;n2=yzh(n1);if(n1==yzh(n2))coutn2;elsecoutNO;}第15题:编写函数,功能是交换数组中的最大数和最小数的位置,并计算所有数之和。例如数组a有5个
本文标题:C++习题(函数)
链接地址:https://www.777doc.com/doc-2901585 .html