c语言函数的定义与使用.docx
《c语言函数的定义与使用.docx》由会员分享,可在线阅读,更多相关《c语言函数的定义与使用.docx(10页珍藏版)》请在冰豆网上搜索。
c语言函数的定义与使用
实验报告
实验目的:
1.熟练掌握函数的定义与使用
实验内容:
1.有如下的一段程序,程序调用maxt()函数将两个数中的最大值输出,并根据最大值打印相应行的#号,请定义printat()函数、maxt()函数与printnx()函数并将主程序补充完整,使之正常运行。
#include
voidmain()
{
inta=3,b=4,max;
printat();//打印一行@号
printf("打印ab行的#号\n");
max=maxt(a,b);
printnx(max);//打印max行#号
}
1).无参无返回值函数
函数名
printat
函数返回值
无返回值
函数参数
无参数
函数功能
打印一行@号
2)有参无返回值函数
函数名
printnx
函数返回值
无返回值
函数参数
有一个参数,(形式参数),是整型
函数功能
打印n行#号
3).有参有返回值函数
函数名
maxt
函数返回值
有返回值,函数类型为整型
函数参数
有两个整型的参数
函数功能
返回a与b中的最大值
阅读知识:
.如何在主函数中使用用户自定义的函数
函数调用基础知识
用户自定义函数在main()函数中调用时的三种方式:
1.函数语句
把函数调用作为一个语句,适用无返回值的函数
printstar( );
2函数表达式
函数出现在一个表达式中,适用有返回值的函数
c=2*max(a,b);
3函数参数
函数调用作为一个函数的实参,适用有返回值的函数
m=max(a,max(b,c))
#include <stdio.h>
void main()
{
ﻩvoid printat();
voidprintnx(int n);
ﻩintmaxt(inta,int b);
int a=3,b=4,max;
printat();
printf("打印ab行的#号\n");
max=maxt(a,b);
printnx(max);
}
voidprintat()
{
printf("@@@@@@@@@\n");
}
voidprintnx(intn)
{
for(int i=1;i<=n;i++)
ﻩ{
ﻩprintf("#########\n");
}
}
intmaxt(inta,intb)
{
intz;
ﻩif(a>=b)
ﻩz=a;
else
ﻩz=b;
return(z);
}
2.有如下的一段程序,程序调用max3t()函数将三个数中的最大值输出,请定义max3t并将主程序补充完整,使之正常运行。
#include<stdio.h>
voidmain()
{
inta=3,b=4,c=8,max;
max=max3t(a,b,c);
printf("三个数中的最大值是%d",max);
}
函数名
max3t
函数返回值
有一个返回值,int型
函数参数
有三个整型的参数,
函数功能
返回三个数中的最大值
#include
voidmain()
{
intmax3t(intx,inty,int z);
inta=3,b=4,c=8,max;
max=max3t(a,b,c);
printf("三个数中的最大值是%d",max);
}
int max3t(intx,int y,intz)
{
intk;
if(x>=y&&x>=z)
k=x;
elseif(y>=x&&y>=z)
k=y;
else
ﻩk=z;
ﻩreturn(k);
}
3.有如下的一段程序,程序调用g()函数进行累加求和,请定义g()函数并将主程序补充完整,使之正常运行。
#include
voidmain()
{
printf("请输入你想求从到多少的和\n");
scanf("%d",&n);
sum=g(n);//如输入,则g(5)输出+2+3+4+5的和
printf("从到%d的和为%d",n,sum);
}
函数名
g
函数返回值
有一个返回值,int型
函数参数
+2+3+4+5+。
。
。
g的和
#include
voidmain()
{
ﻩintg(int x);
ﻩintn,sum;
printf("请输入你想求从到多少的和\n");
scanf("%d",&n);
sum=g(n); //如输入,则g(5)输出+2+3+4+5的和
printf("从到%d的和为%d",n,sum);
}
intg(int x)
{
intsum2=0;
for(inti=0;i<=x;i++)
{
ﻩsum2=sum2+i;
ﻩ}
return(sum2);
}
4.有如下的一段程序,程序调用isryear( )函数进行是否闰年判断,请定义isryear( )函数并将主程序补充完整,使之正常运行。
#include<stdio.h>
voidmain()
{
intyear;
printf("请输入你要判断的年份:
");
scanf("%d",&year);
if(isryear(year)==1)
printf("\n%d是闰年",year);
else
printf("\n%d不是闰年",year);
}
判断是否是闰年的函数
函数名
isryear
函数返回值
有一个,int型
函数参数
判断是否为闰年
#include<stdio.h>
voidmain()
{
ﻩint isyear(intyear);
int year;
printf("请输入你要判断的年份:
");
scanf("%d",&year);
if(isyear(year)==1)
printf("\n%d是闰年",year);
else
printf("\n%d不是闰年",year);
}
intisyear(intyear)
{
inta;
ﻩif(year%4==0&&year%100!
=0||year%400==0)
ﻩﻩa=1;
ﻩelse
ﻩa=0;
ﻩreturn(a);
}
5.写一个判素数的isss()函数,在主函数输入一个整数,输出是否素数的信息
函数名
isss
函数返回值
有一个,int型
函数参数
一个
函数功能
判断一个数是否为素数
#include<stdio.h>
void main()
{
intisss(int x);
ﻩinta;
ﻩscanf("%d",&a);
if(isss(a)==1)
ﻩﻩprintf("这个数为素数");
else
ﻩprintf("这个数不是素数");
}
int isss(intx)
{
intk,n=0;
for(int i=2;i<=x;i++)
ﻩ{
ﻩif(x%i==0)
{
ﻩn=n+1;
ﻩﻩ}
}
ﻩif(n==1)
k=1;
ﻩelse
k=0;
ﻩreturn(k);
}
6.写一个交换两个变量值的函数
函数名
change
函数返回值
无返回值
函数参数
两个float类型的数
函数功能
交换两个数的值
然后在如下主函数中调用change函数,观察输出的结果,为什么?
voidmain()
{voidchange(floata,floatb);
intm=30,n=40;
change(m,n);
printf("交换数据后的值m=%d,n=%d",m,n);
}
不能交换
7.有如下的一段程序,程序调用sort()函数对数组进行排序,请定义sort()函数并将主程序补充完整,使之正常运行。
#includevoidmain()
{
intnum[6]={3,4,6,2,10,1};
ﻩsort(num,6);
printf("排序后的数组为:
");
ﻩfor(int i=0;i<=5;i++)
ﻩ printf("%d",num[i]);
}
编写一个函数,实现数组的排序
函数名
sort
函数返回值
无返回值
函数参数
数组
函数功能
对数组进行从小到大的排序
#include<stdio.h>
void main()
{voidsort(intnum[],intn);
int num[6]={3,4,6,2,10,1};
ﻩsort(num,6);
printf("排序后的数组为:
");
for(inti=0;i<=5;i++)
ﻩ printf("%d",num[i]);
}
voidsort(intnum[],intn)
{
ﻩinti,j,k,t;
for(i=0;i<=n-1;i++)
{
ﻩﻩk=i;
ﻩfor(j=i+1;j<n;j++)
ﻩﻩif(num[j]ﻩﻩﻩk=j;
ﻩt=num[k];num[k]=num[i];num[i]=t;
ﻩ}
}