• C语言实验九 函数(一)


    一、实验目的

    (一)掌握函数的定义、函数类型、函数参数、函数调用的基本概念;

    (二)掌握变量名作函数参数的程序设计方法;

    (三)掌握函数的嵌套调用的方法;

    (四)掌握数组元素作函数参数;

    (五)掌握数组名作函数参数的程序设计方法;

    (六)掌握字符数组作函数参数的程序设计方法;

    (七)了解全局变量、局部变量的概念和使用方法;

    (八)使用功能键F7单步执行,使用Ctrl+F7观察变量的值,学会程序调试基本方法。

    二、预习要求

    (一)函数的定义、函数类型、函数参数、函数调用的基本概念;

    (二)函数实参与形参的对应关系以及参数的传递;

    (三)以变量名和数组名作函数参数时的使用方法;

    (四)全局变量、局部变量的概念和使用方法。

    三、实验内容

    (一)下面程序的功能是:根据输入的整数x和n,利用函数fact实现求xn。

    例如:输入:2,3       输出23=8

    1. /*   c9-1.c    利用函数fact实现求x的n次方*/
    2. #include "stdio.h"
    3. void main( )
    4. { long int fact(long x,long n) ;       /*声明fact函数*/
    5. long int  x ;
    6. long int  n;
    7.   printf("please enter X and N(>=0): ");
    8. scanf("%ld,%ld", &x, &n );
    9.   printf("%ld,%ld=%ld",x,n,fact(x,n));  /*调用fact函数 */
    10. }
    11. long int fact(long int x, long int n)   /*定义fact函数求xn */
    12. { long int  i,s;                    /*求累积变量的初始化*/
    13.   if(n==0) return 0;  
    14. for(i=1; i<=n; i++)          /*用循环实现xn*/
    15. s=s*x;
    16. return(s);                   /*返回结果xn*/
    17. }

    (二) 下面程序的功能是:计算的值。

    例如:输入:5,3       输出:  

    编程提示:

    (1)定义求阶乘函数,在此基础上定义求组合数函数。

    (2)主函数调用求组合数函数,求组合数函数再三次调用求阶乘函数。

    1. /*   c9-2.c    利用函数组合数*/
    2. #include "stdio.h"
    3. long int jf (int  m,int  n) /*定义求阶乘函数jf*/
    4. { int  i,j;
    5. long int  t=1,u=1,r=1;
    6.   for(i=1; i<=m; i++)
    7.   t*=i;
    8. for(i=1; i<=n; i++)
    9. u*=i;
    10. for(i=1; i<=(m-n); i++)
    11. r*=i;
    12. j=(t/(u*r));
    13. return(j);
    14. }
    15. void main( )
    16. { int m,n,c;  
    17. printf("please enter m and n: ");
    18.   scanf("%d,%d", &m, &n );
    19. c=jf(m,n);
    20. printf("%d",c);         
    21. }

    (三)下面程序的功能是:读入一个整数m,计算如下公式的值:

    例如:若输入5,则应输出:“The result is 2.28333”。

    1. /*   c9-3.c    利用函数实现级数求和*/
    2. #include "stdio.h"
    3. void main()
    4. {
    5. double as(int a);
    6. float b,c;
    7. printf("请输入数值:");
    8. scanf("%f",&b);
    9. c=as(b);
    10. printf("%f",c);
    11. }
    12. double as(int a)
    13. {
    14. float b=1.0;
    15. int c;
    16. for(c=2;c<=a;c++)
    17. b=b+1.0/c;
    18. printf("%f",b);
    19. }

    (四)下面程序的功能是:输入一个十进制整数,输出其对应的二进制数。

    编程提示:

    在main函数中定义一个变量并为其赋值,然后调用函数fun将该十进制数转换为二进制。

    函数fun的形参即为被转换的整数,在for循环中每次求出m%k存放到数组aa中,同时将m/k的整数商赋给m继续判断,直止m的值为0。最后按反序输出数组aa的元素。

    1. /*   c9-4.c    通过函数调用实现数制转换*/
    2. #include "stdio.h"
    3. void main()
    4. {
    5. int as(int a);
    6. int b;
    7. printf("请输入数值:");
    8. scanf("%d",&b);
    9. printf("%d ",as(b));
    10. }
    11. int as(int a)
    12. {
    13. int b,c=2,aa[30];
    14. for(b=0;a;b++)
    15. {
    16. aa[b]=a%c;
    17. a=a/c;
    18. }
    19. b--;
    20. for(;b;b--)
    21. {
    22. printf("%d ",aa[b]);
    23. }
    24. return 0;
    25. }

    如果将十进制数转换为八进制数,应对程序的哪个语句进行修改?怎样修改?

    四、实验注意事项

    (一)定义函数时,函数名后的圆括号后面不能加“;”。

    (二)在函数体内,不能再对形参进行定义和说明。

    (三)变量作实参时,只使用变量名,实参变量对形参变量的数据传递是“值传递”。

    (四)一维数组作函数的实参时,只使用数组名如:fun(a); 。

  • 相关阅读:
    RT1176 LPSPI驱动移植到RT-THREAD
    数据交易怎样实现
    大气化学在线耦合模式WRF/Chem
    unity 库
    初识《时间复杂度和空间复杂度》
    Java 获取本地ip网卡信息
    《国际服务贸易》期末复习题 及答案参考
    C++中的语法知识虚继承和虚基类
    图像增强及运算篇之图像掩膜直方图和HS直方图
    自动代码Copilot背后的模型
  • 原文地址:https://blog.csdn.net/qq_64314976/article/details/126106735