1、C+习题函数第1题: 编写两个函数,函数功能分别是:求两个整数的最大公约数和最小公倍数,要求输入输出均在主函数中完成。 样例输入:15 25样例输出:5 75 程序如下#includeint main() int m,n; int gys(int,int); /声明函数 int gbs(int,int); /声明函数 cinmn; coutgys(m,n) gbs(m,n);int gys(int a,int b) int r; r=a%b; while(r!=0) a=b;b=r;r=a%b; return b;int gbs(int a,int b) int gys(int,int); /
2、声明函数 return (a*b)/gys(a,b);第2题: 编写函数digit(num, k),函数功能是:求整数num从右边开始的第k位数字的值,如果num位数不足k位则返回0。要求输入输出均在主函数中完成。 样例输入:4647 3 样例输出:6 样例输入:23523 7 样例输出:0 程序如下:方法一:#includeint main() int num,k; int digit(int,int); /声明函数 cinnumk; coutdigit(num,k);int digit(int num,int k) int i,f; i=1; f=0;/f=0,num不足k位,否则f=1
3、while(num!=0) if(i=k) f=1; break; else num=num/10; i+; if(f=1) return num%10; else return 0;程序如下:方法二:#includeint main() int num,k; int digit(int,int); /声明函数 cinnumk; cout=k) return ak-1; else return 0;第3题: 哥德巴赫猜想指出:任何一个不小于6的偶数都可以表示为两个素数之和。例如:6=3+3 8=3+5 50=3+47。从键盘输入n(n=6且为偶数),输出对应的表达式,要求编写函数判断一个数是否
4、为素数。 样例输入:8 样例输出:8=3+5 程序如下:#include int main() int n,n1,n2,hs=0; int prime(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,否返回0int prime(int n) int gs=0,i; for(i=1;i=n;i+) if(n%i=0) gs+; if(gs=2) return 1; else return 0;第4题: 编写函数,
5、将字符串中的大写字母变成对应的小写字母,小写字母变成对应的大写字母,其它字符不变。在主函数中调用该函数,完成任意字符串的转换,并输出结果。输入字符串(允许包含空格),输出处理后的结果。 样例输入:How Are You?样例输出:hOW aRE yOU?程序如下:#include int main() char a30; void zh(char ); /函数声明 gets(a); /字串允许包含空格,所以用gets输入 zh(a); puts(a);void zh(char t) int i; for(i=0;ti!=0;i+) if(ti=a&ti=A&ti=Z) ti+=32;第5题:
6、编写函数,求一个字符串的长度。在主函数中调用该函数,输出结果。输入字符串(允许包含空格),输出字符串的长度。 样例输入:How Are You? 样例输出:12程序如下:#include int main() char a50; int cd(char ); /函数声明 gets(a); /字串允许包含空格,所以用gets输入 printf(%d,cd(a);int cd(char t) int i; for(i=0;ti!=0;i+) ; return i;第6题: 编写函数,求两个整数的最大公约数和最小公倍数。在主函数中调用该函数,输出分2行,第一行为最大公倍数,第二行为最小公倍数。 样例
7、输入:15 25样例输出: 5 75 程序如下:(用指针)#includeint main() int m,n,gy,gb; void gygb(int,int,int *,int *); /声明函数 cinmn; gygb(m,n,&gy,&gb); coutgyendlgb;void gygb(int a,int b,int *pgy,int *pgb) int r,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;程序如下:(用全局变量)#includeint gy,gb;int main
8、() int m,n; void gygb(int,int); /声明函数 cinmn; gygb(m,n); coutgyendlgb;void gygb(int a,int b) int r,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程序如下:#includeint main() int n; float jc(int); /声明函数 cinn; coutjc(n);/
9、函数定义成实型float jc(int n) int i; float t;/存放阶乘的变量定义成实型 t=1; for(i=1;i=n;i+) t*=i; return t;第8题: 99有一分段函数如下,编写函数进行计算,在主函数中输入x值,输出y值。 样例输入:-1.5 样例输出:0.00250501 样例输入:5.6 样例输出:31.8957 样例输入:12.5 样例输出:4.06202程序如下:#include#include int main() float x,y; float js(float); /声明函数 cinx; y=js(x); couty;float js(floa
10、t x) float y; if(x=0) y=sin(x)+1; else if(x10) y=x*x+3/x; else y=sqrt(x+4); return y;第9题: 编写函数,函数功能是:统计整数n的各位上出现数字1、2、3的次数。要求输入输出均在主函数中完成。 样例输入:123114350样例输出:3 1 2 程序如下:#includeint main() int count3=0,n,i; void tj(int ,int); /声明函数 cinn; tj(count,n); for(i=0;i3;i+) coutcounti ;void tj(int js,int x) w
11、hile(x!=0) switch(x%10) case 1:js0+;break; case 2:js1+;break; case 3:js2+;break; x=x/10; 第10题: 编写函数fun(num),其中num是一个n位数,函数功能是:求整数num的后n-1位,如果num是一位数则返回0,要求输入输出均在主函数中完成。 样例输入:9 样例输出:0 样例输入:6734 样例输出:734 样例输入:1000 样例输出:0 样例输入:10101 样例输出:101 程序如下:#include #include int fun(int w) int n,k; n=0;k=w; if(w1
12、0) n+;w=w/10; /pow的函数值为实型,所以此处须强制转换成整型return k%(int)pow(10,n); int main() int num; cinnum; coutfun(num);第11题: 编写函数,函数功能是:将两个两位数的正整数a、b合并成一个整数c,合并规则是将a的十位和个位分别放在c的千位和个位,将b的十位和个位分别放在c的百位和十位。a、b由键盘输入,输入输出均在主函数中完成。 样例输入:45 12样例输出:4125 程序如下:#include int hb(int a,int b) int c,a_s,a_g,b_s,b_g; a_s=a/10;a_g
13、=a%10; b_s=b/10;b_g=b%10; c=a_s*1000+b_s*100+b_g*10+a_g; return c;int main() int a,b,c; cinab; c=hb(a,b); coutc;第12题: 求数列的前n项和要求使用函数,函数功能是:计算数列的每一项,n由键盘输入。累加过程和输入输出均在主函数中完成。样例输入:10 样例输出:0.382179程序如下:#include #include float js(int i) float c; c=1.0/(i*(i+1)*pow(-1,i+1); /注意表达式类型 return c;int main() f
14、loat jf(int); int n,i; float s=0; cinn; for(i=1;i=n;i+) s+=js(i); couts;第13题: 求数列 其中分母为n以内(包括n)的素数。要求使用函数,函数功能是:计算数列的每一项,n由键盘输入。累加过程和输入输出均在主函数中完成。 样例输入:50 样例输出:1.66165 程序如下:#include float pd(int n) int p=1,i; for(i=2;in; s=0; for(i=2;i=n;i+) s+=pd(i); couts;第14题: 编写程序求给定整数n的“亲密对数”。“亲密对数”是指:若整数a的因子(包
15、括1但不包括自身,下同)之和为b,而整数b的因子之和为a,则称a和b为一对“亲密对数”。要求使用函数,函数功能是:计算某一个数的因子(包括1但不包括自身)之和。n由键盘输入,如果存在“亲密对数”则输出该数,否则输出NO。要求输入输出均在主函数中完成。样例输入:220 样例输出:284 样例输入:8 样例输出:NO 程序如下:#include int yzh(int n) int s=0,i; for(i=1;in1; n2=yzh(n1); if(n1=yzh(n2) coutn2; else coutNO;第15题: 编写函数,功能是交换数组中的最大数和最小数的位置,并计算所有数之和。例如数
16、组a有5个元素3、4、1、5、2,将最大数5和最小数1的位置交换后得到3、4、5、1、2,总和为15。程序中用到的主函数为: 程序如下:#include int fun(int a,int n) int max,min,s,i,t; max=min=s=0; for(i=0;in;i+) s+=ai; if(amaxai) min=i; t=amax;amax=amin;amin=t; return s;int main() int a50,n,i,sum; cinn; for(i=0;iai; sum=fun(a,n); for(i=0;in;i+) coutai ; coutendlsumendl; return 0;
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1