C函数编程20道习题汇总含其详细程序解答

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第1题:

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

样例输入:15 25

样例输出:5 75

#include int gys(int a,int b) {int i;

for(i=a;i>0;i--)

if (a%i==0&&b%i==0) { return i;

break;}

} int gbs(int a,int b)

{int i;

for(i=a;;i++)

if(i%a==0&&i%b==0)

{ return i;

break;}

}

int main()

{int a,b,c,d;

cin>>a>>b;

c=gys(a,b);

d=gbs(a,b);

cout<

return 0;}

第2题:

编写函数factors(num, k),函数功能是:求整数num中包含因子k的个数,如果没有该因子则返回0,例如:32=2×2×2×2×2,则factors(32,2)=5。要求输入输出均在主函数中完成。

样例输入:4 2样例输出:2 样例输入:8 3样例输出:0

#include int factors(int num,int k) {int n=0,a;

a=num%k;

while(a==0)

{n++; num=num/k;

a=num%k;

}

return n;}

int main()

{int num,k,b;

cin>>num>>k;

b=factors(num,k);

cout<

return 0;

}

第3题:

编写函数,函数功能是:计算n的阶乘,要求输入输出均在主函数中完成。样例输入:5样例输出:120、

#include int jc(int n)

{int a,b=1;

for(a=1;a<=n;a++)

b=a*b; return b;}

int main()

{int n,s;

cin>>n;

s=jc(n);

cout<

return 0;

}

第4题:

编写函数,函数功能是:计算k以内(包括k)最大的10个(不足10个则是所有的)能被13或17整除的自然数之和。要求输入输出均在主函数中完成。

样例输入:500样例输出:4622

#include int sum(int k)

{ int n,c=0,s=0;

for(n=k;n>0;n--)

{if(n%13==0||n%17==0) {c++; s+=n;}

if(c>=10)

break;}

return s;}

int main()

{int k,s;

cin>>k;

s=sum(k);

cout<

return 0;

}

第5题:

编写函数,函数功能是:根据下列公式求π的值(直到某一项的值小于给定精度

e为止),精度e由键盘输入,要求输入输出均在主函数中完成。

样例输入:0.0005

样例输出:3.14058

#include double pai(double e) {double s,a,k,p;

s=1;

a=1/3.0;

for(k=2;;k++) {s+=a;

a=a*(k/(k*2+1));

if(a

p=s*2;

return p;}

int main()

{double e,p;

cin>>e;

p=pai(e);

cout<

return 0;}

第6题:

编写程序求

要求使用函数,函数功能是:求某个数的阶乘。n由键盘输入,输入输出均在主函数中完成。注意:0!=1。

样例输入:3

样例输出:10

#include int jc(int a)

{int s=1,i;

if(a==0)

s=1;

else {for(i=1;i<=a;i++)

s=s*i;}

return s;}

int main()

{int n,k,s;

double sum=0;

cin>>n;

for(k=0;k<=n;k++)

{s=jc(k);

sum+=s;}

cout<

return 0;}

第7题:

求数列

要求使用函数计算该序列的前N项和S N,直到S N 大于q为止,q由键盘输入,输入输出均在主函数中完成。

样例输入:50

样例输出:50.4167、

#include float sum(float q) {float s=0,a,n;

for(n=1;s<=q;n++) {a=(n+1.0)/n; s+=a;}

return s;}

int main()

{

float q,s;

cin>>q;

s=sum(q);

cout<

return 0;}

第8题:

求数列的前n项和

相关文档
最新文档