程序设计基础之函数程序设计.docx
《程序设计基础之函数程序设计.docx》由会员分享,可在线阅读,更多相关《程序设计基础之函数程序设计.docx(10页珍藏版)》请在冰豆网上搜索。
![程序设计基础之函数程序设计.docx](https://file1.bdocx.com/fileroot1/2022-11/27/89e2acd4-d0a7-43e7-a5c8-ac6463fcc3b8/89e2acd4-d0a7-43e7-a5c8-ac6463fcc3b81.gif)
程序设计基础之函数程序设计
xxxxx计算机系
实验报告
(2012—2013学年第二学期)
课程名称程序设计基础
实验名称函数程序设计
专业数学及数学应用
年级12级班
实验目的与要求:
1.熟练掌握库函数的调用。
2.熟练掌握函数的定义和调用。
3.熟练掌握使用函数编写程序。
4.掌握函数的实参、形参和返回值的概念和使用。
实验设备(环境):
微机、C语言编程环境(VC++)
实验内容:
一、调试示例
改正下列程序中的错误。
统计100~999之间有多少个满足下列要求的整数:
其各位数字之和是5,并计算这些整数的和。
要求定义并调用函数is(number)判断number的各位数字之和是否为5。
源程序(有错误的程序)
#include
intis(intnumber);
intmain(void)
{
intcount,i,sum;
count=0;
sum=0;
for(i=100;i<=999;i++)
if(is(i)==1){
count++;
sum=sum+i;
}
printf("count=%d,sum=%d\n",count,sum);
return0;
}
intis(intnumber)
{
inta,b,c,result,sum;
a=number/100;
b=(number/10)%10;
c=number%10;
sum=a+b+c;
if(sum==5)
result=1;
else
result=0;
returnresult;//要有个返回值
}
运行结果
count=15,sum=3720
二、改错题
1、改正下列程序中的错误。
输入实数x和正整数n,计算xn,要求定义和调用mypower(x,n)函数计算xn。
源程序(有错误的程序)
#include
doublemypow(doublex,intn);///////////
intmain(void)
{
intn;
doubleresult,x;
printf("Enterx,n:
");
scanf("%lf%d",&x,&n);
result=mypow(x,n);
printf("result=%lf",result);///////////
return0;
}
doublemypow(doublex,intn);///////////
{
inti;
doubleresult;
result=1;
for(i=1;i<=n;i++)
result=result*x;/////////////////
returnresult;
}
输入输出示例
Enterx,n:
3.23
result=32.768000
2、改正下列程序中的错误。
求1!
+2!
+…+10!
,要求定义并调用函数fact(n)计算n!
,函数类型是double。
源程序(有错误的程序)
#include
doublefact(intn);////////////////
intmain(void)
{
inti;
doublesum;
for(i=1;i<=10;i++)////////////////
sum=sum+fact(i);
printf("1!
+2!
+…+10!
=%f\n",sum);
return0;
}
doublefact(intn);/////////
{
inti;
doubleresult;
for(i=1;i<=n;i++)
fact(n)=fact(i-1)*i;
}
输入输出示例
1!
+2!
+…+10!
=4037913.000000
三、编程题
(1)输入一个正整数n,生成一张3的乘方表,输出30~3n的值,可调用幂函数计算3的乘方。
输入输出示例
Entern:
3
pow(3,0)=1
pow(3,1)=3
pow(3,2)=9
pow(3,3)=27
#include
intpow(intn);
intmain()
{
intn,result;
printf("Entern:
");
scanf("%d",&n);
if(n<0){
printf("请输入大于0的整数");
}else{
for(inti=0;i<=n;i++){
result=pow(i);
printf("pow(3,%d)=%d\n",i,result);
}
}
return0;
}
intpow(intn)
{
inti;
intresult=1;
if(n==0){
}else{
for(i=1;i<=n;i++)
result=result*3;
}
returnresult;
}
(2)输入x,计算并输出下列分段函数sign(x)的值。
要求定义和调用函数sign(x)实现该分段函数。
输入输出示例
Enterx:
10
sign(10)=1
#include
intsign(intn);
voidmain()
{
intn,m;
printf("Enterx:
");
scanf("%d",&n);
m=sign(n);
printf("sign(%d)=%d\n",n,m);
}
intsign(intn)
{
intresult;
if(n<0){
result=-1;
}else
if(n==0){
result=0;
}else
if(n>0){
result=1;
}
returnresult;
}
实验步骤、实验结果及分析:
一、调试示例
(1)编译后共有error(s),warning(s),双击第一错误
错误信息:
错误原因:
改正方法:
改正上述错误后,再次编译共有error(s),warning(s),双击第一错误
错误信息:
错误原因:
改正方法:
(2)运行程序,运行结果是否有错。
若有错,则存在逻辑错误,请修改
错误行:
改正方法:
实验总结(包括过程总结、心得体会及实验改进意见等):
指导教师评语:
成绩评定
教师签字
年月日
备注:
注:
1、报告内的项目或设置,可根据实际情况加以补充和调整
2、教师批改学生实验报告应在学生提交实验报告10日内