C语言实验程序、总结 实验六 函数_c语言函数实验心得
C语言实验程序、总结 实验六 函数由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“c语言函数实验心得”。
一 实验目的掌握定义函数的方法;
实验六 函数掌握函数实参与形参的对应关系以及“值传递”的方式; 3 掌握函数递归调用的方法;
二 实验内容编写两个函数,分别求两个正整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果,两个正整数由键盘输入。
【提示】设有两个正整数m和n ⑴ 实验四介绍了求最大公约数的算法,也可以用递归的方法求最大公约数。设hcf(int m,int n)是用来求m和n的最大公约数h函数,k=m%n,则:
hcf(n,k)hnk0k0⑵ 若最大公约数为h,则最小公倍数为:m*n/h。
实验时,完成以下两个函数的定义,使之和主程序构成完整的程序,实现题目的要求。#include int hcf(int m,int n)/* 求最大公约数的函数 */ { „„ } int lcd(int m,int n,int h)/* 求最小公倍数的函数 */ { 返回最小公倍数; } main(){ int m,n,h,l;printf(“请输入两个正整数m、n:”);scanf(“%d,%d”,&m,&n);h=hcf(m,n);printf(“%d和%d的最大公约数是:%dn”,m,n,h);l=lcd(m,n,h);printf(“%d和%d的最小公倍数是:%dn”,m,n,l);} 程序调试通过后,用m=350、n=125和m=96、n=64两组数据运行程序,记录程序的输出。
完整程序如下: #include int hcf(int m,int n)/* 求最大公约数的函数 */ { int temp,r;if(m
int lcd(int m,int n,int h)/* 求最小公倍数的函数 */ { return(m*n/h);} main(){ int m,n,h,l;printf(“请输入两个正整数m、n:”);scanf(“%d,%d”,&m,&n);h=hcf(m,n);printf(“%d和%d的最大公约数是:%dn”,m,n,h);l=lcd(m,n,h);printf(“%d和%d的最小公倍数是:%dn”,m,n,l);}
运行结果如下图:编写求n!的函数f(int n),在主函数中输入两个整数m、n,然后调用函数求:
Cnmm!n!(m-n)!【注意】函数f的类型应用long或double。
程序如下:
#include long f(int n){ if(n)return n*jc(n-1);else return 1;}
void main(){ long m,n,c;printf(“请输入两个整数”);
scanf(“%d,%d”,&m,&n);c=f(c);m=m*(m-1)n=n*(n-1)c=m/(n*c)printf(“组合为%dn”,c);
}有一个字符串,输入一个字符,编写函数dstr将输入的指定字符从字符串中删去。#include void dstr(char str[],char ch){ } main(){ char str[80],ch;printf(“请输入字符串:”);gets(str);printf(“请输入欲删除的字符:”);scanf(“%c”,&ch);dstr(str,c);printf(“删除指定字符后的结果:%sn”,str);}
完整程序如下: #include void enter_string(char str[80]){ printf(“请输入字符串:”);gets(str);/* 从键盘输入字符串到数组str */ } void delete_string(char str[],char ch){ int i,j;for(i=j=0;str[i]!=' ';i++)if(str[i]!=ch)str[j++]=str[i];str[j]=' ';} void print_string(char str[]){ printf(“删除指定字符后的结果:%sn”,str);} void main(){ char c;char str[80];enter_string(str);printf(“请输入欲删除的字符:”);scanf(“%c”,&c);delete_string(str,c);print_string(str);}
实验总结:本次实验主要掌握定义函数的方法,掌握函数实参与形参的对应关系以及“值传递”的方式;掌握函数的嵌套调用和递归调用的方法;通过本次实验对函数和函数的调用有了更深的了解,加深对函数的认识。