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

更新时间:2023-11-09 06:48:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

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

【实验目的】函数是C程序的基本组成部分,学习函数的设计和调用是很重要的。实验目的是掌握函数的定义、变量的作用域和函数的调用。 【实验要求】实际应用程序通常是由多个函数构成的,要求将常见的功能模块用函数形式实现,并学会在主函数或其他函数中调用定义的函数。要学会函数声明。 【实验课时】6.0 【实验内容】

1. 编写函数fun(n),n为三位自然数,判断n是否为水仙花数,是返回1,

否返回0。编写main函数,输入一个数num,调用fun(num)函数,并输出判断结果。 #include #include int fun(int n) {int a,b,c;

a=n; b=n/10; c=n/100; if(a*a*a+b*b*b+c*c*c==n) return(1); else return(0);}

void main() {int num; clrscr(); scanf(\

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

{printf(\ scanf(\

if(/**/ fun(num)==1 /**/) printf(\ else printf(\

2. 编写函数ss(n), 判断n是否为素数,是返回1,否返回0。编写main

函数,输入一个数num,调用ss(num)函数,并输出判断结果。 #include

1

#include int ss(int n) {int i;

for(i=2;i=n) return(1); else return(0);}

void main() { int num; clrscr(); scanf(\

if(/**/ ss(num)==1 /**/) printf(\ else printf(\

3. 编写一个函数fun(n),计算n!,并编写main函数测试,在main函数

中输入num,调用fun(num),输出计算的结果。 #include #include long fun(int n) {long s=1; int i;

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

void main() {int num; clrscr(); scanf(\

if(num>0) printf(\/**/ fun(num) /**/); else printf(\

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

2

#include long fun(int n) {long f;

if(n==1||n==0) f=1; else f=n*fun(n-1); return f;}

void main() {int num; clrscr(); scanf(\

if(num>0) printf(\/**/ fun(num) /**/); else printf(\

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

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

k(n-1)×3 n为奇数 #include #include 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;}

void main() {int m; clrscr(); scanf(\

if(m>=1) printf(\/**/ k(m) /**/); else printf(\

3

6. 计算s=(1!)+(1!+2!)+…+(1!+…+n!)。 n由用户输入,小于10。(设计:函数h1(n)计算n的阶乘;函数h2(m)计算1!+2!+…+m!的累加运算。在主函数中调用h2()函数,h2()函数中调用h1()函数来实现累加。) #include #include 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;}

void main()

{int k,num; long sum=0; clrscr(); scanf(\ for(k=1;k<=num;k++) /**/ sum=sum+h2(k) /**/;

printf(\num,/**/ sum /**/);}

7. 设计一个函数gcd(),计算两个自然数的最大公约数。在主函数中输入

两个数,调用此函数,输出求得的结果。 #include #include int gcd(int m,int n) {int r;r=m%n; while(r!=0) {m=n;n=r;r=m%n;}

4

return n;}

void main() {int m,n; clrscr(); scanf(\

printf(\/**/ gcd(m,n) /**/);} /*调用gcd()求m,n的最大公约数*/

8. 在一个一维数组a中存放10个正整数, 输出其中所有的素数。(用数组

元素作为函数的实际参数) #include #include 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); }

void main( ) {int a[10],i; clrscr();

for(i=0;i<10;i++) scanf(\ printf(\ for(i=0;i<10;i++)

if(/**/ sushu(a[i]) /**/) /*以数组元素作实参调用sushu()进行判断*/

printf(\printf(\

9. 设计一个函数fc,其功能为统计数组中偶数的个数。编写main函数,

用数组名num做为函数传递的参数调用fc函数,实现对数组num的统计,并输出统计结果。 #include

5

本文来源:https://www.bwwdw.com/article/m7yv.html

Top