应科院c语言实验函数及应用.docx

上传人:b****5 文档编号:6867425 上传时间:2023-01-11 格式:DOCX 页数:12 大小:226.71KB
下载 相关 举报
应科院c语言实验函数及应用.docx_第1页
第1页 / 共12页
应科院c语言实验函数及应用.docx_第2页
第2页 / 共12页
应科院c语言实验函数及应用.docx_第3页
第3页 / 共12页
应科院c语言实验函数及应用.docx_第4页
第4页 / 共12页
应科院c语言实验函数及应用.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

应科院c语言实验函数及应用.docx

《应科院c语言实验函数及应用.docx》由会员分享,可在线阅读,更多相关《应科院c语言实验函数及应用.docx(12页珍藏版)》请在冰豆网上搜索。

应科院c语言实验函数及应用.docx

应科院c语言实验函数及应用

实验8函数及应用

(将本文件重命名为学号最后3位+实验11+姓名)

【实验目的】

1、掌握函数的定义方法;

2、掌握函数的调用及函数声明;

3、掌握函数实参与形参的对应关系及“值传递”的方式;

4、掌握函数的嵌套

调用和递归调用方法;

【实验内容】

1、分析下面程序的运行结果,为什么出现这种结果?

(务必弄清楚,不懂须问)

目的:

掌握具有相同名字局部变量在不同函数中的特点

源程序

#include

voidfun(inti,intj);

voidmain()

{

inti,j,x,y,n,g;

i=2,j=3,g=x=5,y=9,n=7;

fun(n,6);

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

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

fun(n,6);

}

voidfun(inti,intj)

{

intx,y,g;

g=8;x=7;y=2;

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

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

x=8,y=6;

}

运行结果:

结果分析:

具有相同名字局部变量在不同函数中的值互不影响。

2、分析下面程序的运行结果,为什么出现这种结果?

目的:

掌握全局变量与局部变量的区别。

源程序:

#include

inta=3,b=5;

max(inta,intb)

{intc;

c=a>b?

a:

b;

return(c);

}

main()

{inta=8;

printf("max=%d\n",max(a,b));

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

}

运行结果:

结果分析:

文件中如果有相同名字的全局变量与局部变量,那么函数执行时是先执行局部变量,如果没有局部变量那么就执行全局变量。

3、分析下面程序的运行结果,为什么出现这种结果?

目的:

掌握使用static定义局部变量与使用auto(可省略)定义局部变量的区别

源程序:

#include

voidincx(void);

voidincy(void);

voidmain()

{

incx();

incy();

incx();

incy();

incx();

incy();

}

voidincx(void)

{

intx=0;

printf("x=%d\t",++x);

}

voidincy(void)

{

staticinty=0;

printf("\ny=%d\n",++y);

}

运行结果:

结果分析:

使用static定义局部变量时,程序运行后会储存变量的值,而使用auto(可省略)定义局部变量时,程序运行后变量的值自动释放,不会储存变量的值。

4、实现两个数的加、减、乘、除运算,共4个函数,每个函数分别存储在1个独立的源文件中。

目的:

掌握外部函数的调用

(1)利用Vc++,建立一个工程

(2)新建文件add.c,

在文件中定义加法函数floatadd(floatn1,floatn2);

并保存

(3)新建文件sub.c

在文件中定义减法函数floatsub(floatn1,floatn2);

并保存

(4)新建文件mul.c

在文件中定义乘法函数floatmul(floatn1,floatn2);

并保存

(5)新建文件div.c

在文件中定义除法函数floatdiv(floatn1,floatn2);

并保存

(6)新建文件test.c

在该文件中,编写主函数,并在主函数中调用函数add、sub、mul、div

注意在主函数中,声明函数add、sub、mul、div为外部函数,方法如下:

externfloatadd(floatn1,floatn2);

externfloatsub(floatn1,floatn2);

externfloatmul(floatn1,floatn2);

externfloatdiv(floatn1,floatn2);

代码:

add.c文件:

voidadd(floatx,floaty)

{

floatz;

z=x+y;

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

}

sub.c文件:

voidsub(floatx,floaty)

{

floatz;

z=x-y;

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

}

mul.c文件:

voidmul(floatx,floaty)

{

floatz;

z=x*y;

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

}

div.c文件:

voiddiv(floatx,floaty)

{

floatz;

z=x/y;

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

}

test.c文件:

#include

externvoidadd(floatx,floaty);

externvoiddiv(floatx,floaty);

externvoidsub(floatx,floaty);

externvoidmul(floatx,floaty);

voidmain()

{

floata,b;

charc,h;

do

{

printf("请输入要计算的表达式:

\n");

scanf("%f%c%f",&a,&c,&b);

getchar();

switch(c)

{

case'+':

add(a,b);break;

case'-':

sub(a,b);break;

case'*':

mul(a,b);break;

case'/':

div(a,b);break;

default:

;

}

printf("继续计算吗?

,输入y继续,其它字符退出");

scanf("%c",&h);

}while(h=='y'||h=='Y');

}

运行结果:

5.定义一个带参的宏,使两个参数的值互换,并写出程序,输入两个数作为使用宏时的实参。

输出已交换后的两个值。

代码:

#include

intc=0;

#defineCHANGE(a,b)c=a,a=b,b=c;

intmain()

{

intn1=0,n2=0;

scanf("%d%d",&n1,&n2);

printf("运行请前n1=%dn2=%d\n",n1,n2);

CHANGE(n1,n2);

printf("运行请后n1=%dn2=%d\n",n1,n2);

return0;

}

运行结果:

6、输入两个整数,并使其从大到小输出,用指针变量实现数的比较。

(读懂下面程序)

(1)源程序:

#include

voidmain()

{

int*p1,*p2,*p,a,b;

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

p1=&a;p2=&b;

if(a

{

p=p1;p1=p2;p2=p;

}

printf("a=%d,b=%d\n",a,b);

printf("max=%d,min=%d\n",*p1,*p2);

}

运行结果:

结果分析:

调换指针地址并不改变变量本身的值。

 

7.(综合设计题)

写3个函数:

①输个职工的姓名和职工号;

②按职工号由小到大顺序排序,姓名顺序也随之调整;

③要求输入一个职工号,找出该职工的姓名

从主函数输入要查找的职工号,输出该职工姓名。

代码:

#include

#include

#defineN10

voidinput(int[],charname[][8]);

voidsort(int[],charname[][8]);

voidsearch(int,int[],charname[][8]);

intmain()

{

intnum[N],number,flag=1,c;

charname[N][8];

input(num,name);

sort(num,name);

while(flag==1)

{

printf("\ninputnumbertolookfor:

");

scanf("%d",&number);

search(number,num,name);

printf("continueotnot(Y/N)?

");

getchar();

c=getchar();

if(c=='N'||c=='n')flag=0;

}

return0;

}

voidinput(intnum[],charname[N][8])

{

inti;

for(i=0;i

{

printf("inputNO.:

");

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

printf("inputname:

");

getchar();

gets(name[i]);

}

}

voidsort(intnum[],charname[N][8])

{

inti,j,min,templ;

chartemp2[8];

for(i=0;i

{

min=i;

for(j=i;j

if(num[min]>num[j])min=j;

templ=num[i];

strcpy(temp2,name[i]);

num[i]=num[min];

strcpy(name[i],name[min]);

num[min]=templ;

strcpy(name[min],temp2);

}

printf("\nresult:

\n");

for(i=0;i

printf("\n%5d%10s",num[i],name[i]);

}

voidsearch(intn,intnum[],charname[N][8])

{

inttop,bott,mid,loca,sign;

top=0;

bott=N-1;

loca=0;

sign=1;

if((nnum[N-1]))

loca=-1;

while((sign==1)&&(top<=bott))

{

mid=(bott+top)/2;

if(n==num[mid])

{

loca=mid;

printf("NO.%d,Hisnameis%s.\n",n,name[loca]);

sign=-1;

}

elseif(n

bott=mid-1;

elsetop=mid+1;

}

if(sign==1||loca==-1)

printf("%dnotbeenfound.\n",n);

}

运行结果:

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1