C++习题函数.docx
- 文档编号:3583198
- 上传时间:2022-11-24
- 格式:DOCX
- 页数:16
- 大小:37.49KB
C++习题函数.docx
《C++习题函数.docx》由会员分享,可在线阅读,更多相关《C++习题函数.docx(16页珍藏版)》请在冰豆网上搜索。
C++习题函数
第1题:
编写两个函数,函数功能分别是:
求两个整数的最大公约数和最小公倍数,要求输入输出均在主函数中完成。
样例输入:
1525
样例输出:
575
程序如下
#include
intmain()
{
intm,n;
intgys(int,int);//声明函数
intgbs(int,int);//声明函数
cin>>m>>n;
cout< } 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 程序如下: 方法一: #include intmain() { intnum,k; intdigit(int,int);//声明函数 cin>>num>>k; cout< } intdigit(intnum,intk) { inti,f; i=1; f=0;//f=0,num不足k位,否则f=1 while(num! =0) { if(i==k) { f=1; break; } else { num=num/10; i++; } } if(f==1) returnnum%10; else return0; } 程序如下: 方法二: #include intmain() { intnum,k; intdigit(int,int);//声明函数 cin>>num>>k; cout< } 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]; else return0; } 第3题: 哥德巴赫猜想指出: 任何一个不小于6的偶数都可以表示为两个素数之和。 例如: 6=3+38=3+5…50=3+47。 从键盘输入n(n>=6且为偶数),输出对应的表达式,要求编写函数判断一个数是否为素数。 样例输入: 8 样例输出: 8=3+5 程序如下: #include intmain() { intn,n1,n2,hs=0; intprime(int); cin>>n; for(n1=3;n1<=n/2;n1+=2) { if(prime(n1)==1) { n2=n-n1; if(prime(n2)==1) { cout< break; } } } } //判断n是否是素数,若是,返回1,否返回0 intprime(intn) { intgs=0,i; for(i=1;i<=n;i++) if(n%i==0) gs++; if(gs==2) return1; else return0; } 第4题: 编写函数,将字符串中的大写字母变成对应的小写字母,小写字母变成对应的大写字母,其它字符不变。 在主函数中调用该函数,完成任意字符串的转换,并输出结果。 输入字符串(允许包含空格),输出处理后的结果。 样例输入: HowAreYou? 样例输出: hOWaREyOU? 程序如下: #include intmain() {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 程序如下: #include intmain() {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 样例输出: 5 75 程序如下: (用指针) #include intmain() { intm,n,gy,gb; voidgygb(int,int,int*,int*);//声明函数 cin>>m>>n; gygb(m,n,&gy,&gb); cout< } 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; } 程序如下: (用全局变量) #include intgy,gb; intmain() { intm,n; voidgygb(int,int);//声明函数 cin>>m>>n; gygb(m,n); cout< } 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 程序如下: #include intmain() { intn; floatjc(int);//声明函数 cin>>n; cout< } //函数定义成实型 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 程序如下: #include #include intmain() { floatx,y; floatjs(float);//声明函数 cin>>x; y=js(x); cout< } floatjs(floatx) { floaty; if(x<=0) y=sin(x)+1; elseif(x<10) y=x*x+3/x; else y=sqrt(x+4); returny; } 第9题: 编写函数,函数功能是: 统计整数n的各位上出现数字1、2、3的次数。 要求输入输出均在主函数中完成。 样例输入: 123114350 样例输出: 312 程序如下: #include intmain() { intcount[3]={0},n,i; voidtj(int[],int);//声明函数 cin>>n; tj(count,n); for(i=0;i<3;i++) cout< } 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 程序如下: #include #include intfun(intw) {intn,k; n=0;k=w; if(w<10)return0; //下面循环测试w的位数。 循环结束,n中为w的位数-1 while(w>10) {n++;w=w/10;} //pow的函数值为实型,所以此处须强制转换成整型 returnk%(int)pow(10,n); } intmain() { intnum; cin>>num; cout< } 第11题: 编写函数,函数功能是: 将两个两位数的正整数a、b合并成一个整数c,合并规则是将a的十位和个位分别放在c的千位和个位,将b的十位和个位分别放在c的百位和十位。 a、b由键盘输入,输入输出均在主函数中完成。 样例输入: 4512 样例输出: 4125 程序如下: #include inthb(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; cin>>a>>b; c=hb(a,b); cout< } 第12题: 求数列的前n项和 要求使用函数,函数功能是: 计算数列的每一项,n由键盘输入。 累加过程和输入输出均在主函数中完成。 样例输入: 10 样例输出: 0.382179 程序如下: #include #include floatjs(inti) { floatc; c=1.0/(i*(i+1))*pow(-1,i+1);//注意表达式类型 returnc; } intmain() {floatjf(int); intn,i; floats=0; cin>>n; for(i=1;i<=n;i++) s+=js(i); cout< } 第13题: 求数列 其中分母为n以内(包括n)的素数。 要求使用函数,函数功能是: 计算数列的每一项,n由键盘输入。 累加过程和输入输出均在主函数中完成。 样例输入: 50 样例输出: 1.66165 程序如下: #include floatpd(intn) {intp=1,i; for(i=2;i<=n/2;i++) if(n%i==0) {p=0; break; } if(p==1) return1.0/n; else return0; } intmain() { intn,i; floatpd(int),s; cin>>n; s=0; for(i=2;i<=n;i++) s+=pd(i); cout< } 第14题: 编写程序求给定整数n的“亲密对数”。 “亲密对数”是指: 若整数a的因子(包括1但不包括自身,下同)之和为b,而整数b的因子之和为a,则称a和b为一对“亲密对数”。 要求使用函数,函数功能是: 计算某一个数的因子(包括1但不包括自身)之和。 n由键盘输入,如果存在“亲密对数”则输出该数,否则输出NO。 要求输入输出均在主函数中完成。 样例输入: 220 样例输出: 284 样例输入: 8 样例输出: NO 程序如下: #include intyzh(intn) {ints=0,i; for(i=1;i<=n/2;i++) if(n%i==0) s+=i; returns; } intmain() { intn1,n2; intyzh(int); cin>>n1; n2=yzh(n1); if(n1==yzh(n2)) cout< else cout<<"NO"; } 第15题: 编写函数,功能是交换数组中的最大数和最小数的位置,并计算所有数之和。 例如数组a有5个元素3、4、1、5、2,将最大数5和最小数1的位置交换后得到3、4、5、1、2,总和为15。 程序中用到的主函数为: 程序如下: #include intfun(inta[],intn) { intmax,min,s,i,t; max=min=s=0; for(i=0;i { s+=a[i]; if(a[max] max=i; elseif(a[min]>a[i]) min=i; } t=a[max];a[max]=a[min];a[min]=t; returns; } intmain() { inta[50],n,i,sum; cin>>n; for(i=0;i cin>>a[i]; sum=fun(a,n); for(i=0;i cout< cout< return0; }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 习题 函数