C++习题函数文档格式.docx
《C++习题函数文档格式.docx》由会员分享,可在线阅读,更多相关《C++习题函数文档格式.docx(16页珍藏版)》请在冰豆网上搜索。
![C++习题函数文档格式.docx](https://file1.bdocx.com/fileroot1/2022-11/24/3beecb45-c444-455e-99cb-46044524cbd1/3beecb45-c444-455e-99cb-46044524cbd11.gif)
}
returnb;
intgbs(inta,intb)
return(a*b)/gys(a,b);
第2题:
编写函数digit(num,k),函数功能是:
求整数num从右边开始的第k位数字的值,如果num位数不足k位则返回0。
要求输入输出均在主函数中完成。
46473
6
235237
0
程序如下:
方法一:
intnum,k;
intdigit(int,int);
num>
k;
digit(num,k);
intdigit(intnum,intk)
inti,f;
i=1;
f=0;
//f=0,num不足k位,否则f=1
while(num!
if(i==k)
{
f=1;
break;
}
else
num=num/10;
i++;
if(f==1)
returnnum%10;
else
return0;
方法二:
inti,n,a[100];
/*将num中的各位数字从个位开始依次取出置于数组元素a[0]至a[i-1]中
循环结束后,i变量中存储了num的数据位数*/
i=0;
a[i]=num%10;
num=num/10;
i++;
if(i>
=k)
returna[k-1];
第3题:
哥德巴赫猜想指出:
任何一个不小于6的偶数都可以表示为两个素数之和。
例如:
6=3+38=3+5…50=3+47。
从键盘输入n(n>
=6且为偶数),输出对应的表达式,要求编写函数判断一个数是否为素数。
8
8=3+5
程序如下:
#include<
{
intn,n1,n2,hs=0;
intprime(int);
for(n1=3;
n1<
=n/2;
n1+=2)
if(prime(n1)==1)
n2=n-n1;
if(prime(n2)==1)
{
cout<
n<
="
+"
n2<
endl;
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
第4题:
编写函数,将字符串中的大写字母变成对应的小写字母,小写字母变成对应的大写字母,其它字符不变。
在主函数中调用该函数,完成任意字符串的转换,并输出结果。
输入字符串(允许包含空格),输出处理后的结果。
HowAreYou?
hOWaREyOU?
stdio.h>
{chara[30];
voidzh(char[]);
//函数声明
gets(a);
//字串允许包含空格,所以用gets输入
zh(a);
puts(a);
voidzh(chart[])
{inti;
for(i=0;
t[i]!
=0;
if(t[i]>
='
a'
&
t[i]<
z'
)
t[i]-=32;
elseif(t[i]>
A'
Z'
t[i]+=32;
第5题:
编写函数,求一个字符串的长度。
在主函数中调用该函数,输出结果。
输入字符串(允许包含空格),输出字符串的长度。
12
{chara[50];
intcd(char[]);
printf("
%d"
cd(a));
intcd(chart[])
;
returni;
第6题:
编写函数,求两个整数的最大公约数和最小公倍数。
在主函数中调用该函数,输出分2行,第一行为最大公倍数,第二行为最小公倍数。
1525
5
75
(用指针)
intm,n,gy,gb;
voidgygb(int,int,int*,int*);
gygb(m,n,&
gy,&
gb);
gy<
endl<
gb;
voidgygb(inta,intb,int*pgy,int*pgb)
intr,a1,b1;
a1=a;
b1=b;
*pgy=b;
*pgb=(a1*b1)/b;
(用全局变量)
intgy,gb;
voidgygb(int,int);
gygb(m,n);
voidgygb(inta,intb)
gy=b;
gb=(a1*b1)/b;
第7题:
[95]编写函数,函数功能是:
计算n的阶乘,要求输入输出均在主函数中完成。
10
3.6288e+06
intn;
floatjc(int);
jc(n);
//函数定义成实型
floatjc(intn)
inti;
floatt;
//存放阶乘的变量定义成实型
t=1;
t*=i;
returnt;
第8题:
[99]有一分段函数如下,编写函数进行计算,在主函数中输入x值,输出y值。
-1.5
0.00250501
5.6
31.8957
12.5
4.06202
math.h>
floatx,y;
floatjs(float);
x;
y=js(x);
y;
floatjs(floatx)
floaty;
if(x<
y=sin(x)+1;
elseif(x<
10)
y=x*x+3/x;
y=sqrt(x+4);
returny;
第9题:
编写函数,函数功能是:
统计整数n的各位上出现数字1、2、3的次数。
123114350
312
intcount[3]={0},n,i;
voidtj(int[],int);
tj(count,n);
3;
cout<
count[i]<
;
voidtj(intjs[],intx)
while(x!
switch(x%10)
case1:
js[0]++;
break;
case2:
js[1]++;
case3:
js[2]++;
x=x/10;
第10题:
编写函数fun(num),其中num是一个n位数,函数功能是:
求整数num的后n-1位,如果num是一位数则返回0,要求输入输出均在主函数中完成。
9
6734
734
1000
10101
101
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);
intnum;
num;
fun(num);
第11题:
将两个两位数的正整数a、b合并成一个整数c,合并规则是将a的十位和个位分别放在c的千位和个位,将b的十位和个位分别放在c的百位和十位。
a、b由键盘输入,输入输出均在主函数中完成。
4512
4125
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;
inta,b,c;
a>
b;
c=hb(a,b);
c;
第12题:
求数列的前n项和
要求使用函数,函数功能是:
计算数列的每一项,n由键盘输入。
累加过程和输入输出均在主函数中完成。
10
0.382179
floatjs(inti)
floatc;
c=1.0/(i*(i+1))*pow(-1,i+1);
//注意表达式类型
{floatjf(int);
intn,i;
floats=0;
s+=js(i);
s;
第13题:
求数列
其中分母为n以内(包括n)的素数。
50
1.66165
floatpd(intn)
{intp=1,i;
for(i=2;
{p=0;
break;
if(p==1)
return1.0/n;
}
floatpd(int),s;
s=0;
s+=pd(i);
第14题:
编写程序求给定整数n的“亲密对数”。
“亲密对数”是指:
若整数a的因子(包括1但不包括自身,下同)之和为b,而整数b的因子之和为a,则称a和b为一对“亲密对数”。
计算某一个数的因子(包括1但不包括自身)之和。
n由键盘输入,如果存在“亲密对数”则输出该数,否则输出NO。
220
284
NO
intyzh(intn)
{ints=0,i;
s+=i;
returns;
intn1,n2;
intyzh(int);
n1;
n2=yzh(n1);
if(n1==yzh(n2))
n2;
NO"
第15题:
编写函数,功能是交换数组中的最大数和最小数的位置,并计算所有数之和。
例如数组a有5个元素3、4、1、5、2,将最大数5和最小数1的位置交换后得到3、4、5、1、2,总和为15。
程序中用到的主函数为:
intfun(inta[],intn)
intmax,min,s,i,t;
max=min=s=0;
s+=a[i];
if(a[max]<
a[i])
max=i;
elseif(a[min]>
min=i;
t=a[max];
a[max]=a[min];
a[min]=t;
inta[50],n,i,sum;
cin>
a[i];
sum=fun(a,n);
a[i]<
sum<
return0;