C语言实验九 函数(一)

简介: 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); 。

目录
相关文章
|
17天前
|
程序员 C语言
C语言库函数 — 内存函数(含模拟实现内存函数)
C语言库函数 — 内存函数(含模拟实现内存函数)
28 0
|
3天前
|
C语言
C语言:内存函数(memcpy memmove memset memcmp使用)
C语言:内存函数(memcpy memmove memset memcmp使用)
|
1天前
|
C语言
【C语言】字符分类函数与字符转换函数
【C语言】字符分类函数与字符转换函数
7 1
|
1天前
|
程序员 编译器 C语言
C语言之函数与参数
C语言之函数与参数
5 0
|
3天前
|
C语言
C语言:字符函数和字符串函数(strlen strcat strcmp strncmp等函数和模拟实现)
C语言:字符函数和字符串函数(strlen strcat strcmp strncmp等函数和模拟实现)
|
4天前
|
存储 C语言
C语言函数的返回值
C语言函数的返回值
7 0
|
4天前
|
C语言 Windows
C语言中的fopen与fclose函数详解
C语言中的fopen与fclose函数详解
11 1
|
4天前
|
C语言
深入理解C语言中的printf函数及数据输出
深入理解C语言中的printf函数及数据输出
13 0
|
17天前
|
程序员 C语言 开发者
C语言库函数 — 字符串函数(含模拟实现字符串函数)
C语言库函数 — 字符串函数(含模拟实现字符串函数)
36 0
|
24天前
|
存储 C语言
【我爱C语言】详解字符函数isdigit和字符串转换函数(atoi和snprintf实现互相转换字符串)&&三种strlen模拟实现1
【我爱C语言】详解字符函数isdigit和字符串转换函数(atoi和snprintf实现互相转换字符串)&&三种strlen模拟实现