实验(7)-函数-参考答案

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

C语言程序设计实验教学(7)

【实验目的】函数是C程序的基本组成部分,学习函数的设计和调用是很重要的。实验目的是掌握函数的定义、变量的作用域和函数的调用。

【实验要求】实际应用程序通常是由多个函数构成的,要求将常见的功能模块用函数形式实现,并学会在主函数或其他函数中调用定义的函数。要学会函数声明。

【实验课时】6.0

【实验内容】

编写函数fun(n),n为三位自然数,判断n是否为水仙花数,是返回1,否返回0。编写main 函数,输入一个数num,调用fun(num)函数,并输出函数的返回值。

#include "stdio.h"

int fun(int n)

{int a,b,c;

a=n%10; b=n/10%10; c=n/100;

if(a*a*a+b*b*b+c*c*c==n) return(1);

else return(0);}

main()

{int num; scanf("%d",&num);

while(num<100||num>=1000)

{printf("please enter the num again! (num>=100&&num<1000) \n");

scanf("%d",&num);}

if(fun(num)==1) printf(" yes \n");

else printf(" no \n");}

编写函数ss(n), 判断n是否为素数,是返回1,否返回0。编写main函数,输入一个数num,调用ss(num)函数,并输出函数的返回值。

#include "stdio.h"

int ss(int n)

{int i;

for(i=2;i

if(n%i==0) break;

if(i>=n) return(1);

else return(0);}

main()

{ int num; scanf("%d",&num);

if(ss(num)==1) printf(" yes \n");

else printf(" no \n");}

编写一个函数fun(n),计算n!,并编写main函数测试,在main函数中输入num,调用fun(num),输出计算的结果。

#include "stdio.h"

long fun(int n)

{long s=1; int i;

for(i=1;i<=n;i++) s=s*i;

return(s);}

main()

{int num; scanf("%d",&num);

if(num>=0) printf("%d!=%ld \n",num,fun(num));

else printf("input data error! \n");}

使用递归函数实现计算n!,并在main函数中调用。

#include "stdio.h"

long fun(int n)

{long f;

if(n==1||n==0) f=1;

else f=n*fun(n-1);

return f;}

main()

{int num; scanf("%d",&num);

if(num>=0) printf("%d!=%ld \n",num,fun(num));

else printf("input data error! \n");}

某数列为K(n)的定义为:用递归的方法求该数列的第6项k(6)。

1 n=1

k(n)= k(n-1)×2 n为偶数

k(n-1)×3 n为奇数

int k(int n)

{int c;

if(n==1) c=1;

else if(n%2==0) c=k(n-1)*2;

else c=k(n-1)*3;

return c;}

main()

{int m;

scanf("%d",&m);

if(m>=1) printf("k(%d)=%d\n",m,k(m));

else printf("input data error!\n");}

计算s=(1!)+(1!+2!)+…+(1!+…+n!)。n由用户输入,小于10。(设计:函数h1()计算阶乘;函数h2()计算每个数据项的累加运算。用函数的嵌套来做)

long h1(int n)

{long t=1;int i;

for(i=1;i<=n;i++) t=t*i;

return t;}

long h2(int m)

{long s=0;int i;

for(i=1;i<=m;i++)

s=s+h1(i);

return s;}

main()

{int k,j;long sum=0;

scanf("%d",&k);

for(j=1;j<=k;j++)

sum=sum+h2(j);

printf("(1!)+(1!+2!)+...+(1!+2!+...+%d!)=%ld\n",k,sum);}

设计一个函数fc,其功能为统计数组中偶数的个数。编写main函数,用数组名num做为函数传递的参数调用fc函数,实现对数组num的统计,并输出统计结果。

#include "stdio.h"

int fc(int a[],int n)

{int i,c=0;

for(i=0;i

if(a[i]%2==0) c=c+1;

return(c);}

main()

{int i,num[10];

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

scanf("%d",&num[i]);

printf("oushu: %d \n",fc(num,10));

printf("jishu: %d \n",10-fc(num,10));}

在一个一维数组a中存放10个正整数, 求其中所有的素数。(用数组元素作为函数的实际参数)

int sushu(int x)

{int i,k=1;

if(x==1) k=0;

for(i=2;i<=x/2;i++)

if(x%i==0) k=0;

return(k); }

main( )

{int a[10],i;

for(i=0;i<10;i++) scanf("%d",&a[i]);

printf("sushu of array a are:\n");

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

if(sushu(a[i])) printf("%5d",a[i]);

printf("\n");}

设计一个函数,计算两个自然数的最大公约数。

int gcd(int m,int n)

{int r;r=m%n;

while(r!=0)

{m=n;n=r;r=m%n;}

return n;}

main()

{int m,n;

scanf("%d,%d",&m,&n);

printf("%d\n",gcd(m,n));}

设计一个函数float ave(int a[10]),计算数组a所有元素的平均值。(用数组名作为函数的实际参数)

相关文档
最新文档