应科院c语言实验函数及应用Word格式文档下载.docx
《应科院c语言实验函数及应用Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《应科院c语言实验函数及应用Word格式文档下载.docx(12页珍藏版)》请在冰豆网上搜索。
,g,i,j);
x=%d;
y=%d\n"
x,y);
}
voidfun(inti,intj)
intx,y,g;
g=8;
x=7;
y=2;
x=8,y=6;
运行结果:
结果分析:
具有相同名字局部变量在不同函数中的值互不影响。
2、分析下面程序的运行结果,为什么出现这种结果?
掌握全局变量与局部变量的区别。
源程序:
inta=3,b=5;
max(inta,intb)
{intc;
c=a>
b?
a:
b;
return(c);
}
main()
{inta=8;
max=%d\n"
max(a,b));
b=%d\n"
b);
文件中如果有相同名字的全局变量与局部变量,那么函数执行时是先执行局部变量,如果没有局部变量那么就执行全局变量。
3、分析下面程序的运行结果,为什么出现这种结果?
掌握使用static定义局部变量与使用auto(可省略)定义局部变量的区别
voidincx(void);
voidincy(void);
incx();
incy();
voidincx(void)
intx=0;
x=%d\t"
++x);
voidincy(void)
staticinty=0;
\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;
%g+%g=%g\n"
x,y,z);
sub.c文件:
voidsub(floatx,floaty)
z=x-y;
%g-%g=%g\n"
mul.c文件:
voidmul(floatx,floaty)
z=x*y;
%g*%g=%g\n"
div.c文件:
voiddiv(floatx,floaty)
z=x/y;
%g/%g=%g\n"
test.c文件:
#include<
externvoidadd(floatx,floaty);
externvoiddiv(floatx,floaty);
externvoidsub(floatx,floaty);
externvoidmul(floatx,floaty);
voidmain()
floata,b;
charc,h;
do
{
printf("
请输入要计算的表达式:
);
scanf("
%f%c%f"
&
a,&
c,&
b);
getchar();
switch(c)
{
case'
+'
:
add(a,b);
break;
-'
sub(a,b);
*'
mul(a,b);
/'
div(a,b);
default:
;
}
继续计算吗?
<
yes>
输入y继续,其它字符退出"
%c"
h);
}while(h=='
y'
||h=='
Y'
运行结果:
5.定义一个带参的宏,使两个参数的值互换,并写出程序,输入两个数作为使用宏时的实参。
输出已交换后的两个值。
intc=0;
#defineCHANGE(a,b)c=a,a=b,b=c;
intmain()
intn1=0,n2=0;
scanf("
%d%d"
n1,&
n2);
运行请前n1=%dn2=%d\n"
n1,n2);
CHANGE(n1,n2);
运行请后n1=%dn2=%d\n"
return0;
6、输入两个整数,并使其从大到小输出,用指针变量实现数的比较。
(读懂下面程序)
(1)源程序:
voidmain()
int*p1,*p2,*p,a,b;
%d,%d"
p1=&
a;
p2=&
if(a<
b)
{
p=p1;
p1=p2;
p2=p;
}
a=%d,b=%d\n"
a,b);
max=%d,min=%d\n"
*p1,*p2);
调换指针地址并不改变变量本身的值。
7.(综合设计题)
写3个函数:
①输个职工的姓名和职工号;
②按职工号由小到大顺序排序,姓名顺序也随之调整;
③要求输入一个职工号,找出该职工的姓名
从主函数输入要查找的职工号,输出该职工姓名。
string.h>
#defineN10
voidinput(int[],charname[][8]);
voidsort(int[],charname[][8]);
voidsearch(int,int[],charname[][8]);
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);
continueotnot(Y/N)?
getchar();
c=getchar();
if(c=='
N'
||c=='
n'
)flag=0;
}
voidinput(intnum[],charname[N][8])
inti;
for(i=0;
i<
N;
i++)
inputNO.:
"
num[i]);
inputname:
gets(name[i]);
voidsort(intnum[],charname[N][8])
inti,j,min,templ;
chartemp2[8];
N-1;
min=i;
for(j=i;
j<
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);
\nresult:
\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((n<
num[0])||(n>
num[N-1]))
loca=-1;
while((sign==1)&
&
(top<
=bott))
mid=(bott+top)/2;
if(n==num[mid])
loca=mid;
NO.%d,Hisnameis%s.\n"
n,name[loca]);
sign=-1;
elseif(n<
num[mid])
bott=mid-1;
elsetop=mid+1;
if(sign==1||loca==-1)
%dnotbeenfound.\n"
n);