您好,欢迎来到刀刀网。
搜索
您的当前位置:首页C++习题(函数)

C++习题(函数)

来源:刀刀网
第1题:

编写两个函数,函数功能分别是:求两个整数的最大公约数和最小公倍数,要求输入输出均在主函数中完成。 样例输入:15 25 样例输出:5 75

程序如下

#include int main() {

int m,n;

int gys(int,int); //声明函数 int gbs(int,int); //声明函数 cin>>m>>n;

cout<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); //声明函数 return (a*b)/gys(a,b); }

第2题:

编写函数digit(num, k),函数功能是:求整数num从右边开始的第k位数字的值,如果num位数不足k位则返回0。要求输入输出均在主函数中完成。 样例输入:47 3 样例输出:6

样例输入:23523 7 样例输出:0

程序如下:方法一:

#include int main() {

int num,k;

int digit(int,int); //声明函数 cin>>num>>k;

cout<int digit(int num,int k) {

int i,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)

return num%10; else

return 0; }

程序如下:方法二:

#include int main() {

int num,k;

int digit(int,int); //声明函数 cin>>num>>k;

cout<int digit(int num,int k) {

int i,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)

return a[k-1]; else

return 0; }

第3题:

哥德猜想指出:任何一个不小于6的偶数都可以表示为两个素数之和。例如:6=3+3 8=3+5 … 50=3+47。从键盘输入n(n>=6且为偶数),输出对应的表达式,要求编写函数判断一个数是否为素数。 样例输入:8 样例输出:8=3+5

程序如下:

#include int main() {

int n,n1,n2,hs=0; int prime(int); cin>>n;

for(n1=3;n1<=n/2;n1+=2) {

if(prime(n1)==1) {

n2=n-n1;

if(prime(n2)==1) {

cout<//判断n是否是素数,若是,返回1,否返回0

int 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题: 编写函数,将字符串中的大写字母变成对应的小写字母,小写字母变成对应的大写字母,其它字符不变。在主函数中调用该函数,完成任意字符串的转换,并输出结果。输入字符串(允许包含空格),输出处理后的结果。 样例输入:How Are You? 样例输出:hOW aRE yOU?

程序如下:

#include int main() { char a[30];

void zh(char []); //函数声明

gets(a); //字串允许包含空格,所以用gets输入 zh(a); puts(a); }

void zh(char t[]) { int i;

for(i=0;t[i]!=0;i++)

if(t[i]>='a'&&t[i]<='z') t[i]-=32;

else if(t[i]>='A'&&t[i]<='Z') t[i]+=32; }

第5题:

编写函数,求一个字符串的长度。在主函数中调用该函数,输出结果。输入字符串(允许包含空格),输出字符串的长度。 样例输入:How Are You?

样例输出:12 程序如下:

#include int main() { char a[50];

int cd(char []); //函数声明

gets(a); //字串允许包含空格,所以用gets输入 printf(\"%d\}

int cd(char t[]) { int i;

for(i=0;t[i]!=0;i++) ;

return i; }

第6题:

编写函数,求两个整数的最大公约数和最小公倍数。在主函数中调用该函数,输出分2行,第一行为最大公倍数,第二行为最小公倍数。 样例输入:15 25 样例输出: 5 75

程序如下:(用指针)

#include int main() {

int m,n,gy,gb;

void gygb(int,int,int *,int *); //声明函数 cin>>m>>n;

gygb(m,n,&gy,&gb); cout<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; }

程序如下:(用全局变量)

#include int gy,gb; int main() {

int m,n;

void gygb(int,int); //声明函数 cin>>m>>n; gygb(m,n);

cout<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 程序如下:

#include int main() {

int n;

float jc(int); //声明函数 cin>>n;

cout<//函数定义成实型 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.57 样例输入:12.5 样例输出:4.06202

程序如下:

#include #include int main() {

float x,y;

float js(float); //声明函数 cin>>x; y=js(x); cout<float js(float x) {

float y; if(x<=0)

y=sin(x)+1; else if(x<10) y=x*x+3/x; else

y=sqrt(x+4); return y; }

第9题:

编写函数,函数功能是:统计整数n的各位上出现数字1、2、3的次数。要求输入输出均在主函数中完成。 样例输入:123114350 样例输出:3 1 2

程序如下:

#include int main() {

int count[3]={0},n,i;

void tj(int [],int); //声明函数 cin>>n;

tj(count,n);

for(i=0;i<3;i++)

cout<void tj(int js[],int x) {

while(x!=0) {

switch(x%10)

{

case 1:js[0]++;break; case 2:js[1]++;break; case 3: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 int fun(int w) { int n,k; n=0;k=w;

if(w<10)return 0;

//下面循环测试w的位数。循环结束,n中为w的位数-1 while(w>10) {n++;w=w/10;}

//pow的函数值为实型,所以此处须强制转换成整型

return k%(int)pow(10,n); }

int main() {

int num; cin>>num;

cout<第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=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; cin>>a>>b; c=hb(a,b); cout<第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()

{ float jf(int); int n,i; float s=0; cin>>n;

for(i=1;i<=n;i++) s+=js(i); cout<第13题: 求数列

其中分母为n以内(包括n)的素数。要求使用函数,函数功能是:计算数列的每一项,n由键盘输入。累加过程和输入输出均在主函数中完成。 样例输入:50 样例输出:1.66165

程序如下:

#include float pd(int n) { int p=1,i;

for(i=2;i<=n/2;i++) if(n%i==0) { p=0; break; } if(p==1)

return 1.0/n; else

return 0; }

int main() {

int n,i;

float pd(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 int yzh(int n) { int s=0,i;

for(i=1;i<=n/2;i++) if(n%i==0) s+=i; return s; }

int main() {

int n1,n2; int yzh(int); cin>>n1; n2=yzh(n1);

if(n1==yzh(n2)) cout<cout<<\"NO\"; }

第15题:

编写函数,功能是交换数组中的最大数和最小数的位置,并计算所有数之和。例如数组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;is+=a[i];

if(a[max]else if(a[min]>a[i]) min=i; }

t=a[max];a[max]=a[min];a[min]=t; return s; }

int main() {

int a[50],n,i,sum; cin>>n;

for(i=0;i>a[i]; sum=fun(a,n); for(i=0;icout<

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- gamedaodao.com 版权所有 湘ICP备2022005869号-6

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务