1、1C 语言程序设计 实验教学(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
2、; 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);void main()int num; clrscr();scanf(“%d“,while(num=1000)printf(“please enter the num again! (num=100 for(i=2;i=n) return(1);else return(0);void main() int num; clrscr();scanf(“%d“,if(/*/ ss(num)=1 /*/) printf(“%d is a sushu
3、.n“,num);else printf(“%d is not a sushu.n“,num);3. 编写一个函数 fun(n),计算 n!,并编写 main 函数测试,在 main 函数中输入 num,调用 fun(num),输出计算的结果。#include #include long fun(int n)long s=1; int i;for(i=1;i0) printf(“%d!=%ld n“,num,/*/ fun(num) /*/);else printf(“input data error! n“);4. 使用递归函数实现计算 n!,并在 main 函数中调用。#include 3
4、#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(“%d“,if(num0) printf(“%d!=%ld n“,num,/*/ fun(num) /*/);else printf(“input data error! n“);5. 某数列为 K(n)的定义为:用递归的方法求该数列的第 6 项 k(6)。1 n=1k(n)= k(n-1)2 n 为偶数k(n-1)3 n 为奇数#include #include int k(i
5、nt 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(“%d“,if(m=1) printf(“k(%d)=%dn“,m,/*/ k(m) /*/);4else printf(“input data error!n“);6. 计算 s=(1!)+(1!+2!)+(1!+n!)。 n 由用户输入,小于 10。 (设计:函数 h1(n)计算 n 的阶乘;函数 h2(m)计算 1!+2!+m!的累加运算。在主函数中调用 h2()函数, h2(
6、)函数中调用 h1()函数来实现累加。 )#include #include long h1(int n)long t=1;int i;for(i=1;imax) max=arrayi;return(max);main()int a34=1,3,5,7,2,4,6,8,15,17,34,12; printf(“max=%dn“,max_value(a);813. 设计一个函数,使输入的一个字符串按反序存放,在主函数中输入和输出字符串。(学习指导书 P74)#include main() int inverse (char str); /*函数原型声明 */char str100;printf(
7、“Input string:n“);gets(str);inverse(str);printf(“Output string after inverse:n“);puts(str);int inverse(char st) /* 函数定义*/char t; int i,j;for(i=0,j=strlen(st);imain()char str80;void insert(char str );printf(“nInput four digits:n“);gets(str);9insert(str);printf(“nOutput digits after insert space:n“);p
8、uts(str);void insert(char str)int i;for (i=strlen(str);i0;i-)str2*i=stri; str2*i-1= ;15. 使用局部静态变量,求 1 到 5 的阶乘。int fac(int n)static int f=1;f=f*n;return f;main()int i;for(i=1;i#include main()void sort(char (*s)6);10int i; char str106;char (*p)6;printf(“Input 10 strings:n“);for(i=0;i0 )strcpy(t,sj);strcpy(sj,sj+1);strcpy(sj+1,t);运行结果:Input 10 strings: ChinaJapanKoreaEgyptNepalBurmaGhanaSudanItalyLibya