c语言程序与设计实验五函数,c语言程序设计实验五函数与编译预处理.doc

44cb7578e1df5412b94317daaa3307ba.gifc语言程序设计实验五函数与编译预处理.doc

下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。

2.下载的文档,不会出现我们的网址水印。

3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。

文档包含非法信息?点此举报后获取现金奖励!

下载文档到电脑,查找使用更方便

14.9

积分

还剩页未读,继续阅读

关 键 词:c语言程序设计实验五 函数与编译预处理

C语言实验五

函数与编译预处理

C 语言程序设计

实验五 函数与编译预处理

C语言实验编译预处理

c语言程序设计实验五函数与编译预处理

C语言程序设计实验

资源描述:

实验五 函数与编译预处理

1、 任务名称:通过调试该程序,熟悉函数的调用方法及单步跟踪键F7和F8的不同。

源代码:

#include void main()

{ void fun(int i, int j, int k);

int x,y,z;

x=y=z=6;

fun(x,y,z);

printf("x=%d;y=%d;z=%d\n",x,y,z);

}

void fun(int i, int j, int k)

{ int t;

t=(i+j+k)*2;

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

}

运行结果:

2、 任务名称:

源代码:

#include void main()

{ int x=10,y=20;

void swap (int ,int);

printf("(1)in main :x=%d,y=%d\n",x,y);

swap(x,y);

printf("(4)in main :x=%d,y=%d\n",x,y);

}

void swap (int m,int n)

{ int temp;

printf("(2)in main :m=%d,n=%d\n",m,n);

temp=m;m=n;n=temp;

printf("(3)in main :m=%d,n=%d\n",m,n);

}

运行结果:

源代码:

#include void main()

{ int x=10,y=20;

void swap (int ,int);

printf("(1)in main :x=%d,y=%d\n",x,y);

swap(x,y);

printf("(4)in main :x=%d,y=%d\n",x,y);

}

void swap (int x,int y)

{ int temp;

printf("(2)in main :x=%d,y=%d\n",x,y);

temp=x;x=y;y=temp;

printf("(3)in main :x=%d,y=%d\n",x,y);

}

运行结果:

运行结果分析:形参具有“用之则建,用完则撤”的特点。在函数定义时,函数名后面圆括号内的参数称为形参;在函数调用时,函数名后面圆括号内的参数称为实参。对于实参,在调用函数中对其进行定义时,不仅指明它的类型,而且系统还为其分配存储单元。而对于形参,定义时仅仅只是指明它的类型,并不在内存中为它们分配存储单元,只是在调用时才为其分配临时存储单元,函数执行结束,返回调用函数时,该存储单元立即撤销。

3、 任务名称:实现求素数

源代码:

#include #include void main()

{ int m;

void prime(int ) ; /* 申明求素数函数 */

printf("Please input a data m=:");

scanf("%d",&m);

prime(m); /* 调用求素数函数 */

printf("\n");

}

void prime(int n)

{ int i,k;

k=sqrt(n);

for(i=2;i<=k;i++)

if (n%i==0) break;

if(i>=k+1)

printf("This is a prime number");

else printf("This isn't a prime number");

}

运行结果:

4、 任务名称:从键盘上输入的若干个数并求出最大值。

源代码:

#include void main( )

{ int i;

int s[10],max;

int Findmax(int x[] ,int n );

printf("Input 10 number : \n");

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

scanf("%d",&s[i]);

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

printf("%4d",s[i]);

printf("\nthe max is %d\n ",Findmax(s,10));

}

int Findmax( int x[ ], int n )

{ int max,i;

max=x[0];

for ( i=1; ivoid main( )

{ int i , k;

void sort(int x[],int n);

float s[100], j ;

printf(" Input number : \n");

for (i=0; scanf("%f",&j); i++)

s[i]=j;

sort(s, i);

for (k=0; kvoid main( )

{ float fac(int n);

int n,m;

float C;

printf("输出两个整数:");

scanf("%d,%d",&n,&m);

if(m>n)

{C=fac(m)/(fac(n)*fac((m-n)));

printf("C=%f",C);}

else

printf("数据错误");

printf("\n");

}

float fac(int n)

{float f;

if(n<0)

{

printf("n<0,错误");

}

else

if (n==0||n==1)

f=1;

else

f=fac(n-1)*n;

return(f);

}

运行结果:

7、 任务名称:说明下面程序的功能。

源代码:

#include void main( )

{ int m, k;

void dtoo( int n ,int r );

printf("Pleae input the decimal number:");

scanf("%d",&m);

printf( "\nPlease input a number in (2,8,16):");

scanf("%d",&k);

dtoo(m,k);

printf("\n");

}

void dtoo( int n ,int r )

{ if(n>=r) dtoo(n/r,r);

printf("%d",n%r);

}

运行结果:

运行结果分析:此程序是输出较小值

8、 任务名称:上机验证

源代码:

# define LOW 10

# define HIGH 5

# define CHANGE 2

int i = LOW ;

#include void main( )

{ int workover ( int i ) , reset ( int i );

int i = HIGH ;

reset ( i / 2) ;

printf(" i = %d \n ", i );

reset ( i = i / 2) ;

printf(" i = %d \n ", i );

reset ( i / 2) ;

printf(" i = %d \n ", i );

workover ( i );

printf(" i = %d \n ", i );

}

int workover ( int i )

{ i = ( i % i ) * (( i * i ) / ( 2 * i ) + 4) ;

printf(" i = %d \n ", i );

return ( i );

}

int reset ( int i )

{ i = i <= CHANGE ? HIGH : LOW ;

return ( i );

}

运行结果:

运行结果分析:“变量用之不尽,一写就走”。在main()主函数中reset(i/2)和reset(i=i/2)不同,第一个reset的i没有被赋值到,所以该函数调用结束后还保持原来的值;而第二个reset的i被赋值了,所以函数调用结束后以前的值就没有。全局变量:在所函数外面定义的变量,其有效范围到整个源程序结尾;局部变量:在函数内部定义的变量或在函数头部定义的形参,其有效范围只在所定义的函数,局部变量具有“用之则建,用完则撤”的特点。在不同函数内定义的变量同名互不干扰。如果一个源程序中的局部变量和全局变量同名,则局部变量优先。

9、任务名称:观察静态局部变量在调用过程中的变化。

源代码:#include void main( )

{int i ;

int f(int);

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

printf( "(%d):% d\n", i,f(i));

printf(" \n");

}

int f ( int n)

{static int j = 1;

j = j * n;

return( j );

}

运行结果:

运行结果分析:静态局部变量。如果希望在函数调用结束后仍然保留函数中定义的局部变量的值,则可以将该局部变量定义为静态局部变量(或称局部静态变量)。静态局部变量具有这样一些特点:①全局寿命:静态局部变量的数据存储在静态存储区的存储单元中,在函数调用结束后,它的值并不消失,直到整个应用程序执行结束,它的存储空间才被收回去。②局部可见性:其作用域只在定义它的函数内部,尽管它的值在函数调用结束后并不消失,但其他函数仍然不能访问它,在进入到它所在的函数内,它的值才可见。③初始化的特点:若在定义该局部变量时有赋初值的,则赋初值只在编译过程中进行,只赋值一次;若没有赋初值,则默认的初值为0(数值型)或空字符(字符型)。

10、 任务名称:在程序运行前宏NUM的值

源代码:#include "stdio.h"

#define N 2

#define M N+1

#define NUM (M+1)*M/2

main()

{ int i,n=0;

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

{ n++ ; printf ("%d\n",n); }

printf("\n");

}

运行结果:

11、 任务名称:上机验证

源代码:#define POWER(x) ((x)*(x))

#define MAX(x,y) (x)>(y)?(x):(y)

#define PR printf

#include void main()

{ int a,b,c,d,x;

a=5;b=10;x=200;

c=POWER(a+b);

x=x/POWER(a+b);

d=MAX(a+6,b);

PR( " c=%d,d=%d,x=%d \n", c,d,x);

}

运行结果:

12、任务名称:.编写:输入10个学生的3门课的成绩,分别用函数求:

(1) 每个学生的平均分。

(2) 每门课的平均分。

(3) 按学生平均分降序排列输出学生信息。

(4) 统计不及格学生,输出其相应信息。

(5) 编写一菜单主函数,菜单内容包括以上4部分。

源代码:

展开阅读全文

温馨提示:

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。

2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。

3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。

4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。

5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。

6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。

7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

bb6249c6567dd4384e6ab3556cfc22ed.gif 

人人文库网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。

关于本文

本文标题:c语言程序设计实验五函数与编译预处理.doc

链接地址:https://www.renrendoc.com/p-16043962.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值