C++习题函数.docx

上传人:b****4 文档编号:3583198 上传时间:2022-11-24 格式:DOCX 页数:16 大小:37.49KB
下载 相关 举报
C++习题函数.docx_第1页
第1页 / 共16页
C++习题函数.docx_第2页
第2页 / 共16页
C++习题函数.docx_第3页
第3页 / 共16页
C++习题函数.docx_第4页
第4页 / 共16页
C++习题函数.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

C++习题函数.docx

《C++习题函数.docx》由会员分享,可在线阅读,更多相关《C++习题函数.docx(16页珍藏版)》请在冰豆网上搜索。

C++习题函数.docx

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;

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1