C语言实验报告-函数

时间:2024.4.20

          华北水院高级语言程序设计(C语言)实验报告(五)

20##--20##学年   第二学期

20##级   专业:信息与计算科学 学号: 20000000    姓名:申****                                                                                      

………………………………………………………………………………………………

一、实验题目:函数

二、实验目的:(略)

三、实验内容

1. 程序验证(略)

2.程序设计

1) 编程实现求两个正整数的最大公约数,要求计算最大公约数用函数

fun(int  a,int  b)实现。

源代码:

#include <stdio.h>

#include <string.h>

#define N 100//这个N就是限定范围用的,大小自己可以直接改,暂定a和b在100以内

 fun(int a,int b)

{

        int i,j=0,max=0,n[N];

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

        {

               if((a%i==0)&&(b%i==0))

               {

        n[j]=i;

        j+=1;

               }

            else;

        }

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

        {    for(j=0;j<N;j++)

               if(max<n[j])

                      max=n[j];

        

        }

printf("        %d\n",max);     

      

}

void main()

{

int a,b;

printf("input two data please: ");

scanf("%d%d",&a,&b);

fun(a,b);

}

运行结果:

2) 编程实现打印出2~n之间的所有素数,要求判断素数过程用自定义函数实现。

源代码: #include<stdio.h>

#define n 100//此处n值可随意更改

void main()

{

int i,j;

for(j=2;j<=n;j++)

{

for(i=2;j%i;i++);

if(i==j)

printf("  %d",i);

}

putchar('  \n');

}                                          

运行结果:

3) 编写函数fun(int t),它的功能是:求斐波那契数列中大于t的最小的一个数,结果由函数返回。其中斐波那契数列f(n)的定义为:

                     f(1)=1,           f(2)=1

                     f(n)= f(n-1)+ f(n-2)       (n>2)

例如:当t=1000时,函数值为:1597。

源代码:                                         

#include <stdio.h>

 fun(int t)

{

       int f[1000],n=3;

f[1]=1;

f[2]=1;

do

{

f[n]= f[n-1]+ f[n-2];

n+=1;

}while(f[n-1]<t);

return f[n-1];

}

void main()

{

int t;

printf("input n please: ");

scanf("%d",&t);

printf("t=%d,fun(t)=%d\n",t,fun(t));

}

 运行结果:


第二篇:C语言实验四实验报告——函数


一、 实验项目名称

函数

二、 实验目的

1.掌握C函数的定义方法、函数的调用方法、参数说明以及返回值。掌握实参与形参的对应关系以及参数之间的“值传递”的方式;掌握函数的嵌套调用及递归调用的设计方法;

2.掌握全局变量和局部变量、动态变量与静态变量的概念和使用方法;

3.在编程过程中加深理解函数调用的程序设计思想。

三、实验内容

1.多模块的程序设计与调试的方法;

2.函数的定义和调用的方法;

3.用递归方法进行程序设计。

具体内容:

1.编写一个函数primeNum(int num),它的功能是判别一个数是否为素数。如果num是素数,返回该数;否则返回0值。

要求:

(1)在主函数输入一个整数num,调用该函数后,输出num是否是素数的信息。输出格式为:num is prime或num is not prime。

(2)分别输入以下数据:0,1,2,5,9,13,59,121,运行程序并检查结果是否正确。

2.编写函数computNum( int num),它的功能是计算任意输入的一个正整数的各位数字之和,结果由函数返回(例如:输入数据是123,返回值为6)。

要求: num由主函数输入,调用该函数后,在主函数内输出结果。

3.编写函数,mulNum(int a,int b),它的功能是用来确定a和b是否是整数倍的关系。如果a是b的整数倍,则函数返回值为1,否则函数返回值为0。

要求:

(1)在主函数中输入一对数据a和b,调用该函数后,输出结果并加以相应的说明。例如:在主函数中输入:10,5 ,则输出:10 is multiple of 5.

(2)分别输入下面几组数据进行函数的正确性测试:1与5、5与5、6与2、6与4、20与4、 37与9等,并对测试信息加以说明。

4.编写一个计算组合数的函数combinNum(int m,int n)。计算结果由函数返回。 计算组合数的公式是:

c(m,n)=m!/(n!*(m-n)!)

要求:

(1)从主函数输入m和n的值。对m>n、m<n和m=n 的情况作分别处理后调用函数combinNum(m,n),在主函数内输出结果值。

(2)对m>n、m<n和m=n 的情况各取一组数据进行测试,检查程序的正确性。

(3)修改程序,把两个函数分别放在两个程序文件中,作为两个文件进行编译、链接和运行。

5.整数a,b的最大公约数是指既能被a整除又能被b整除的最大整数。整数a,b的最小公倍数是指既是a的倍数又是b的倍数的最小整数。编写两个函数,一个函数gcd()的功能是求两个整数的最大公约数,另一个函数mul()的功能是求两个整数的最小公倍数。

要求:

(1)两个整数在主函数中输入,并在主函数中输出求得的最大公约数和最小公倍数。

(2)首先将两个整数a和b作为实参传递给函数gcd(),求出的最大公约数后,由函数gcd()带值返回主函数,然后将最大公约数与两个整数a、b一起作为实参传递给函数mul(),以此求出最小公倍数,再由函数mul()带值返回主函数。

(3)修改函数gcd(),函数gcd()采用递归调用的编写方法,两个整数a和b的最大公约数的递归公式是:

如果b=0,那么gcd(a,b)=x,否则gcd(a,b)= gcd(b,a%b)。 然后将最大公约数与两个整数a、b一起传递给函数mul(),求出最小公倍数,再由函数mul()将最小公倍数返回主函数。

(4)修改程序,采用全局变量的处理方法,将最大公约数和最小公倍数都设为全局变量,分别用函数gcd()和函数mul()求最大公约数和最小公倍数,但其值不是由函数返回,而是通过全局变量在函数之间传递的特性将结果反映在主函数中。

四、实验步骤及结果

打开编程软件,分别写入以下代码:

一、

#include<stdio.h>

int PrimeNum(int num);/*声明判断函数*/

void main()

{

int i,num;

printf("Please input num: ");

scanf("%d",&num);

i=PrimeNum(num);/*调用判断函数*/

if (i==0)

printf("%d is not prime",num);

else

printf("%d is prime",num);

}

int PrimeNum(int num)

{

int n,m;

if (num==1)/*1不是素数*/

m=0;

} else{ for (n=2;n<num;++n) if (num%n==0) break;/*若能被整除,说明不是素数,停止循环*/ if (n>=num) m=num; else m=0;} return (m);/*返回m*/

C语言实验四实验报告函数

二、

#include <stdio.h>

int computNum(int num);/*声明函数*/ void main()

{

int num,n;

printf("请输入不多于10位的整数:"); scanf("%d",&num);

n=computNum(num);/*调用函数*/ printf("%d",n);

}

int computNum(int num)

{

int n,j;

n=1;j=0;

for (n=1;n<11;++n)

} { j=j+num%10;/*将数的每一位数加到j上*/ num=num/10; } return j;/*直接返回j*/

C语言实验四实验报告函数

三、

#include<stdio.h>

int mulNum(int a,int b);/*声明函数*/

void main()

{

int a,b,c;

printf("Please input a and b:\n");

scanf("%d,%d",&a,&b);

c=mulNum(a,b);/*调用函数*/

if (b>a)/*大的数是小的数的倍数,所以要判断两个数的大小*/ {

c=b;

b=a;

a=c;

}

if (c==1)/*两数是倍数关系*/

printf("%d is multiple of %d",a,b);

else/*不成倍数关系*/

printf("%d is not multiple of %d",a,b);

}

int mulNum(int a,int b)

{

int c;

if (a%b==0 || b%a==0)/*判断是否能被整除*/

c=1;

else

c=0;

return c;

}

C语言实验四实验报告函数

四、

#include <stdio.h>

int combinNum(int m,int n);/*声明函数*/

void main()

{

int m,n,c;

printf("Please input m and n: ");

scanf("%d,%d",&m,&n);/*输入两个数*/

if (m<n || m<0 || n<0)/*判断输入的两个数是否符合数学要求*/

printf("Math error!\n\"m\" cannot smaller than \"n\"!\n\"m\" or \"n\" can`t smaller than 0!");

else

{

c=combinNum(m,n);/*调用函数*/

printf("c(m,n)=m!/(n!*(m-n)!)=%d",c);

}

}

int combinNum(int m,int n)

{

int accmulNum(int m);/*声明阶乘函数*/

int i,j,k,h;

i=accmulNum(m);/*调用阶乘函数*/

j=accmulNum(n);

k=accmulNum(m-n);

h=i/(j*k);

return h;

}

int accmulNum(int m)/*求数的阶乘的函数*/

{

} int i,j; j=1; for (i=1;i<=m;++i) j=j*i; return j;

C语言实验四实验报告函数

修改方案:

在文件目录下创建头文件user.h,头文件内有如下内容:

int combinNum(int a,int b);

int accmulNum(int a);

在主程序预处理中加入#include”use.h”,将主程序保存为main.cpp,被调用程序保存为user.cpp,在命令提示符中先后输入cl user.cpp /c、cl main.cpp /c、link main.obj user.obj,得到程序main.exe。

C语言实验四实验报告函数

#include <stdio.h>

int gcd(int a,int b);/*声明求公约数函数*/

int mul(int a,int b);/*声明公倍数函数*/

void main()

{

int a,b,c,d;

printf("请输入a,b:\n");

scanf("%d,%d",&a,&b);

c=gcd(a,b);/*调用公约数函数*/

d=mul(a,b);/*调用公倍数函数*/

printf("最大公约数是:%d,最小公倍数是:%d",c,d);

}

int gcd(int a,int b)/*公约数函数*/

{

int i,j,k;

j= (a>b)? b:a;

for (i=j;i>=1;--i)

{

if (a%i==0 && b%i==0)

{

k=i;break;/*第一次出现能同时被ab整除的是最小公约数*/ }

}

return k;

}

int mul(int a,int b)

{

int gcd(int a,int b);/*调用公约数函数*/

int h,k;

k=gcd(a,b);

h=a*b/k;/*公约数和公倍数的数学关系*/

return h;

}

使用递归调用修改方案:

将函数int gcd(int a,int b)的定义改为:

int gcd(int a,int b)

{

int c,i;

for (;b!=0;)

{

i=a;

a=b;

b=i%b;

c=gcd(a,b);

}

if(b==0)

c=a;

return c;

}

采用全局变量修改方案

#include <stdio.h>

int k=0,h=0;

int gcd(int a,int b);

int mul(int a,int b);

void main()

{

int a,b,c,d;

scanf("%d,%d",&a,&b);

gcd(a,b);

mul(a,b);

printf("最大公约数是:%d,最小公倍数是:%d",k,h); }

int gcd(int a,int b)

{

int i,j;

j= (a>b)? b:a;

for (i=j;i>=1;--i)

{

if (a%i==0 && b%i==0)

{

k=i;break;

}

}

return k;

}

int mul(int a,int b)

{

int gcd(int a,int b);

k=gcd(a,b);

h=a*b/k;

return h;

C语言实验四实验报告函数

}

五、思考题或实验感想

1.小结函数的定义及调用方法;

答:函数的定义的一般形式为:

类型标识符 函数名 (形式参数表列)

{

声明部分

语句部分

}

函数的调用很灵活,可以由主函数点用其他函数,其他函数也可以互相调用,要调用函数必须要先声明“类型标识符 函数名 ();”然后才能调用。

2.小结函数中形参和实参的结合规则;

答:(1)、在定义函数中指定的形参,在未出现函数调用时,它们不占内存中的存储单元。(2)、实参可以是常量、变量或表达式,在调用时将实参的值赋给形参。(3)、在被定义的函数中,必须指定形参的类型。(4)、实参和形参和类型应相同或赋值兼容。(5)、在C语言中,实参向形参的数据传递是“值传递”,单向传递,只由实参传给形参,而不能由形参传回来给实参。

3.编写和调试包含多模块的程序时,容易出现什么样的错误?根据自己的实践总结一下。

答:容易出现变量的重定义,被定义函数中有未声明的标识符,函数返回值的类型和函数类型不对应,几个函数互相调用时未声明。

更多相关推荐:
C语言:函数的应用实验报告

课程名称结构化程序设计与C语言开课实验室年月日一实验目的用C语言编写和调试函数的程序从而对函数的定义调用全局变量的灵活运用有比较深入的了解二内容及结果1程序一素数函数1程序要求写一个判断是否是素数的函数在主函数...

C语言函数实验报告

北京联合大学信息学院程序设计基础课程调研研究报告题目函数姓名学号专业计算机科学与技术编制时间20xx63版本指导教师北京联合大学信息学院编制函数实验程序设计报告20xx年6月3日班号姓名学号第一章实验情况概述本...

C语言实验七 函数 实验报告

C语言程序设计实验题目实验七函数实验目的实验报告1掌握函数定义的方法2掌握函数实参与形参的对应关系以及值传递的方式3掌握函数的嵌套调用和递归调用的方法4掌握全局变量和局部变量动态变量静态变量的概念和使用方法5学...

C语言实验报告(四)

C语言实验报告四一实验目的1掌握C语言中函数和模块2掌握怎样定义函数如何调用或使用函数如何声明函数3掌握函数的参数了解在函数调用时参数是如何传递的4在使用函数的过程中怎样确定函数的参数5如何使用局部变量和全局变...

C语言程序设计实验报告(函数)

C语言程序设计实验报告实验名称函数1实验目的1掌握函数的定义方法调用方法参数说明以及返回值2掌握实参与形参的对应关系以及参数之间的值传递的方式3掌握函数的嵌套调用及递归调用的用的设计方法4在编程过程中加深理解函...

C语言集中上机实验报告

重庆邮电大学移通学院C语言集中上机实验报告学生学号班级专业重庆邮电大学移通学院20xx年5月重庆邮电大学移通学院目录第一章循环311实验目的312实验要求313实验基本内容3131题目一3132题目二5第二章数...

c语言函数实验报告

实验报告课程名称C语言程序设计实验名称姓名学号专业班级实验日期一实验目的1学习定义函数的方法2练习形参与实参数据传递的方式3深刻理解全局变量与局部变量动态变量与静态变量的区别二实验内容1判断素数2求平均成绩3字...

C语言函数实验报告模版

第六次实验函数一实验要求1掌握函数定义和调用的方法2掌握函数嵌套调用和递归调用的方法3理解实参与形参的对应关系以及值传递调用函数的方法4理解变量作用域和存在期的概念掌握全局变量和局部变量动态变量和静态变量的定义...

C语言实验报告函数

高级语言程序设计实验报告实验序号6实验项目名称函数2includeltstdiohgtincludeltmathhgtdefinee1e5doublefunadoublenfloati1doublex10s0w...

C语言实验报告《函数》

C语言实验报告函数学号姓名班级日期指导教师成绩实验四函数一实验目的1掌握函数定义调用和声明的方法2掌握实参和形参之间的传递方式3函数的嵌套调用二实验内容1写一个函数将两个字符串连接习题862编写一个函数由实参传...

C语言程序设计实验报告-函数

C语言程序设计实验报告1实验目的掌握C函数的定义方法函数的调用方法参数说明以及返回值掌握实参与形参的对应关系以及参数之间的值传递的方式掌握函数的嵌套调用及递归调用的设计方法掌握全局变量和局部变量动态变量与静态变...

C语言实验报告之利用函数进行程序设计

一实验的目的1掌握定义函数的方法2掌握函数的实参与形参的对应关系以及值传递的方式3掌握函数的嵌套调用及其递过调用的方法4掌握全局变量与局部变量的使用二要求及内容本实验主要完成函数的的应用训练总共要求完成四个问题...

c语言函数实验报告(47篇)