实验(7)-函数-参考答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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所有元素的平均值。(用数组名作为函数的实际参数)